热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C/C++笔试题(7)

1#include“filename.h”和#include<filename.h>的区别?答:#include“filename.h”表明该文件是用户提
 

1  #include “filename.h”#include 的区别?

答:#include “filename.h”表明该文件是用户提供的头文件,查找该文件时从当前文件

目录开始;#include 表明这个文件是一个工程或标准头文件,查找过程会检

查预定义的目录。

 

2  头文件的作用是什么?

答:一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只

要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功

能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。

二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的

声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担

3  C++函数中值的传递方式有哪几种?

答:C++函数的三种传递方式为:值传递、指针传递和引用传递。

 

4  内存的分配方式的分配方式有几种?

答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的

整个运行期间都存在。例如全局变量。

二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执

行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高

,但是分配的内存容量有限。

三、从堆上分配,亦称动态内存分配。程序在运行的时候用mallocnew申请任意多少的内存,程序员自己负责在何时用freedelete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

 

交换两个数,不用第三块儿内存!请问怎么实现?

 

现有12个小球,其中只有1个球与其它的球重量不同(即有11个球重量全相同),并且不知道这

个跟其它球重量不同的球是重还是轻(跟其他11个重量相同的球相比而言),那么从这12个球

中找出这个跟其它球重量不同的球.

 

北电

昨天笔试共5道题目:
1.
英译汉 ,关于ITUCCITT
2.
汉译英,关于VMware
3.
两个有序数组的合并,写一个完整的程序
4.
填空题,排序二叉树节点的删除,5个空
5.
调试题,多线程文件的读写,编译没有错误,请找出至少三个bug.

8.内联函数在编译时是否做参数类型检查?

1,程序设计(可以用自然语言来描述,不编程):C/C++源代码中,检查花括弧(是""
"
""{""}")是否匹配,若不匹配,则输出不匹配花括弧所在的行与列。


2
,巧排数字,将1,2,...,19,2020个数字排成一排,使得相邻的两个数字之和为一个素数,且
首尾两数字之和也为一个素数。编程打印出所有的排法。


3
,打印一个N*N的方阵,N为每边字符的个数( 3N20 ),要求最外层为"X",第二层为"Y",从第三层起每层依次打印数字0123...
例子:当N =5,打印出下面的图形:

 X X X X X
 X Y Y Y X
 X Y 0 Y X
 X Y Y Y X
 X X X X X 

 

普天C++笔试题

c++最后几个大题目是
1
,实现双向链表删除一个节点P,在节点P后插入一个节点,这两个函数。(北电 重复)
2
,写一个函数将其中的/t都转换成4个空格。
3
windows程序的入口是哪里?写出windows消息机制的流程。
4
,如何定义和实现一个类的成员函数为回调函数

虚函数也考了一题,不过不难。
class base{
public:
virtual void play(){
cout<<"base";
}
}
class son: public base{
public:
void play(){cout<<"son";}
}
void g(base & b){
b.play;
}

void main(){
son s;
g(s);
return;
}

我所收集的intel比试题&面试题:

(熟悉大公司的题目,并不仅仅是为了进这些公司,而是很多国内公司考察内容都很接近而已
.)
2005笔试

1
。高效的内存管理
2
8皇后问题


面试q
2 编译中的问题:全局变量如int i=5; int*(pf)()=foo; 分别在何时被初始化?设计时候如何具体的实现。
3 OS相关的问题,内存访问,cache等(包括cache在整个系统中的位置,画出来,并解释)
4 解释例如mov ax,100H 这样一条指令的cpu, os, memory等都完成了什么样的工作
5 Strlen()的C语言实现,不能使用任何变量。
6 编译中display的一些问题

7 一个hash函数,输入随机,现发生冲突,如数据集中在某几条中,问怎样处理hash函数保证高效的访问,怎样实现?
8 Switch()case…语句翻译成三元组。
9 一个byte(用C语言实现计数其中1的个数),给出最高效的实现方法。(位域)或者查表最快的;
10 上海有多少个加油站?你是怎样解决这一问题?
11 C语言参数的入栈顺序?为什么这么实现?
12 你的最大的优点和缺点分别是什么?
13 C语言中字符串的翻转,最高效率(时间和空间)的实现?

2004
1.
三个float:a,b,c 问值
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b


2.
把一个链表反向填空  (重复)

4. y1(n)=x(2n), y2(n)=x(n/2),
问:
如果y1为周期函数,那么x是否为周期函数
如果x为周期函数,那么y1是否为周期函数
如果y2为周期函数,那么x是否为周期函数
如果x为周期函数,那么y2是否为周期函数

4.
某个程序在一个嵌入式系统(200MCPU,50MSDRAM)中已经最化了,换到另一个系统
(300M
CPU,50MSDRAM)中运行,还需要优化吗?

5. x^4+a*x^3+x^2+c*x+d
最少需要作几次乘法

2.
填程序
把一个计算m^n的程序填充完整
大概的意思是:
有一个全局数组char s[BUFSIZE]
利用这个数组计算,就是每个单元存放计算结果的一位,index小的存放低位,index

的存放高位
3
。有两个线程
void producer()
{
while(1)
{
GeneratePacket();
PutPacketIntoBuffer();
Signal(customer);
}
}
void customer()
{
while(1)
{
WaitForSignal();
if(PacketInBuffer>10)
{
ReadAllPackets();
ProcessPackets();
}
}
}
1有没有其他方法可以提高程序的性能
2)可不可以不使用信号之类的机制来实现上述的功能
4
优化下面的程序
(0)sum=0
(1)I=1
(2)T1
4*I
(3)T2=address(A)-4
(4)T3=T2[T1]
(5)T4=address(B)-4
(6)T5=4*I
(7)T6=T4[T5]
(8)T7=T3*T5
(9)sum=sum+T6
(10)I=I+1
(10)IF I<20 GOTO (2)

2003
年的

1
:概率题。x,y为随机变量,联合概率密度 f(x,y) = intig(0,1)*dx*intig(0,x)*k*d
y
k为常数,求
k=? E(xy)=?
注:intig(a,b)ab的定积分。


2
:概率题。A,B为随机事件,以下哪个正确
A. P(A U B)*p(AB) <= P(A)P(B)
B. P(A U B)*p(AB) >= P(A)P(B)
C. P(A U B)*p(AB) <= P(A) + P(B)
D. P(A U B)*p(AB) >= P(A) + P(B)

3:
信道带宽200kHz,信噪比10dB,求信道波特率=?

4
:以下代码运行结果是什么

int main()
{
int a,b,c,abc = 0;
a=b=c=40;
if(c)
{
int abc;
abc = a*b+c;
}
printf("%d,%d", abc, c);
return 0;
}

5
:给出了从纽约出发和到达落山鸡的各种航班信息,写出找到一条从纽约到落山鸡的最
短距离的航班组合的代码。

6
:从计算机图形上截取某个物体边缘的若干个坐标,求这个物体面积,并跟判断是方形
还是圆形,为啥。(坐标不记得,大概是个圆)
2005年腾讯招聘
选择题(60) 
  c/c++ os linux 
方面的基础知识 cSizeof函数有好几个

程序填空
(40) 
1.(20) 4
x5 
  
不使用额外空间, A,B两链表的元素交叉归并
 
2.(20) 4
x5 
MFC  
将树序列化 转存在数组或 链表中!

 

1.请定义一个宏,比较两个数ab的大小,不能使用大于、小于、if语句

// 这样转向定义应该不算违规吧!

#include

using namespace std;

 

#define Cmp(x,y) compare(x,y)

 

int compare( int a, int b)

{

     a^=(1<<31); b^=(1<<31);

     int i=31;

    while ((i^-1) && !((a&(1<

     return (i^-1)?(((a>>i)&1)?1:-1):0;

}

 

int _tmain()

{

     int c;

     c = Cmp(5,4);

     cout<

     return 0;

}

(一叶落而知天下秋) 的答案:

#define   COMPARE(a,b)   ((a)-(b)) ? b:a

2.如何输出源文件的标题和目前执行行的行数

cout   <<  "Filename   "   <<  __FILE__   <<  "   Line   "   <<  __LINE__   <<  endl;

3.两个数相乘,小数点后位数没有限制,请写一个高精度算法

  算法提示:

          输入 string a, string b 计算string c=a*b; 返回 c;

1    纪录小数点在a,b中的位置l1,l2 则需要小数点后移动位置数为l=length(a)+length(b)-l1-l2-2;

2    去掉a,b中的小数点,(a,b小数点后移,使a,b变为整数)

3    计算c=a*b; (同整数的大数相乘算法)

4    输出c,(注意在输出倒数第l个数时,输出一个小数点。若是输出的数少于l个,就补0

du51(郁郁思扬)的答案:


变为整数求就行了.输入的时候记一下,小数点位置..输出再做点文章就行了.
下面的是大整数的运算
.
#include
using namespace std;
#define MAX 10000
struct Node{
   int data;
   Node *next;
};
void output(Node *head)
{
   if(!head->next&&!head->data)return;
   output(head->next);
   cout}
void Mul(char *a,char *b,int pos)        
{
   char *ap=a,*bp=b;
   Node *head=0;
   head=new Node;head->data=0,head->next=0;   //

   Node *p,*q=head,*p1;
   int temp=0,temp1,bbit;
   while(*bp)                //
若乘数不为空 ,继续.
   {
       p=q->next;p1=q;
       bbit=*bp-48;          //
把当前位转为整型

       while(*ap||temp)            //
若被乘数不空,继续
       {
           if(!p)            //
若要操作的结点为空,申请之
           {
               p=new Node;
               p->data=0;
               p->next=0;
               p1->next=p;
           }
           if(*ap==0)temp1=temp;
           else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }
           p1->data=temp1%10;    //
留当前位
           temp=temp1/10;    //
进位以int的形式留下.
           p1=p;p=p->next;                 //
被乘数到下一位

       }
       ap=a;bp++;q=q->next;                //q
进下一位
   }
   p=head;
   output(p);                   //
显示
   cout<   while(head)                 //
释放空间
   {
           p=head->next;
           delete head;
           head=p;
   }
}
int main()
{
   cout<<"
请输入两个数"<   char test1[MAX],test2[MAX];
   cin.getline(test1,MAX,'/n');
   cin.getline(test2,MAX,'/n');
   Mul(strrev(test1),strrev(test2));
   system("PAUSE");
   return 0;
}
上面大整数已经写了.你加几个东西就行了
.
#include
using namespace std;
#define MAX 10000
struct Node{
   int data;
   Node *next;
};
void output(Node *head,int pos)
{
   if(!head->next&&!head->data)return;
   output(head->next,pos-1);
   cout   if(!pos)cout<<".";
}
void Mul(char *a,char *b,int pos)        
{
   char *ap=a,*bp=b;
   Node *head=0;
   head=new Node;head->data=0,head->next=0;   //

   Node *p,*q=head,*p1;
   int temp=0,temp1,bbit;
   while(*bp)                //
若乘数不为空 ,继续.
   {
       p=q->next;p1=q;
       bbit=*bp-48;          //
把当前位转为整型

       while(*ap||temp)            //
若被乘数不空,继续
       {
           if(!p)            //
若要操作的结点为空,申请之
           {
               p=new Node;
               p->data=0;
               p->next=0;
               p1->next=p;
           }
           if(*ap==0)temp1=temp;
           else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }
           p1->data=temp1%10;    //
留当前位
           temp=temp1/10;    //
进位以int的形式留下.
           p1=p;p=p->next;                 //
被乘数到下一位

       }
       ap=a;bp++;q=q->next;                //q
进下一位
   }
   p=head;
   output(p,pos);                   //
显示
   cout<   while(head)                 //
释放空间
   {
           p=head->next;
           delete head;
           head=p;
   }
}
int main()
{
   cout<<"
请输入两个数"<   char test1[MAX],test2[MAX],*p;
   int pos=0;
   cin.getline(test1,MAX,'/n');
   cin.getline(test2,MAX,'/n');
   if(p=strchr(test1,'.'))
   {
       pos+=strlen(test1)-(p-test1)-1;
       do
       {
           p++;
           *(p-1)=*p;
       }while(*p);
   }       
   if(p=strchr(test2,'.'))
   {
       pos+=strlen(test2)-(p-test2)-1;
       do
       {
           p++;
           *(p-1)=*p;
       }while(*p);
   }   
   Mul(strrev(test1),strrev(test2),pos);
   system("PAUSE");
   return 0;
}

4.写一个病毒

cout<<"一个病毒"<

(开玩笑的,没搞过,^_^)

 

5.让你在100000000个浮点数中找出最大的10000个,要求时间复杂度优。

//本算法使用快排,O(n*lg(n)) 

//最低可以找到线性算法,使用预先区域统计划分!类试于构造Quad Trees! 写起来代码会长些!

 

#include

#include

 

#define Max 100000000

int a[Max+10];

 

int cmp( const void *a, const void *b)

{

     int *x = ( int *) a;

     int *y = ( int *) b;

     return *x-*y;

}

 

int main()

{

     int n=0;

     while (scanf("%d",&a[n])==1)     n++;

     qsort(a,n,4,cmp);

     for ( int i=0;i<3;i++)     printf("%d",a[ i ]);

     return 1;

}

5 、有 A B C D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1 2 5 10 分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在 17 分钟内这四个人都过桥?

Solution:关键是时间最长的两个人必须同时过桥

The First Time       A(1) B(2) 过桥, A(1) 返回 Cost 1+2
The Second Time
   C(5) D(10) 过桥, B(2) 返回 Cost
10+2
The Third Time     A(1)
B(2) 过桥 Cost
2

Total Time Cost
   (1+2)+(10+2)+2=17 minutes


推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
author-avatar
竹叶清2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有