1、C语言笔试题(一) 选择题第1题: #includestatic jmp_buf buf;main() volatile int b; b =3; if(setjmp(buf)!=0) printf(%d , b); exit(0); b=5; longjmp(buf , 1); 请问,这段程序的输出是(a) 3(b) 5(c) 0(d) 以上均不是第2题:main() struct node int a; int b; int c; ; struct node s= 3, 5,6 ; struct node *pt = &s; printf(%d , *(int*)pt); 这段程序的输出是
2、:(a) 3(b) 5(c) 6(d) 7第3题: int foo ( int x , int n) int val; val =1; if (n0) if (n%2 = 1) val = val *x; val = val * foo(x*x , n/2); return val; 这段代码对x和n完成什么样的功能(操作)?(a) xn(x的n次幂)(b) x*n(x与n的乘积)(c) nx(n的x次幂)(d) 以上均不是第4题:main() int a5 = 1,2,3,4,5; int *ptr = (int*)(&a+1); printf(%d %d , *(a+1), *(ptr-1
3、) ); 这段程序的输出是:(a) 2 2(b) 2 1(c) 2 5(d) 以上均不是第5题:void foo(int 3 ); main() int a 33= 1,2,3 , 4,5,6,7,8,9; foo(a); printf(%d , a21);void foo( int b3) + b; b11 =9; 这段程序的输出是:(a) 8(b) 9(c) 7(d)以上均不对第6题:main() int a, b,c, d; a=3; b=5; c=a,b; d=(a,b); printf(c=%d ,c); printf(d=%d ,d);这段程序的输出是:(a) c=3 d=3(b)
4、 c=5 d=3(c) c=3 d=5(d) c=5 d=5第7题:main() int a3 = 1,2,3 ,4,5,6; int (*ptr)3 =a; printf(%d %d ,(*ptr)1, (*ptr)2 ); +ptr; printf(%d %d ,(*ptr)1, (*ptr)2 );这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5(c) 4 5 0 0(d) 以上均不对第8题:int *f1(void) int x =10; return(&x);int *f2(void) int*ptr; *ptr =10; return ptr;int *f3(void
5、) int *ptr; ptr=(int*) malloc(sizeof(int); return ptr;上面这3个函数哪一个最可能引起指针方面的问题(a) 只有 f3(b) 只有f1 and f3(c) 只有f1 and f2(d) f1 , f2 ,f3第9题:main() int i=3; int j; j = sizeof(+i+ +i); printf(i=%d j=%d, i ,j);这段程序的输出是:(a) i=4 j=2(b) i=3 j=2(c) i=3 j=4(d) i=3 j=6第10题:void f1(int *, int); void f2(int *, int);
6、 void(*p2) ( int *, int);main() int a; int b; p0 = f1; p1 = f2; a=3; b=5; p0(&a , b); printf(%dt %dt , a ,b); p1(&a , b); printf(%dt %dt , a ,b);void f1( int* p , int q) int tmp; tmp =*p; *p = q; q= tmp;void f2( int* p , int q) int tmp; tmp =*p; *p = q; q= tmp; 这段程序的输出是:(a) 5 5 5 5(b) 3 5 3 5(c) 5 3
7、 5 3(d) 3 3 3 3第11题:void e(int ); main() int a; a=3; e(a);void e(int n) if(n0) e(-n); printf(%d , n); e(-n); 这段程序的输出是:(a) 0 1 2 0(b) 0 1 2 1(c) 1 2 0 1(d) 0 2 1 1第12题:typedef int (*test) ( float * , float*)test tmp;tmp 的类型是(a) 函数的指针,该函数以 两个指向浮点数(float)的指针(pointer)作为参数(arguments) Pointer to function
8、of having two arguments that is pointer to float(b) 整型(c) 函数的指针,该函数以 两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型 Pointer to function having two argument that is pointer to float and return int(d) 以上都不是第13题:main() char p; char buf10 = 1,2,3,4,5,6,9,8; p = (buf+1)5; printf(%d , p);这段程序的输出是
9、:(a) 5(b) 6(c) 9(d) 以上都不对第14题: Void f(char*);main() char * argv = ab ,cd , ef ,gh, ij ,kl ; f( argv );void f( char *p ) char* t; t= (p+= sizeof(int)-1; printf( %s , t);这段程序的输出是:(a) ab(b) cd(c) ef(d) gh第15题:#includeint ripple ( int , .);main() int num; num = ripple ( 3, 5,7); printf( %d , num);int ri
10、pple (int n, .) int i , j; int k; va_list p; k= 0; j = 1; va_start( p , n); for (; jn; +j) i = va_arg( p , int); for (; i; i &=i-1 ) +k; return k;这段程序的输出是:(a) 7(b) 6(c) 5(d) 3第16题:int counter (int i) static int count =0; count = count +i; return (count );main() int i , j; for (i=0; i =5; i+) j = cou
11、nter(i);本程序执行到最后,j的值是:(a) 10(b) 15(c) 6(d) 7(二) 编程题1. 请填写下列两个函数分别实现对变量a实现置位和清除“BIT3”位。#define BIT3 (0x13) static int a; void set_bit3(void) 代码部分 void clear_bit3(void) 代码部分2. 编写strcpy函数已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不调用C+/C的字符串库函数,请编写函数 st
12、rcpy(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?3.用堆栈解决一个问题,定义一个二维数组:int maze55 = 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,;它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。3. 编写一个统计工厂产量直方图程序:程序运行效果如下:请输入工厂代号:1请输入该工厂产量(吨):127485还有其它工厂吗?(Y/N):Y请输入工厂代号:2请输入该工厂产量(吨):1227485还有其它工厂吗?(Y/N):N工厂代号 产量(吨) (每万吨记一个星)1 123443434 *2 3443434 *
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1