C复习题(答案)(共11页).docx
精选优质文档-倾情为你奉上一、选择题1. 下列C语言标识符中,不合法的是(B )A)_1B)a-bC)a_bD)AaBb2. 下列选项中,哪个不是C语言关键字( B )A)whileB)integerC)breakD)static3. 下列选项中,能用作数据常量的是( D )A)o115B)0118C)1.5e1.5D)115L4. 关于转义字符,下列选项中错误的是( D )A)''B)'''C)'n'D)'80'5. 设有定义:int a=3,b=2,c=1;,下列选项中错误的赋值表达式是( A )A)a=(b=4)=3B)a=b=c+1C)a=(b=4)+cD)a=1+(b=c=4)6. 设有定义:int a,b,y;,则执行y=(a=4,b=5,a+b);后,变量y的值是( C )A)4B)5C)9D)不确定7. 设有定义int x=2;,下列表达式中,值不为6的是( D )A)x*=x+1B)x+,2*xC)x*=(1+x)D)2*x,x+=28. 若a是数值类型,则逻辑表达式(a=1)|(a!=1)的值是(A )A)1B)0C)2D)不能确定9. 设有定义char w;int x;float y;double z;,则表达式w*x+z-y值的数据类型是( D )A)floatB)charC)intD)double10. 下列关于switch语句的叙述中正确的是( C )A)switch后面的表达式可以是任意值B)switch语句中必须包括default语句C)通常break语句与case子句配合使用D)break语句只能用于switch语句中11. 下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是( B )A)if(s1= =s2)ST;B)if(strcmp(s1,s2)= =0)ST;C)if(strcpy(s1,s2)= =1)ST;D)if(s1-s2= =0)ST;12.若有语句int a,b;scanf(“%d;%d”,&a,&b);,则使得a=3,b=5的正确输入数据是( D )A)3 5B)3,5C)35D)3;513. 设有语句:int i=5,n=0;while(i-) n+;,则运行后变量n的值是(C )A)0B)3C)5D)614. 执行语句for(i=10;i>0;i-=2);后变量i的值是( B )A)-2B)0C)1D)215. 若有定义 int a34;则对数组元素引用正确的是( B )A)a14B)a20C)a(2)(1)D)a1,316. 下列选项中错误的是( A )A)int a2=1,2,3,4B)int a3=1,2,3,4C)int a23=1,2,3,4D)int a3=1,2,3,417. 若函数首部定义为int func(double x10,int n),则下列函数声明中错误的是( A )A)int func(double,int);B)int func(double x,int n);C)int func(double a10,int b);D)int func(double *x,int n);18. 设有int a=1,3,5,7,9,*p=a;,则下列选项中值为7的表达式是(A )A)*(p+3)B)p+3C)*(p+4)D)p+419. 设有定义语句:struct stuint a;double b;s1;,则下列说法错误的是( A )A)s1是用户定义的结构体类型名B)struct stu是用户定义的结构体类型C)a和b都是结构体成员D)struct是定义结构体类型的关键字20. 若要打开当前文件夹中的文本文件abc.txt追加写入新内容,应使用( D )打开文件A)fopen("abc.txt","r")B)fopen("abc.txt","w+")C)fopen("abc.txt","w")D)fopen("abc.txt","a")21.结构化程序设计所规定的三种基本控制结构是(C)A) 输入、处理、输出 B) 树形、网形、环形C) 顺序、选择、循环 D) 主程序、子程序、函数22.要把高级语言编写的源程序转换为目标程序,需要使用(D)A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序23.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为(D)A) 50 B) 66 C) 52 D) 6824. 若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为(B)A) 1.4 B) 1 C) 2.0 D) 225. 若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是(D)A) a的值是字符C B) a的值是浮点型C) 不允许字符型和浮点型相加 D) a的值是字符'A'的ASCII值加上1。26.以下选项中不属于C语言的类型的是(D)A) signed short int B) unsigned long intC) unsigned int D) long short27. 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);28. 不合法的main函数命令行参数表示形式是(C)A) main(int a,char *c) B) main(int arc,char *arv)C) main(int argc,char *argv) D) main(int argv,char *argc)29.若定义:int a=511,*b=&a;, 则printf("%dn",*b);的输出结果为(D)A) 无确定值 B) a的地址 C) 512 D) 51130. 在C语言中,形参的缺省存储类是(A)A) auto B) register C) static D) extern31.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是(A)A) p=2*(int*)malloc(sizeof(int);B) p=(int*)malloc(2*sizeof(int);C) p=(int*)malloc(2*4);D) p=(int*)calloc(2,sizeof(int);32.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(B)A) fopen("A:userabc.txt","r") B) fopen("A:userabc.txt","r+")C) fopen("A:userabc.txt","rb") D) fopen("A:userabc.txt","w")33.以下不能正确进行字符串赋初值的语句是(A)A) char str5="good!" B) char str="good!"C) char *str="good!" D) char str5=g',o',o',d'34.在说明语句:int *f();中,标识符f代表的是(D)A) 一个用于指向整型数据的指针变量B) 一个用于指向一维数组的行指针C) 一个用于指向函数的指针变量D) 一个返回值为指针型的函数名35.以下叙述中正确的是(A)A) 构成C程序的基本单位是函数 B) 可以在一个函数中定义另一个函数C) main()函数必须放在其它函数之前 D) 所有被调用的函数一定要在调用之前进行定义36.以下选项中合法的实型常数是(C)A) 5E2.0 B) E-3 C) .2E0 D) 1.3E37.以下选项中合法的用户标识符是(B)A) long B) _2Test C) 3Dmax D) A. dat(4) 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量101是(A)A) 字符A B)字符a C)字符e D)非法的常量38.以下非法的赋值语句是(C)A) n=(i=2,+i); B)j+; C) +(i+1); D)x=j>0;39. 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)A)6. B)6 C) 5. D) 6.40.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是(C)A) scanf(“%2d%2d%2d”,&i,&j,&k); B) scanf(“%d %d %d”,&i,&j,&k);C) scanf(“%d,%d,%d”,&i,&j,&k); D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);41.已有定义: int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是(D)A) B) C) D) 42. if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是(D)A) 必须是逻辑值 B) 必须是整数值 C) 必须是正数 D) 可以是任意合法的数值43.以下叙述正确的是(B)A) 可以把define和if定义为用户标识符B) 可以把define定义为用户标识符,但不能把if定义为用户标识符C) 可以把if定义为用户标识符,但不能把define定义为用户标识符D) define和if都不能定义为用户标识符44. 有以下程序#include <string.h>main(int argc,char *argv) int i,len=0;for(i=1;i<argc;i+) len+=strlen(argv);printf(“%dn”,len); 程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:ex1 abcd efg 10<回车>则运行的结果是:A) 22 B) 17 C) 12 D) 9二、填空题1. 运行一个C程序的基本步骤是:编辑、编译、 连接 、运行。2. 已知字母A的ASCII值为65。则语句printf("%d",'D');的输出结果是 68 。3. 若有定义int i=6,j;,则执行j=i+;后,j的值是 6 。4. 如有定义int a=2;,则执行语句a+=a-=a*a后,变量a的值是 -4 。5. 若有定义int a=2,b=7则表达式(float)b/a的结果是 3.5 。6. 表示条件“x能同时被3和5整除”的逻辑表达式是 x%3=0 && x%5=0。7. 若下列代码运行后输出“21”,则代码问号处应填写语句: break 。 for(s=0,n=1;n<=10;n+)s+=n;if(s>20) ? ;printf("%d",s);8. 若有代码char s10=”abcd0ef”; ,则printf("%s",s);的输出结果是 abcd 。9. 设有#define F(x,y) x*y,则F(1+3,3+2)的值是 12 。10. 设有定义union datachar c;int x;double f;a;,则变量a所占空间是 8 字节。三、阅读理解题专心-专注-专业1. 下列程序的运行结果是( ga )。#include <stdio.h>main() char a="program",*p1=a; char b="language",*p2=b; int i; for(i=0;i<8;i+) if(*(p1+i)=*(p2+i) printf("%c",*(p1+i);2. 下列程序的运行结果是( s=8765 )#include <stdio.h>main() int i=1,j=8,s; for(s=0;i<j;i+,j-)s=s*10+j; printf("s=%dn",s);3. 下列程序的运行结果是( s1=18,s2=10 )#include <stdio.h>main() int a3=9,7,5,3,1,2,4,6,8; int i,j,s1=0,s2=0; for(i=0;i<3;i+) for(j=0;j<3;j+) if(i=j) s1+=aij; if(i+j=2) s2+=aij; printf("s1=%d,s2=%dn",s1,s2);4. 下列程序的运行结果是( 45 )。#include <stdio.h>int fun(int n) if(n=1) return 5; else return 10+fun(n-1);main() int num; num=fun(5); printf("%dn",num);5.以下程序的输出结果是( 10 )f(int b,int m,int n) int i,s=0; for(i=m;i<n;i=i+2) s=s+bi; return s;main()int x,a=1,2,3,4,5,6,7,8,9; x=f(a,3,7); printf("%dn",x);6. 以下程序的输出的结果是( 2 6 )int x=3;main() void ncre();int i; for (i=1;i<x;i+) ncre();void ncre() staitc int x=1; x*=x+1; printf(" %d",x);7. 以下程序的输出结果是( abc+abc=defdef )char cchar(char ch) if(ch>=A&&ch<=Z') ch=ch-A'+a' return ch;main() char s="ABC+abc=defDEF",*p=s; while(*p) *p=cchar(*p); p+; printf("%sn",s);8.下列程序的运行结果是( abcde )#include <stdio.h>main() char str1="abcde",*s=str1; char str220,*t=str2; while(*t+=*s+); puts(str2);9.以下程序的输出结果是 ( 32 )#include <stdio.h>main() int i=0,a=0;while(i<20) for(;) if(i%10)=0) break; else i-; i+=11; a+=i;printf("%dn",a);10.有以下程序( 19 )main() int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,s=0;for(i=0;i<4;i+) s+=aai1;printf(“%dn”,s); 11.以下程序的输出结果是( 7 8 9)main()int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y) t=x;x=y;y=t; if(x>z) t=z;z=x;x=t; if(y>z) t=y;y=z;z=t; printf("small to big: %d %d %dn",x,y,z); 输入9 8 7 12.以下程序的输出结果是( 0 1 2 3 4 )#include <stdio.h>void main() int i, a5; int *p=a; for (i=0; i<5; i+,p+ ) *p=i; printf("%3d", ai); printf("n"); 13.以下程序的输出结果是( 41 )main() int a=0,i; for(i=0;i<5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default: a+=5;printf("%dn",a);14. 以下程序的输出结果是( 2 )#include <stdio.h>main() int x=2,y; if(x<=0) if(x=0) y=0; else y=-x; else y=x; printf("%dn",y);