山西
400-650-7353
首页 > 计算机二级 > 【备考】常见C++笔试题目整理(含答案)

【备考】常见C++笔试题目整理(含答案)

2018-08-16 17:05:14 来源:互联网 荐:IT资料豪华升级版,点击加群领取

1.下面代码有什么问题?

Void test3(char* str1)

{

char string[10];

if(strlen(str1)<=10)

{

strcpy(string, str1);

}

}

==数组越界

==strcpy拷贝的结束标志是查找字符串中的\0 因此如果字符串中没有遇到\0的话 会一直复制,直到遇到\0,上面的123都因此产生越界的情况

建议使用 strncpy 和 memcpy

————————————————————————–

2.下面代码有什么问题?

#define MAX_SRM 256

DSN get_SRM_no()

{

static int SRM_no; //是不是这里没赋初值?

int I;

for(I=0;I<max_srm;i++,srm_no++)< p="">

{

SRM_no %= MAX_SRM;

if(MY_SRM.state==IDLE)

{

break;

}

}

if(I>=MAX_SRM)

return (NULL_SRM);

else

return SRM_no;

}

系统会初始化static int变量为0,但该值会一直保存,所谓的不可重入…

————————————————————————–

3.写出运行结果:

{// test1

char str[] = “world”; cout << sizeof(str) << “: “;

char *p = str; cout << sizeof(p) << “: “;

char i = 10; cout << sizeof(i) << “: “;

void *pp = malloc(10); cout << sizeof(p) << endl;

}

6:4:1:4

————————————————————————–

4.写出运行结果:

{// test2

V {

struct X {

unsigned char s1:2;

unsigned char s2:3;

unsigned char s3:3;

} x;

unsigned char c;

} v;

v.c = 100;

printf(“%d”, v.x.s3);

}

3

————————————————————————–

5.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数

A1:

16位的系统下,

int i = 65536;

cout << i; // 输出0;

int i = 65535;

cout << i; // 输出-1;

32位的系统下,

int i = 65536;

cout << i; // 输出65536;

int i = 65535;

cout << i; // 输出65535;

A2:

int a = ~0;

if( a>65536 )

{

cout<<”32 bit”<<endl;< p="">

}

else

{

cout<<”16 bit”<<endl;< p="">

}

————————————————————————–

6.C和C++有什么不同?

从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是,

c++编写面向对象的程序比c容易

从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的; llinux核心大部分是c写的,因为它是系统软件,效率要求极高。

从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比

c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++

C语言是结构化编程语言,C++是面向对象编程语言。

C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。

————————————————————————–

7.在不用第三方参数的情况下,交换两个参数的值

#include

void main()

{

int i=60;

int j=50;

i=i+j;

j=i-j;

i=i-j;

printf(“i=%d\n”,i);

printf(“j=%d\n”,j);

}

方法二:

i^=j;

j^=i;

i^=j;

方法三:

// 用加减实现,而且不会溢出

a = a+b-(b=a)

————————————————————————–

8.有关位域的面试题(为什么输出的是一个奇怪的字符)

a.t = ‘b’;效果相当于 a.t= ‘b’ & 0xf;

‘b’ –> 01100010

‘b’ & 0xf –>>00000010

所以输出Ascii码为2的特殊字符

char t:4;就是4bit的字符变量,同样

unsigned short i:8;就是8bit的无符号短整形变量

————————————————————————–

9.int i=10, j=10, k=3; k*=i+j; k最后的值是?

60

————————————————————————–

10.进程间通信的方式有?

进程间通信的方式有 共享内存, 管道 ,Socket ,消息队列 , DDE等

编辑推荐IT学习交流群:点击加群 571960479

加群备注:网站(限时赠送500G海量IT学习资料)

关注微信:山西优就业(ID:ujiuyesx)

回复:简历模板,即可领取

【各类行业的简历模板】

回复:安装包的名称,例:AI,即可领取

AI、DW、PS、AX、C4D等破解版软件

【小U将毕生绝学传授于你,打倒HR,轻松搞定CEO】

相关推荐:暑期IT镀金之行

【备考】C++考试技巧:我的C++技巧总结

更多分享交流,礼品领取,海量干货,请扫描下方内部资料领取二维码,一不小心就爱上IT,成为了大佬!

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

热门标签: C++ 笔试题目

猜你喜欢

推荐阅读