C语言补充练习题.docx
《C语言补充练习题.docx》由会员分享,可在线阅读,更多相关《C语言补充练习题.docx(66页珍藏版)》请在冰豆网上搜索。
C语言补充练习题
第一、二章C语言概述及数据和运算
一、单项选择题
1.以下关于C语言的特点,正确的是。
A.表达能力强且灵活;
B.可移植性好;
C.提供了丰富的数据类型,允许程序员定义各种类型的变量指针和函数指针;
D.以上答案都对。
2.”a”在内存中占字节。
A.1个B.2个C.3个D.4个
3.’A’+10的结果是。
A.’K’B.”K”C.’J’D.”J”
4.a=b+=c+5,若b=1,c=2,则a的值是。
A.1B.7C.8D.出错
5.下列合法的变量名是。
A.123B.nextC.intD.*x
6.C源程序的基本单位是:
A.程序行B.语句C.函数D.字符
7.字符型数据在微机内存中的存储形式是:
A.反码B.补码C.EBCDIC码D.ASCII码
8.用C语言编制的源程序要变为目标程序,必须经过:
A.汇编B.解释C.编辑D.编译
9.请选出可作为C语言用户标识符的一组标识符:
A.voidB.a3_b3C.ForD.Za
define_123_abcDO
WORDIFcasesizeof
10.设有语句chara=’\73’;则变量a:
A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法
11.以下选项中正确的整型常量是:
A.12.B.-20C.1,000D.456
12若变量已正确定义并赋值,不符合C语言语法的表达式是:
A.a=a+7B.a=7+b+c,a++C.(int)(12.3)%4D.a=a+7=c+b
13.以下选项中不合法的用户标识符是
A.abc.cB.fileC.MainD.PRINTF
14.以下选项中正确的实型常量是
A.0B.3.1415C.0.329102D..871
15.TURBOC中int类型变量所占字节数是:
A.1B.2C.3D.4
16.下列说法不正确的是___________
A.C程序由若干个源文件组成,一个源文件由若干个函数组成。
B.#include和#define不是C语句。
C.APH和aph是两个不同的变量。
D.当输入数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。
17.scanf()函数的地址表列是用符号加上变量名表示变量的地址。
A.%B.&C.#D.!
18.指出下面不正确的赋值语句是
A.a++;B.a==b;C.a+=b;D.a=1,b=1;
19.指出下面正确的输入语句是.
A.scanf(“a=b=%d”,&a,&b);B.scanf(“a=%d,b=%f”,&m,&f);
C.scanf(“%3c”,c);D.scanf(“%5.2f”,&f);
20.执行scanf(“%d%c%f”,&a,&b,&c)语句,若输入1234a12f56则变量a,b,c的值为.
A.a=1234b=’a’c=12.56B.a=1b=’2’c=341256
C.a=1234b=’a’c=12.0D.a=1234b=’a12’c=56.0
21.执行scanf(“a=%d,b=%d”,&a,&b)语句,若要使变量a和b的值分别为3和4,则正确的输入方法为.
A.3,4B.a:
3b:
4C.a=3,b=4D.34
22.设b=1234,执行printf(“%%d@%d”,b)语句,输出结果为:
.
A.1234B.%1234C.%%d@1234D.%d@1234
23.下列程序的执行结果是.
main()
{charch=’a’;
printf(“%c\n”,ch);
printf(“%2c\n”,ch);
printf(“%3c\n”,ch);
}
供选择的答案是:
A.aB.caC.aD.a
a2caaaa
a3caaaaa
24.下列程序的执行结果是.
#include
main()
{inta=5;
floatx=3.14;
a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);
}
供选择的答案是:
A.62.800000B.62C.62.000000D.63.000000
25.若输入2.50,下列程序的执行结果是__________
main()
{floatr,area;
scanf(“%5.2f”,&r);
printf(“area=%f\n”,area=1/2*r*r);
}
A.0B.3.125C.3.13D.程序有错
26.下列程序的执行结果是__________
main()
{inta=b=c=0;
c=(a-=a-5),(a=b,b+5);
printf(“%d,%d,%d\n”,a,b,c);
}
A5,0,-10B.0,0,5C.–10,5,-10D.5,0,5
27.若x是int型变量,y是float型变量,所用scanf语句为scanf(“x=%d,y=%f”,&x,&y);
正确的输入操作是。
A.x=10,y=66.6<回车>B.1066.6<回车>
C.10<回车>66.6<回车>D.x=10<回车>y=66.6<回车>
28.设a,b均是int型变量,则以下不正确的函数调用为。
A.getchar()B.putchar(‘\108’);
C.scanf(“%d,%2d”,&a,&b);D.putchar(‘\’);
二、填空题
1.一个C源程序是由若干个函数构成,其中必须有一个是函数。
2.286用C语言八进制表示是。
3.21300用C语言十六进制表示是。
4.若x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4的值是。
5.C语言规定对所用到的变量要。
6.函数体由开始,由符号结束。
函数体的前面是部分,其后是部分。
7.在C语言中整数可用进制数、进制数和进制数三种数制表示。
8.将c中的小写字母转换成大写字母的表达式是。
9.将c中的数字字符码转换成对应的数字,可采用的方法是c=。
10.若a=3,b=3,x=3.5,y=2.5,则(float)(a+b)/2+(int)x%(int)y的值是。
11.表达式3.5+1/2的计算结果是:
。
12.若k为int整型变量且赋值11。
请写出运算k++后表达式得值a)和变量的值b)
13.若x为double型变量,请写出运算x=3.2,++x后表达式的值a)和变量的值b)
14.在C语言程序中,用关键字定义基本整型变量,用关键字定义单精度实型变量,用关键字定义双精度实型变量。
15.C程序中定义的一个变量,代表内存中的一个。
16.C语言的语句分为语句和语句两大类。
17.下列语句被执行后的执行结果是。
inta=1;
printf(“%d\\%s\\%s”,a,”abc”,”def”);
18.getchar()函数的作用是。
19.执行下列语句后,用户输入123456abc,则a的值为,b的值为,
c的值为。
main()
{inta,b;
charc;
scanf(“%3d%2d%3c”,&a,&b,&c)
}
20.下面程序的输出结果是。
#include
main()
{inti=10;
{/*inti=20;*/
i++;
printf(“%d”,i++);
}
printf(“%d\n”,i);
}
21.程序的三种基本结构是、、。
22.下面程序运行后,从键盘输入30,则程序的输出结果是。
main()
{inta;
scanf(”%d”,&a);
a++;
printf(“a=%d,Ha=%x,Oa=%o”,a,a,a);
}
23.执行(a=3.0+5,a*4),a+=-6;变量a及表达式的值分别为________________
24.数学表达式的C语言表达式为_______________________
25.若变量已经定义,要将a与b中的数进行交换,正确的语句组是_____________________________________________
三、判断题:
1.C源程序是由多个函数组成的,程序的执行是按书写顺序进行的。
()
2.一个C程序可以由一个文件组成,也可由若干文件组成。
()
3.C语言中,非0值作为true,0作为false;若表达式取得true值时,结果为1,取得false值时,为0。
()
4.为了确保表达式n/2的值为float型,可写成float(n/2)。
()
5.若有(float)x,则x变成float型变量。
()
6.若a=3,b=4,c=5,则d=!
(a%b)的值是0。
()
7.变量xx和XX是一样的。
()
8.C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
()
9.a是实型变量,进行赋值a=10,因此实型变量中允许存放整型值()
10.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式()
11.执行表达式a=b后,在内存中a和b存储单元中的原值都将被改变,a的值已由原来的改变为b的值,b的值由原来改变为0()
12.C程序由函数组成()
13.有a=3,b=5。
执行a=b,b=a后,已使a的值为5,b的值为3。
()
14.getchar()和scanf()均为输入函数,它们之间可通用,没有任何区别。
()
15.执行语句scanf(”%6.3f“,&a)后,输入123456可使a的值为123.456。
()
16.putchar()函数的作用是输出一串字符。
()
17.使用scanf()函数,在输入数据时,若遇非法输入则认为该数据输入结束。
()
18.在C中所用的变量必须先说明后使用()
19.在C程序中,运算符%仅能用于整型数的运算()
20.#include和#define不是C语句()
21.C程序的每一行结束都有一个”;”()
22.APH与aph分别表示不同的变量()
四、程序阅读题:
1.程序:
main()
{inta,b=68;
a=-3;
printf(“\ta=%d\n\tb=\’%c\’\n\”end\”\n”,a,b);
}
该程序的运行结果是:
2.程序:
main()
{inti,j;floata,b;charc;longm,n;
i=5;j=-3;
a=25.5;b=3.0;
m=a/b;n=m+i/j;
printf(“%d\n”,n);
}
该程序运行的结果是:
3.程序:
#include
#include
main()
{inta=1,b=4,c=2;
floatx=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf(“%f\n”,z);
}
该程序运行的结果是:
4.程序#include
main()
{intx;
x=-3+4*5-6;printf(“%d,\t”,x);
x=3+4%5-6;printf(“%d,\t”,x);
x=(7+6)%5%2;printf(“%d,\n”,x);
}
该程序运行的结果是:
5.下面程序运行后,若输入a=2,b=3结果是
main()
{floata,b,x1,x2;
scanf(“a=%f,b=%f“,&a,&b);
x1=a*b;
x2=a/b;
printf(“x1=%5.2f\nx2=%5.2f\n”,x1,x2);
}
6.下面程序运行结果是(已知‘A’的ASCII码为65)
#include
main()
{chard=’C’;
intc=68;
putchar(d);
putchar(c);
}
7.下面程序运行结果是
main()
{printf(“\ta\n”);
printf(“\t\b\’b\’\n”);
printf(“\t\b\\c\\\n”);
}
8.下面程序运行结果是
#include“stdio.h”
main()
{intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf(“%f\n”,x);
}
五、程序填空题
1.以下程序的功能是根据所输入半径值求圆面积,并输出面积值,请将程序补上必要的语句:
#define________________
main()
{floatr,s;
printf(“enteranumber_r:
”);
;
;
;
}
2.若输入10,20,30则程序的执行结果是20,30,10请填充程序。
#include“stdio.h”
main()
{inta,b,c;______________;
_________________;
_________;a=b;b=c;__________;
printf(“%d,%d,%d”,a,b,c);
}
3.以下程序不借助任何变量进行a与b的交换
#include“stdio.h”
main()
{inta,b;
printf(“Ïnputaandb”);
scanf(“%d,%d”,___________);
a+=_______;b=_______;a-=_______;
printf(“%d,%d\n”,a,b);
}
第三章流程控制
一、单项选择题:
1.两次运行下面的程序,如果从键盘上分别输入6和4,输出的结果是。
main()
{intx;
scanf(“%d”,&x);
if(x++>5)
printf(“%d”,x);
else
prinf(“%d\n”,x--);
}
2.设a为整型变量,不能正确表达数学关系:
10A.10C.a>10&&a<15D.!
(a<=10)&&!
(a>=15)
3.在以下一组运算符中,优先级最高的是。
A.<=B.=C.%D.&&
4.设a,b,c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是。
A.’a’&&’b’B.a<=bC.c||+c&&b-cD.!
((a
c||1)
5.在C语言的if语句中,用作判断的表达式为。
A.关系表达式B.逻辑表达式C.算术表达式D.任意表达式
6.在以下运算符中,优先级最高的运算符是。
A.<=B./C.!
=D.&&
7.假设所有变量均为整型,表达式(a=2,b=5,a>b?
a++:
b++,a+b)的值是:
。
A.7B.8C.9D.2
8.在C语言中,能代表逻辑值"真"的是。
A.trueB.大于0的数C.非0整数D.非0的数
9.在以下运算符中,优先级最高的运算符是。
A.!
B.=C.+D.||
10.逻辑运算符两侧运算对象的数据类型。
A.只能是0或1B.只能是0或非0正数
C.只能是整型或字符型数据D.可以是任何类型的数据
11.当执行以下程序段时,供选择的答案是___________。
x=-1;do{x=x*x;}while(!
x);
A.循环体将执行一次B.循环体将执行两次
C.循环体将执行无限次D.系统提示有语法错误
12.执行语句:
for(i=1;i++<4;);后,变量i的值,供选择的答案是___________。
A.3B.4C.5D.不定
13.以下for循环是:
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A.无限循环B.循环次数不变C.执行4次D.执行3次
14.若i,j已定义为int类型,则以下程序段中
for(i=5;i;i--)
for(j=0;j<4;j++){…}
内循环体的总的执行次数,供选择的答案是___________。
A.20B.24C.25D.30
15.执行下列程序段后,变量i的正确结果,供选择的答案是___________。
inti=10,j=0;
do{switch(i)
{case9:
i++;
case10:
i++;
case11:
i++;
defaut:
i++;
}
}while(j);
A.10B.11C.12D.13
16.若a,b均为int型变量,且a=100,则关于循环语句
for(b=100;a!
=b;++a,b++)printf(“---“);
的正确说法,供选择的答案是___________。
A.循环体只执行一次,B.是死循环,
C.循环体一次也不执行,D.输出---.
17.以下不正确的描述,供选择的答案是___________。
A.用while和do-while循环时,循环变量初绐化的操作应在循环语句之前完成;
B.while循环是先判断表达式,后执行循环语句;
C.do-while和for循环均是先执行循环体语句,后判断表达式;
D.for,while和do-while循环中的循环体均可以由空语句构成.
18.C语言中while和do-while循环的主要区别是
A.do-while的循环体至少无条件循环一次.
B.while的循环控制条件比do-while严格.
C.do-while允许从外部转到循环体内.
D.do-while的循环体不能是复合语句.
19.在下列选项中,没有构成死循环的程序段,供选择的答案是___________。
A.inti=100;B.for(;;);
while
(1)
{i=i%100+1;
if(i>100)break;
}
C.intk=1000;D.ints=36;
do{++k;}while(k>=10000);while(s);--s;
20.以下程序的输出结果是:
。
#include“stdio.h”
main()
{inti;
for(i=1;i<=5;i++)
{if(i%2)printf(“*”);
elsecontinue;
printf(“#”);
}
printf(“$\n”);
}
A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$
21.以下程序执行次
#include“stdio.h”
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
main()
{inti,n=0;
for(i=1;i<=NUM;i++){n++;printf(“%d”,n);}
printf(“\n”);
}
A.5B.6C.8D.9
二、填空题:
1.表示条件:
102.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为。
3.为表示关系xyz,应使用C语言表达式是。
4.表达式:
10!
=9的值是。
5.能正确表示a10或a0的关系表达式是。
6.若已知a=10,b=20,则表达式!
a
7.为了避免嵌套的条件语句if-else的二义性,C语言规定:
else与匹配。
8.C语言用表示逻辑“真”值。
9.当a=3,b=2,c=1时,表达式f=a>b>c的值是。
10.设y为int型变量,请写出描述“y是奇数”的表达式。
11.设x,y,z为int型变量,请写出描述“x或y中有一个小于z”的表达式。
12.已知a=7.5,b=2,c=3.6,表达式a>b&&c>a||a
c>b的值是。
13.while(x)表示while(x)。
14.break语句表示。
15.while
(1){…}表示。
16.执行for(i=1,s=0;i<=100;i++){s+=i;}后,s的值为。
17.程序:
i=1;s=0;
do{s=s+i;
i++;}while(i<=100);
用for语句改写上面的程序段为。
18.程序段:
for(i=1;i<=2;i++)
{scanf(“%d,%d”,&x,&y);
if(x>y){t=x;x=y;y=-t;}
printf(“%d%d”,x,y);
}
执行该程序段时,若键盘输入5,4回车及1,2回车,则输出结果为。
19.执行下列语句:
for(i=1,s=0;i<=2;i++)
for(j=1;j<=3;j++)
{s=s+i+j;}
后,s的值为。
20.执行下列语句:
scanf(“%c”,&ch);
while(ch!
=’#’)
{printf(“%c”,ch+1);scanf(“%c”,&ch);}
要使得输出结果为cdef,则输入为。
21.以下程序当键盘输入12345-1<回车>时,运行结果是:
#include“stdio.h”
main()
{intk=0,n;