【转载】C语言深度解剖最后测试题

    xiaoxiao2021-03-25  90

    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])的值是 //*(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.下面的代码里,哪些内容可被改写,哪些不可被改写?

    const int *p; int const *p; int *const p; 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)); }

    14.假设 p 的值为 0x100000,如下表达式的值分别为多少?

    struct Test { int Num; char *pcName; short sDate; char cha[2]; short sBa[4]; }*p; p+0x1 = (unsigned long)p+0x1 = (unsigned int *)p+0x1 =

    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() { 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。

    转载请注明原文地址: https://ju.6miu.com/read-23063.html

    最新回复(0)