c语言笔试题

填空:

1,short int a[10]={123, 456, 789}; sizeof(a)=(       ); short int *p=&a, 则sizeof(p)=(           );

2,给点整形变量n(32bit),把n的bit5(bit0开始)置1,其他不变:(    ) ;

3,int fun(int* x, int *y){……} 则:怎么用函数指针p调用fun?

void main()

{    int a=1, b=2;

    (                    ) ;                

     p=fun;  p(&a, &b);

 }

4,定义一个宏,将内存的大小由MB转换为bit?

5,如图,p,q节点指向,插入q则:

viod add(node* head, int a)

{  …

  node *p = head->next;

  node *q = (node *)malloc(sizeof(node));

  q->data = a;

   (             );      

  (             );         

}

6,由char a=253; int b = a; int c = a&0xff; 则:

b= (                     ), c=(                       );

7,用define实现,将整数x,y连接形成整数并除以y,如:

F(12, 34, 56) = 1234/56, 则表示为?

选择:

1,找不正确选择()

A, char a[8]={‘a’,’b’,’c’,}   B,char a[8]=; a=”hello”;

C,char a[]=”abc”;             D,char a[8]={’a’,’b’,’c’,’’};

2,#define M(x, y, z)  x*y+z, 则a=1, b=2, c=3结果输出

M(a+b, b+c, c+a)=()           

A, 19   B,17  C,15  D,12

3,由char aa=500; int bb=aa;则 printf(“%d ”, bb+1)的结果

A, 编译报错   B,245  C,-11  D,-1

4,char a[] = {’i’, ’n’, ’n’, ’’, ’s’}; char a[] = {’i’, ’n’, ’n’, ’s’ ,’’};

int x1=sizeof(a), int x2=strlen(a), int x3=sizeof(b), int x4=strlen(b)

问:X1=         X2=        X3=          X4=          

A,5 3 5 4     B,5 5 5 5   C,5 5 6 5      D,3 3 5 5

5,函数递归,求f(2, 3)=                

int f(int x, int y)

{

if(x==0)  return y+2;

if(y==0)  return f(x-1, 1);

return f(x-1, f(x, y-1));

}

A,4   B,16  C, 31  D,61

6,下列程序运行可能结果

#include <stdio.h>

#include <unistd.h>

int main (int argc, char **argv)

{  

 int cnt=2;

    pid_t pid;

    if((pid=fork())==0)

        cnt++;

    else

        cnt--;

    printf(" %d ", cnt);

  return 0;

} /* ----- End of main() ----- */

A,3  B,31  C,1  D,13

简答:

1,用c变函数,实现一个字符高低位互换,比如0x3A-->0xA3?

2,字符逆序存储,如abcdefgh-->hgfedcba?

3,字符串s,t, 将t插入s,其中假设s有足够空间容纳t?

4,单链表L,头指针为phead,判断其是否有环?

原文地址:https://www.cnblogs.com/xiaoxing/p/4044314.html