C语言深度剖析测试题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pstu = (struct student *)malloc(sizeof(struct student)); strcpy(pstu->name, “Jimy”); pstu->score = 99; free(pstu); return 0; } 18、下面的代码输出结果是多少? void fun(int i) { if( i > 0 ) fun(i/2); printf(“%d\n”,i); } int main() { fun(10); return 0; } 19、下面的代码有什么问题?为什么? char c; c = getchar(); if(EOF == c){ …… } 20、请写一个 C 函数若当前系统是 Big_endian 的,则返回 0;若是 Little_endian 的,则返回 1。
14、假设 p 的值为 பைடு நூலகம்x100000,如下表达式的值分别为多少? struct Test { int Num; char *pcName; short sDate; char cha[2]; short sBa[4]; }*p; p+0x1 = 0x (unsigned long)p+0x1 = 0x (unsigned int *)p+0x1 = 0x 15、下面代码输出地结果是多少? #include<stdio.h> int main(int argc,char * argv[]) { int a[3][2]={(0,1),(2,3),(4,5)}; int *p; p=a[0]; printf(“%d”,p[0]); } 16、下面的代码有什么问题?为什么? void fun(char a[10]) { char c = a[3]; } int main() { char b[10] = “abcdefg”; fun(b[10]); return 0; } 17、下面的代码有什么问题?为什么? struct student { char *name; int score; }*pstu; int main() {
请在 40 分钟内完成以下 20 道 C 语言基础题。 C 语言基础题(每题 5 分) 1、下面的代码输出是什么?为什么? void foo(void) { unsigned int a = 6; int b = -20; (a + b>6)? puts(“>6”):puts(“<=6”); } 2、下面的代码有什么问题?为什么? void foo(void) { char string[10],str1[10]; int i; for(i=0; i<10; i++) str1[i] = ’a’; strcpy(string , str1); printf(“%s”,string); } 3、下面的代码,i 和 j 的值分别是什么?为什么? static int j; int k=0; void fun1(void) { static int i=0; i++; } void fun2(void) { j=0; j++; } int main() { for(k=0;k<10;k++){ fun1(); fun2(); } return 0; }
4、下面代码里,假设在 32 位系统下,各 sizeof 计算的结果分别是多少? int *p=NULL; sizeof(p)的值是 sizeof(*p)的值是 int a[100]; sizeof(a)的值是 sizeof(a[100])的值是 sizeof(&a)的值是 sizeof(&a[0])的值是 int b[100]; void fun(int b[100]) { sizeof(b); } sizeof(b)的值是 5、下面代码的结果是多少?为什么? int main() { char a[1000]; int i; for(i=0; i<1000; i++) a[i] = -1-i; printf(“%d”,strlen(a)); return 0; } 6、下面的代码里,哪些内容可被改写,哪些不可被改写? 1) const int *p; 2) int const *p; 3) int *const p; 4) const int * const p; 7、下面的两段代码有什么区别?什么时候需要使用代码(2)? 代码(1) : int i=10; int j=i; int k=i; 代码(2) : volatile int i=10; int j=i;
int k=i; 8、在 32 位的 x86 系统下,输出的值为多少? #include<stdio.h> int main() { int a[5] = {1,2,3,4,5}; int *ptr1 = (int *)(&a + 1); int *ptr2 = (int *)((int )a + 1); printf(“%x,%x”,ptr1[-1], *ptr2); return 0; } 9、0x01<<2+3 的值为多少?为什么? 10、定义一个宏函数,求 x 的平方。 11、下面的两段代码有什么区别? 代码(1) : struct TestStruct1{ char c1; short s; char c2; int i; }; 代码(2) : struct TestStruct2{ char c1; char c2; short s; int i; }; 12、写代码向内存 0x12ff7c 地址上存入一个整形数 0x100。 13、下面的代码输出是多少? main() { int a[5]={1,2,3,4,5}; int *ptr = (int *) (&a + 1); printf(“%d,%d”,*(a+1), *(ptr-1)); }