1、C 语言程序设计复习题一、单选题(共 60 小题,每题 1 分,共 60 分)1. 执行下列程序中的输出语句后,x 的值是_.#include main()int x;printf(“%dn“,(x=5*6,x*2,x+20);A)30 B)60 C)50 D)802. 下列程序的输出结果是_.main()int x=1,y=0,z;z=(x=0);printf(“%d %d% d%n“,z,x,y);A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -13. 在 C 语言中,下列选项属于合法的长整型常数的是 _.A)0L B)1234567 C)0.0234567 D)3.1
2、4159e34. 下列选项中属于不正确的赋值语句的是_. A)t+; B)n1=(n2= (n3=0) ) ; C)k=i= =j; D)a=b ,c=1;5. 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)则能给 a 赋整数 14,给 b 赋整数 22,给 x 赋字符 x,给 y 赋字符 y 的正确程序段是_. A) scanf(“%d %d”,&a,&b) ;x=getchar() ;y=getchar() ;B) scanf( “%d%d %c %c”, &a, &b,&x,&x,&y,&y ) ;C) scanf( “%d %d %c%c
3、%c %c”, &a,&b,&x,&x,&y,&y) ;D) scanf(“%d%d %c %c”, &a, &b,&x,&y) ;6. 下列转义字符不正确的是_.A) B ) C)053 D)07. 下列选项可作为 C 语言赋值语句的是 _.(知识点 4.2)A)x=3,y=5 B)a=b=6 C)i- -; D)y=int (x) ;8. 当 c 的值不为 0 时,下列选项中能正确将 c 的值赋给变量 a、b 的是_.(知识点 5.2)A)c=b=a; B) (a=c)(b=c ) ; C) (a=c)&(b=c) ; D)a=c=b;9. 有以下程序:main () unsigned i
4、nt a ;int b=-1 ;a=b;printf (“%u”,a ) ;该程序运行后的输出结果是_.(知识点 4.5)A)-1 B)65535 C)32767 D )-3276810. 若 x、b、m、n 均为 int 型变量,执行下面语句后 b 的值为_.(知识点 3.10)m=20;n=6;x=(- -m= =n+)?- -m :+n;b=m+;A)11 B)6 C)19 D)1811. 有以下程序:main () int a=111,b=222 ;printf (“%dn” ,a ,b) ;该程序运行后的输出结果是_.(知识点 4.5)A)错误信息 B)111 C)222 D)111
5、,22212. 以下程序的输出结果是_.(知识点 4.5)main () int a=2,c=5;printf (“a=%d ,b=%dn”,a,c) ;A) a=%2,b=%5 B) a=2,b=5 C) a=%d,b=%d D ) a=%d,b=%d13. 对于浮点型变量 f,能实现对 f 中的值在小数点后第三位进行四舍五入的表达式是_.(知识点 3.8)A)f= (f*100+0.5)/100.0 B)f=(f*100+0.5)/100C)f= (int) (f*100+0.5 )/100.0 D)f= (f/100+0.5)*10014. 设 a=5, b=6, c=7, d=8, m
6、=2, n=2, 执行(m=ab)&(n=cd) 后 m,n 的值为_.(知识点 5.2)A) 2,2 B) 2,0 C) 0,2 D) 0,015. 语句 printf(“%dn”,strlen(“asdnx121”) ) ;的输出结果是_.(知识点 7.3)A) 9 B) 11 C) 7 D) 816. 有以下程序:main ( )int y=1234;printf (“y=%6d”,y) ;printf (“y=%+06dn” ,y) ;该程序的运行结果是_.(知识点 4.5)A) y= 1234y=001234 B) y= 1234y=+01234C) y=1234y=+01234 D
7、) y= 1234y=123417. 语句:printf(“%d”, !9) ;的输出结果是_.(知识点 5.2)A) 0 B) 1 C) 有语法错误 ,不能执行 D) -918. 已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示 x、y、z 值的选项是_.(知识点 5.3)if (xb)if (cd)x=2 ;else x=3 ;else x=4 ;else x=5 ;A)2 B)3 C)4 D)522. 下列程序的运行结果是_.(知识点 6.3)main () int y=10;do y- - ; while (- -y) ;printf (“%dn” ,y- -)
8、 ;A)-1 B)1 C)8 D)023. 下列程序的运行结果是_.(知识点 6.5)# include main ()int i ;for(i=1;ij) 语句共执行的次数是_.(知识点 6.5)main () int i=0,j=10,k=2 ,s=0 ;for(;) i+= k ;if (ij) printf (“%d” ,s) ;break ;s+=i ;A)4 B)7 C)5 D)630. 以下程序的功能是:按顺序读入 10 名学生和 4 门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。main () int n,k;float score,ave;ave=0.0 ;
9、for(n=1;nmain () int c =23,1,56,234,7,0,34,i,j,t;for(i=1;i=0&tcj) cj+1=cj;j- - ;cj+1=t;for(i=0;imain () char *p1,*p2,ch20=“ABCDEFabcdef” ;p1=“1234”;p2=“abcd”;strcpy (ch+1,p2+1 ) ;strcpy(ch+3,p1+3) ;pintf(“%sn”,ch) ;A)Abc4EFabcde B)Abc4EF C )AbcdEF D)Abc438. 下列程序的运行结果是_.(知识点 8.6)# include int f(int a
10、) switch (a) case 0:return 0;case 1:case 2:return 1;return(f(a-2)+f (a-3) ) ;main () int b;b=f( 10) ;printf (“b=%dn”,b) ;A) 12 B)10 C)9 D)839. 有以下程序:fun(int n) if(n= =1| n= =2 )return 2;return s=n-fun(n-2) ;main ()printf (“%dn”,fun(7) ) ; 该程序运行后的输出结果是_.(知识点 8.6)A) 1 B)2 C)3 D)440. 下列程序中函数 sort 的功能是对
11、 a 数组中的数据进行由大到小的排序:void sort(int a ,int n) int i,j,t;for(i=0;in,p3.m-n) ; A)1,2 B)1,3 C)2,0 D)程序出错55. 下列程序的输出结果是_.(知识点 11.6)struct st int x;int *y;*p;int dt4=10,20,30,40;struct st aa4=50,&dt0,60 ,&dt1 ,70,&dt2,80,&dt3;main () p=aa ;printf (“%d ”,+p-x) ;printf (“%d ”, (+p)-x) ;printf (“%d ”,+(*p-y) )
12、 ;A)10 20 20 B)50 60 21 C)51 60 21 D)60 70 3156. 字符 0 的 ASCII 码的十进制数为 48,且数组的第 0 个元素在低位,则以下程序的执行结果是_.(知识点 11.8)#include main () union int i4 ;long k;char c6;a,*s=&a ;s-i0=0x39 ;s-i1=0x38 ;printf (“%cn”,s-c0 ) ;A)5 B)3 C)6 D)957. 下列程序的运行结果是_.(知识点 12.2)main () unsigned c1=0xff,c2=0x00;c1=c2|c12;c2=c10
13、236 ;printf (“%x,%xn” ,c1,c2) ;A)0x3f,0XA1 B)3f,A1 C )ffff,61 D)3f,a158. 若有运算符void fun(char *fname,char *st) FILE *myf;int i;myf=fopen(fname, “w”) ;for(i=0;imain () FILE *fp ;int i=20,j=30,k,n;fp=fopen(“d1.dat”, “w”) ;fprintf(fp , “%dn”,i) ;fprintf(fp, “%dn”,j) ;fclose(fp) ;fp=fopen(“d1.dat”, “r”) ;
14、fscanf(fp, “%d%d”,&k,&n) ;printf(“%d %dn”,k,n) ;fclose(fp) ;该程序运行后的输出结果是_.(知识点 13.4)A)20 30 B)20 50 C)30 50 D)30 20二、多选题(共 20 小题,每题 2 分,共 40 分)1. 下列符号串中,不属于 C 语言合法标识符的有_.(知识点 3.2)A)_1_2_3 B)a-b-c C)int D )9cd2. 当把下列四个表达式用作 if 语句的控制表达式时,含义相同的选项有_.(假设 k0) (知识点 5.3)A)k%2 B)k%2= =1 C) (k%2)!=0 D)!k%2= =
15、03. 已有定义 int a=-2;和输出语句 printf(“%8lx”,a ) ;下列叙述不正确的有_.(知今识点4.5)A) 整型变量的输出形式只有%d 一种B) %x 是格式符的一种,它可以适用于任何一种类型的数据C) %x 是格式符的一种,其变量的值按十六进制输出,但%8lx 是错误的D) %8lx 不是错误的格式符,其中数字 81 规定了输出字段的宽度4. 下列选项中,没有构成死循环的程序段有_.(知识点 6.7)A)int i=100 ; B)for ( ; ; )while (1) i=i%100+1 ;if (i=100)break;C)int k=0; D)int s=36
16、;do +k; while(k=0 ) ; while(s) ;s;5. t 为 int 类型,进入下面的循环之前,t 的值为 0:while (t=1) 。则下列叙述不正确的有_.(知识点 6.3)A)循环控制表达式的值为 0 B)循环控制表达式的值为 1C)循环控制表达式不合法 D)循环有可能是个无限循环6. 下列判断正确的是_.(知识点 10.3)A) char *a=“china”;等价于 char *a;*a=“china”;B) char str6=“china”;等价于 char str = “china”;C) char *s=“china”;等价于 char *s;s=“ch
17、ina”;D) char c4=“abc”,d4=“abc”;等价于 char c4=d4=“abc”;7. 若变量已正确定义,以下能正确计算 1+2+3+4+5 的程序段有 _.(知识点:6.7)A)i=1;s=1; B)i=0;s=0;do do s=s+i ;i+; i+; s=s+i;while (ia B )*plink=a-link-link ;a-link-link=s;B)a=a-link ; a-link=s ;s-link=NULL ;C)s-link=NULL ;a=(*a ) 。link ; (*a ) 。link =s;D)a=a-link ; s-link=a-li
18、nk;a-link=s-link;15. 设有定义语句: int x6=2,4,6,8,5,7,*p=x,i;要求依次输出 x 数组 6 个元素中的值,下列选项中能完成次操作的语句有_.(知识点 10.3)A)for(i=0;i6 ;i+ )printf(“%2d” ,*(p+ ) ) ;B)for (i=0;i6;i+)printf(“%2d” ,*(p+i) ) ;C)for (i=0;i6;i+)printf(“%2d” ,*p+) ;D)for(i=0;i6 ;i+ )printf(“%2d” , (*p)+ ) ;16. 下列叙述正确的有_.(知识点 8.5)A) 函数可以嵌套定义,
19、但不能嵌套调用B) 函数可以嵌套调用,也可以嵌套定义C) 函数不可以嵌套定义,但可以递归调用D) 函数可以嵌套调用,但不能嵌套定义17. 下列叙述不正确的有_.(知识点 8.8)A)全局变量可以为本文件中其他函数所调用,编译时分配在静态存储区B)局部变量只在本函数范围内有效,形式参数属于局部变量C)局部变量如没有被说明为静态的存储类别,则会被分配动态存储空间,存储在动态存储区中D)局部静态变量在函数调用结束后依然存在,但其他函数不能引用它18. 若变量已正确定义,要求程序段完成求 5!的计算,下列选项中不能完成此操作的程序段有_(知识点 6.7)A)for(i=1,p=1 ;i=5 ;i+)p
20、*=i;B)for (i=1;i=5;i+)p=1;p*=i;C)i=1;p=1;while(i=5) p*=i;i+;D)i=1;p=1;do p*=i ;i+; while(i=5 ) ;19. 若有以下说明,则对 strcpy 库函数的调用不正确的有_.(知识点 10.4)char *str1=“copy” ,str210 , *str3=“abcde”,*str4,*str5=“hijk”A)strcpy ( str2,str1) ; B)strcpy(str3,str1) ;C)strcpy(str4,str1) ; D)strcpy(str5 ,str1) ;20. 下列选项中可以将变量 n 清零的表达式有_.(知识点 122)A)n=n&n B)n=n&0 C)n=nn D)n=n|n