C语言复习题.docx
- 文档编号:4582653
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:26
- 大小:30.27KB
C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(26页珍藏版)》请在冰豆网上搜索。
C语言复习题
C语言复习题
一、选择题:
1.以下不是C语言的特点的是(B)
A.C语言简洁、紧凑B.能够编制出功能复杂的程序
C.C语言可以直接对硬件进行操作D.C语言移植性好
2.以下不正确的C语言标识符是(D)。
A.ABCB.abcC.a_bcD.ab.c
3.一个c程序的执行是从(A).
A.main()函数开始,直到main()函数结束
B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束
D.main()函数开始,直到最后一个函数结束
4.以下不正确的语句(设有intp,q)是(D)。
A.P*=3;B.p/=q;C.p十=3;D.p&&=q
5.下列四组选项中,均不是C语言关键字的选项是(A).
A.defineB.getcC.includeD.while
ifcharsanfgo
typeprintfcasepow
6.下面四个选项中,均是合法整形常量的选项是(A).
A.160B.-0xcdfC.-01D.-0x48a
-0xffff01a986,0122e5
0110xe06680x
7.下面四个选项中,均是不合法浮点数的选项是(B).
A.160.B.123C.-.18D.-e3
0.122e4.2123e40.234
e3.e50.01e3
8.若有代数式3ae/bc,则不正确的C语言表达式是(C)
A.a/b/c*e*3B.3*a*e/b/c
C.3*a*e/b*cD.a*e/c/b*3
9.若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为(A).
A.7B.8C.9D.10
10.若有定义:
inta=7;floatx=205,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(A)。
A.2.500000B.2.750000C.3.500000D.0.000000
11.sizeof(float)是(B)。
A.一个双精度型表达式B.一个整型表达式
C.一种函数调用D.一个不合法的表达式
12.设intn=3;则n十十的结果是(B)。
A.2B.3C.4D.5
13.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为(D)。
A.floatB.charC.intD.double.
14.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(D).
A.scanf(“%d%d1x,%1e”,&x,&y,&z);
B.scanf(“%2d*%d%1f”,&x,&y,&z);
C.scanf(“%x%*d%o”,&x,&Y);
D.scanf(“%x%o%6.2f”,&x,&y,&z);
15.以下说法正确的是(D).
A.输入项可以为一个实型常量,如scanf(“%f”,3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);
D.当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);
16.以下程序的执行结果是(A)。
#include
main()
{
intsum,pad;
sum=pad=5;
pad=sum++;
pad++;
++pad;
printf("%d\n",pad);
}
A.7B.6C.5D.4
17.巳知字母A的ASCII码是65,以下程序的执行结果是(D)。
#include
main()
{
charc1='A',C2='Y';
printf("%d,%d\n",c1,c2);
A.A,YB.65,65C.65,90D.65,89
18.为了避免嵌套的if-else语句的二义性,c语言规定else总是与(C)组成配对关系。
A.缩排位置相同的if
B.在其之前末配对的if
C.在其之前未配对的最近的if
D.同一行上的if
19.逻辑运算符两侧运算对象的数据类型(D).
A.能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
20.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D).
A.’x’&&’y’
B.x<=y
C.x||y+z&&y-z
D.!
((x<y)&&!
z||1)
21.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是(C).
A.A%2==1B.!
(A%2==0)C.!
(A%2)D.A%2
22.以下不正确的if语句形式是(C).
A.if(x>y&&x!
=y);
B.if(x==y)x十=y;
C.if(x!
=y)scanf(“%d”,&x)e1sescanf(”%d,&y);
D.if(x<y){x十十;y十十;}
23.以下if语句语法正确的是(B).
A.if(x>0)
printf(“%f“,x)
elseprintf(“%f”,-x);
B.if(x>0)
{x=x+y;printf(“%f“,x);}
elseprintf(“%f”,-x)
C.if(x>0)
{x=x+y;printf(“%f“,x);}
elseprintf(“%f”,-x)
D.if(x>0)
{x=x+y;printf(“%f“,x);}
elseprintf(“%f”,-x)
elseprintf(“%f”,-x);
24.阅读以下程序
main()
{inta=5,b=0,c=0;
if(a=b+c)printf(“***\n”);
elseprintf(“$$$\n”);
}
以上程序(D).
A.语法有错不能通过编译B.可以通过编译但不能通过连接
C.输出***D.输出$$$
25.以下程序运行结果是(C).
main()
{inta=100,x=10,y=20,ok1=5,ok2=0;
if(x if(y! =10) If(! ok1) a=1; else if(ok2)a=10; a=-1; printf(“%d\n”,a); } A.1B.0c.-1D.不确定 26.执行以下程序段后,变量a,b,c得值分别是(B). intx=10,y=9; inta,b,c; a=(--x==y++)? –x: ++y; b=x++; c=y; A.a=9,b=9,c=9B.a=8,b=8,c=10 C.a=9,b=10,c=9D.a=1,b=11,c=10 27.若w,x,y,z,m均为int型变量,则执行下面语句后的m值是(A). w=1;x=2;y=3;z=4; m=(w w: x; m=(m m: y; m=(m m: z; A.1B.2C.3D.4 28.语句while(! e);中的条件! e等价于(A)。 A.e==0B.e! =1C.e! =0D.~e 29.下面有关for循环的正确描述是(D) A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来 30.C语言中while和do-while循环的主要区别是(A). A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 31.以下程序段(C). x=-1;do{x=x*x;}while(! x); A.是死循环B.循环执行二次 C.循环执行二次D.有语法错误 32.下面程序的运行结果是(B). #include main() {inty=10; do{y--;}while(--y); printf(“%d\n”,y--);} A.-1B.1C.8D.0 33.以下正确的描述是(B). A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 34.c语言中(D)。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环 35.在C语言中,引用数组元素时,其数组下标的数据类型允许是(C) A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式 36.在C语言中,一位数组的定义方式为: 类型说明符数组名(D)。 A.[常量表达]B.整型表达式C.[整型常量]或[整型表达式]D.[整型常量] 37.以下不能对二维整形数组a进行正确初始化的语句是(C)。 A.inta[2][3]={0}; B.inta[][3]={{1,2},{0}}; C.inta[2][3]={{1,2},{3,4},{5,6}}; D.inta[][3]={1,2,3,4,5,6}; 38.若有说明: inta[][4]={0,0};则下面正确的叙述是(D)。 A.数组a中每个元素均可得到初值0 B.二维数组a的第一维大小为1 C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D.只有元素a0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 39.若有说明: inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(B)。 A.2B.3C.4D.无确定值 40.下面程序的运行结果是(B)。 charc[5]={‘a’,’b’,’\0’,’c’c,’\0’}; printf(“%s”,c);} A.‘a’’b’ B.ab C.abc D.ab 41.有两个字符数组a、b,则以下正确的输入语句是(B)。 gets(a,b); scanf(“%s%s”,a,b); scanf(“%s%s”,&a,&b); gets(“a”),gets(“b”); A.s[j+=]=s[i]B.s[++j]=s[i] C.s[j]=s[i];j++D.s[j]=s[i] 42.若使用一维数组名作函数实参,则以下正确的说法是(A). A.必须在主调函数中说明此数组的大小 B.实参数组类型与形参数组类型可以不匹配 C.在被调函数中,不需要考虑形参数组的大小 D.实参数组名与形参数组名必须一致 43.以下正确的说法是(A). A.如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效 B.在该函数中有效 C.在本程序范围内均有效 D.非法变量 44.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A). A.自动(auto)B.静态(static)C.外部(extern)D. 寄存器(register) 45.以下程序的运行结果是(B)。 #defineMIN(x,y)(x)<(y)? (x): (y) main() {inti=10,j+15,k; k+10*MIN(i,j); printf(“%d\n”,k); } A.10B.15C.100D.150 46.C语言的编译系统对宏命令的处理是(D)。 A.在程序运行时进行的 B.在程序连接时进行的 C.和C程序中的其它语句同时进行编译的 D.在对源程序中的其它语句同时进行编译的 47.请读程序 #include #defineMUL(x,y)(x)*y main() {inta=3,b=4,c; c=MUL(a++,b++); printf("%d\n",c); } 上面程序的输出结果是(A)。 A.12B.15C.20D.16 48.以下程序的输出结果为(B)。 #definePT5.5 #defineS(x)PT*x*x main() {inta=1,b=2; printf("%4.1\n",S(a+b)); } A.12.0B.9.5C.12.5D.33.5 49.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用<>括起时,寻找被包含文件的方式是(C)。 A.仅仅搜索当前目录 B.仅仅搜索源程序所在目录 C.直接按系统设定的标准方式搜索目录 D.先在源程序所在目录搜索,再按系统设定的标准方式搜索 50.以下正确的描述是(C)。 A.C语言的预处理功能是指定完成宏替换和包含文件的调用 B.预处理指令只能位于C源程序文件的首部 C.凡是C源程序中行首以“#”标识的控制行都是预处理指令 D.C语言的编译预处理就是对源程序进行初步的语法检查 51.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是(B)。 A.c=*p1+p2;B.p2=cC.p1=p2D.c=*p1*(*p2); 52.设有下面的程序段: chats[]=”china”;char*p;p=s; 则下列叙述正确的是(D)。 A.s和p完全相同 B.数组s中的内容和指针变量p中的内容相等 C.s数组长度和p所指向的字符串长度相等 D.*p与s[0]相等 53.下面程序的运行结果是(C)。 #include #include main() { char*p1,*p2,str[50]=”abc”; p1=”abc”;p2=”abc”; strcpy(str+1,strcat(p1,p2)); printf(“%s\n”,str); } A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc 54.若有定义: inta[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数值的正确引用为(A)。 A.*(*(i+j)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j 55.若有定义: int(*p)[4];则标识符p(C)。 A.是一个指向整型变量的指针 B.是一个指针数组名 C.是一个指针,它指向一个含有四个整型元素的一维数组 D.定义不合法 56.若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的非法引用为(C)。 intb[2][3]={0},(*p)[3]; p=b; A.*(*(p+i)+j)B.*(p[i]+j) C.(p+i)+jD.(*(p+i))[j] 57.当说明一个结构体变量时系统分配给它的内存是(A). A.各成员所需内存量的总和 B.结构中第一个成员所需内存量 C.成员中占内存量最大者所需的容量 D.结构中最后一个成员所需内存量 58.C语言结构体类型变量在程序执行期间(A). A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.部分成员驻留在内存中 D.没有成员驻留在内存中 59.以下对C语言中共用体类型数据的叙述正确的是(C)。 A.可以对共用体变量名直接赋值 B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不可能同时存放其所有成员 D.共用体类型定义中不能出现结构体类型的成员 60.C语言共用体型变量在程序运行期间(B)。 A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.部分成员驻留在内存中 D.没有成员驻留在内存中 61.请读程序片段: intx=20; printf(“%d\n”,~x); 上面程序片段的输出结果是(C). A.02 B.–20 C.-21 D.-11 62.在位运算中,操作数每左移一位,其结果相当于(A). A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4 63.系统的标准输入文件是指(A)。 A.键盘B.显示器C.软盘D.硬盘 64.当顺利执行了文件关闭操作时,fclose函数的返回值是(C)。 A.-1B.TUREC.0D.1 65.已知函数的调用形式: fread(buffer,size,count,fp);其中buffer代表的是(C)。 A.一个整形变量,代表要读入的数据项总数 B.一个文件指针,指向要读的文件 C.一个指针,指向要读入数据的存放地址 D.一个存储区,存放要读的数据项 二、填空题: 1.C程序的基本单位是。 2.表达式10%3的结果是。 3.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为。 4.在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为; 5.C语言所提供的基本数据类型包括: 。 6.表达式pow(2.8,sqrt(double(x)))值的数据类型为。 7.以下程序的执行结果是。 #include main() { floatf=3.5; printf("%f,%g",f,f) } 8.以下程序的执行结果是。 #include main() { floatf=31.41592; printf("%f,%e",f,f) } 9.以下程序的执行结果是。 #include main() { inta,b,c; a=2;b=3;c=1; if(a>c) printf("%d\n",a); else printf("%d\n",b); printf("end\n"); } 10.在C语言中,表示逻辑“真”值用. 11.有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x︱︱z)的值为。 12.下面程序从键盘输入的字符中统计数字字符的个数,用换行符结束循环。 请填空。 intn=0,c; c=getchar(); while() {if(c>=‘0’&&c<=‘9’)n++; c=getchar(); } 13.执行下面程序段后,k值是. k=1;n=263; do{k*=n%10;n/=10}while(n); 14.下面程序段中循环体的执行次数是. a=10; b=0; do{b+=2;a-+2+b;}while(a>=0); 15.若for循环用以下形式表示: for(表达式1;表达式2;表达式3)循环体语句 则执行语句for(i=0;i<3;i++)printf(“*”);时,表达式3执行次。 16.以下程序的输出结果是__________。 main() {ints[10]={1,2,3,4,5,6,7,8,9,10},*p=s; printf("%d\n",*(p+4)); } 17.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为: 。 (假设a[0][0]位于数组的第一个位置上。 ) 18.在C语言中,二维数组元素的内存中的存放顺序是。 19.在C语言中,一个函数一般由两个部分组成,它们是。 20.以下程序的运行结果是。 #include f(inta[]) {inti=0; while(a[i]<=10) {printf(“%d”,a[i]); i++;} } main() {inta[]={1,5,10,9,11,7}; f(a+1); } 21.设有以下宏定义: #defineWIDTH80 #defineLENGTH(WIDTH+40) 则执行赋值语句: k=LENGTH*20;(k为int型变量)后,k的值是。 22.下面的运行结果是。 #defineMUL(z)(z)*(z) main() { printf(“%d\n”,MUL(1+2)+3); } 23.下面程序的运行结果是。 #defineEXCH(a,b){intt;t=a;a=b;b=t;} main() {intx=5,Y=9; EXCH(x,y); printf(“x=%d,y=%d\n”,x,y); } 24.下面程序段的运行结果是。 chars[80],*sp=”HELLO! ”; sp=strcpy(s,sp); s[0]=’h’; puts(sp); 25.下面程序段的运行结果是。 chars1=”AbcdEf”,s2=”aB”; s1++; t=(strcmp(s1,s2)>0); print(“%d\n”,t) 26.下面程序段的运行结果是。 char*p=”PDP1-0”; intI,d; for(I=0;I<7;I++) {d=isdigit(*(p+ii)); if(d! =0)printf(“%c*(p+I)); } 27.当运行以下程序时,从键盘输入book book ( chara1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2); if(! strcmp(s1,s2))printf(“*”): elseprintf(“#”); printf(“%d”,strlen(strcat(s1,s2))); 28.若已定义: structnum {inta; intb; f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题