文档详情

100条经典C语言笔试题目(全)

学***
实名认证
店铺
DOCX
20.85KB
约10页
文档ID:291080534
100条经典C语言笔试题目(全)_第1页
1/10

本文格式为Word版,下载可任意编辑100条经典C语言笔试题目(全) 100条经典C语言笔试题目 1、请填写 bool , float, 指针变量 与“零值”对比的 if 语句 提示:这里“零值”可以是 0, 0.0 , FALSE 或者“空指针” 例如 int 变量 n 与“零值” 对比的 if 语句为: if ( n == 0 ) if ( n != 0 ) 以此类推 (1)请写出 bool flag 与“零值”对比的 if 语句: 【标准答案】if ( flag ) if ( !flag ) (2)请写出 float x 与“零值”对比的 if 语句: 【标准答案】 const float EPSINON = 0.00001; if ((x >= - EPSINON) char *p = str ; int n = 10; 请计算 (1)sizeof (str ) = (2)sizeof ( p ) = (3)sizeof ( n ) = 【标准答案】(1)6、(2)4、(3)4 (4)void Func ( char str[100]) { …… ; } 请计算 sizeof( str ) = (5)void *p = malloc( 100 ); 请计算sizeof ( p ) = 【标准答案】(4)4、(5)4 3、 long a=0x801010; a+5=? 【标准答案】0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值 为8392720,再加上5就是8392725。

4、用变量a给出下面的定义 e) 一个有10个指针的数组,该指针是指向一个整型数的; f) 一个指向有10个整型数数组的指针 ; g) 一个指向函数的指针,该函数有一个整型参数并返 回一个整型数; h) 一个有10个指针的数组,该指针指向一个函数,该 函数有一个整型参数并返回一 个整型数; 【标准答案】e)int * a[10]; f)int (*a)[10] g)int (*a)(int); h) int (*a[10])(int) 5、设有以下说明和定义: typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max; 那么语句 printf(\的执行结果是:_____ 【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字 节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 所以结果是 20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20 6、请问以下代码有什么问题: int main() { char a; char *str= strcpy(str,\ printf(str); return 0; } 【标准答案】没有为str调配内存空间,将会发生奇怪 问题出在将一个字符串复制进一个字符变量指针所指地址。

虽然可以正确输出结果,但由于越界举行内在读写而导致程序崩溃 7、请问以下代码有什么问题: char* s=\printf(\s[0]='B'; printf(\有什么错? 【标准答案】\是字符串常量s是指针,指向这个字符串常量,所以声明s的时候就有 问题 cosnt char* s=\ 然后又由于是常量,所以对是s[0]的赋值操作是不合法的 8、 int (*s[10])(int) 表示的是什么啊 【标准答案】int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数 9、 c和c++中的struct有什么不同? 【标准答案】c和c++中struct的主要识别是c中的struct不成以含有成员函数,而c++中的struct 可以c++中struct和class的主要识别在于默认的存取权限不同,struct默认为public,而class默认为private 10、void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,“hello world”); } int main( ) { char *str=NULL; getmemory(str); printf(“%s/n”,str); free(str); return 0; }会展现什么问题? 【标准答案】程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很 危害。

11、 char szstr[10]; strcpy(szstr,\产生什么结果?为什么? 【标准答案】长度不一样,展现段错误 12、数组和链表的识别? 【标准答案】数组:数据依次存储,固定大小; 链表:数据可以随机存储,大小可动态变更 13、 void main() { char aa[10]; printf(“%d”,strlen(aa)); } 会展现什么问题?打印结果是是多少? 【标准答案】sizeof()和初不初始化,没有关系,strlen()和初始化有关,打印结果值未知 14、给定布局struct A { char t:4; char k:4; unsigned short i:8; unsigned long m; };问sizeof(A) = ? 【标准答案】8 15、 struct name1{ char str; short x; int num; };求sizeof(name1)? 【标准答案】8 16、 struct name2{ char str; int num; short x; };求sizeof(name2)? 【标准答案】12 17、程序哪里有错误 wap( int* p1,int* p2 ) { int *p; *p = *p1; *p1 = *p2; *p2 = *p; } 【标准答案】p为野指针 18、 c和c++中的struct有什么不同? 【标准答案】c和c++中struct的主要识别是c中的struct不成以含有成员函数,而c++中的struct 可以。

c++中struct和class的主要识别在于默认的存取权限不同,struct默认为public,而class默认为private 19、 (void *)ptr 和 (*(void**))ptr的结果是否一致?其中ptr为同一个指针 【标准答案】(void *)ptr 和 (*(void**))ptr值是一致的 20、要对十足地址0x100000赋值,我们可以用 (unsigned int*)0x100000 = 1234; 那么要是想让程序跳转到十足地址是0x100000去执行,理应怎么做? 【标准答案】*((void (*)( ))0x100000 ) ( ); 首先要将0x100000强制转换成函数指针,即: (void (*)())0x100000 然后再调用它: *((void (*)())0x100000)(); 21、 int a,b,c 请写函数实现c=a+b ,不成以变更数据类型,如将c改为long int,关键是如何处理溢出问题 【标准答案】 bool add (int a, int b,int *c) { *c=a+b; return (a>0 } 22、关于内存的斟酌题(1)你能看出有什么问题? 23、关于内存的斟酌题(2)你能看出有什么问题? 25、关于内存的斟酌题(3)你能看出有什么问题? 26、关于内存的斟酌题(4)你能看出有什么问题? 27、 关键字volatile有什么含意? 并给出三个不同的例子。

【参考答案】一个定义为volatile的变量是说这变量可能会被意想不到地变更,这样,编译器 就不会去假设这个变量的值了精确地说就是,优化器在用到这个变量时务必每次都提防地重新读取这个变量的值,而不是使用保存在寄放器里的备份下面是volatile变量的几个例子: 1). 并行设备的硬件寄放器(如:状态寄放器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中。

下载提示
相似文档
正为您匹配相似的精品文档