资源描述
C程序设计练习题
C语言程序设计第1~3章练习题
一、选择题
1、一个C语言程序总是从____
A、主过程开始执行 B、主函数开始执行
C、子程序开始执行 D、主程序开始执行
2、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为_
A、4 B、16
C、32 D、52
3、下面四个选项中,均是C语言关键字的选项是____
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type
4、下面四个选项中,均是合法整型常量的选项是____
A、160 -0xffff 011 B、-0xcdf 01a 0xe
C、-01 986,012 0668 D、-0x48a 2e5 0x
5、下面四个选项中,均是合法浮点数的选项是___
A、+1e+1 5e-9.4 03e2
B、-.60 12e-4 -8e5
C、123e 1.2e-.4 +2e-1
D、-e3 .8e-4 5.e-0
6、下面四个选项中,均是合法转义字符的选项是____
A、'\'' '\\' '\n' B、'\' '\017' '\"'
C、'\018' '\f' 'xab' D、'\\0' '\101' 'xlf'
7、下面正确的字符常量是____
A、'\X17' B、'\80' C、'\\' D、"\n"
8、下面四个选项中,均是正确的八进制数和十六进制数的选项是____
A、-10 0x8f -011
B、0abc -017 0xc
C、010 -0x11 0xf1
D、0a12 -0x123 -0xa
9、下面四个选项中,均是正确的数值常量或字符常量的选项是____
A、0.0 0f 8.9e '&'
B、"a" 3.9E-2.5 1e1 '\"'
C、'3' 011 0xFF00 0a
D、+001 0xabcd 2e2 50.
10、若有代数式,则正确的C语言表达式是____
A、2*ln(x)*cos(x)/3*x
B、2*ln(x)*cos(x)/(3*x)
C、2*log(x)*cos(x)/3*x
D、2*log(x)*cos(x)/(3*x)
11、若有说明语句:char ch1='\065';char ch2="2";char ch3='2';则:ch1中____,ch2中____,ch3中____
A、包含1个字符 B、包含2个字符
C、包含3个字符 D、字符个数不确定,说明不正确
12、若有运算符:>、*=、?:、%、sizeof,则将它们按运算的优先级排列的正确次序为(由低至高)____
A、*=→?:→%→>→sizeof B、?: →*=→>→%→sizeof
C、*=→>→?: →sizeof→% D、*=→?: →>→%→sizeof
13、若有以下类型说明语句:char a; int b; float c; double d;
则表达式a*b+d-c的结果类型为____
A、float B、char C、int D、double
14、若有变量说明:int a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是____
A、a=9+b+c=a+9 B、a=9+b;c=a+9;
C、a=(9+b,b++) D、a=9+b++=a+7
15、已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为____
A、D B、68 C、一个不确定的值 D、C
16、以下运算符中优先级最高的运算符是____
A、&& B、++ C、?: D、!=
17、若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是___
A、2.500000 B、2.7500000
C、3.500000 D、0.000000
18、sizeof(float)是____
A、双精度型表达式 B、一个整型表达式
C、一个函数调用 D、一个不合法的表达式
19、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是____
A、y=(y*100+0.5)/100.0
B、x=y*100+0.5,y=x/100.0
C、y=y*100+0.5/100.0
D、y=(y/100+0.5)*100.0
20、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是____
A、0~255 B、0~65535
C、-32768~+32767 D、-256~+255
21、若有以下定义,则能得到值为3的表达式是____(int m=7,n=12)
A、n%=(m%=5) B、n%=(m-m%5)
C、n%=m-m%5 D、(n%=m)-(m%=5)
22、若有说明:int a=1,b=2,c=3,d=4;则表达式a<b?a:c<d?c:d的值是____
A、4 B、3 C、2 D、1
23、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是___,x的值是___
A、20 B、100 C、表达式不正确 D、45
24、putchar函数可以向终端输出一个____
A、整型变量值 B、实型变量值
C、字符串 D、字符或字符型变量值
25、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表空格)____
变量说明:float x1,x2;
数据的输入方式:4.52<回车>
3.5<回车>
A、scanf("%f,%f",&x1,&x2);
B、scanf("%f%f",&x1,&x2);
C、scanf("%3.2f└─┘%2.1f",&x1,&x2);
D、scanf("%3.2f%2.1f",&x1,&x2);
26、若运行以下程序时,从键盘输入25,13,10<回车>,则输出结果为____
main( )
{
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
printf("a1+a2+a3=%d\n",a1+a2+a3);
}
A、a1+a2+a3=48 B、a1+a2+a3=25
B、a1+a2+a3=10 D、不确定值
27、已知a、b、c为int类型变量,若有输入语句:scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是____
A、132<回车> B、a=1b=3c=2<回车>
C、1<回车>3<回车>2<回车> D、a=1<回车>b=3<回车>c=2<回车>
28、以下能正确定义整型变量x、y和z并为其赋初值5的语句是____
A、int x=y=z=5; B、int x,y,z=5;
C、int x=5,y=5,z=5; D、x=5,y=5,z=5;
29、执行下面程序段后,x的值是____
int x;
printf("%d\n",(x=3*5,x+5));
A、10 B、15 C、20 D、5
30、下面程序段的输出结果是____
int a=023;
printf("%d\n",--a);
A、23 B、17 C、18 D、24
31、已知ch是字符型变量,则不正确的赋值语句是____
A、ch=5+9; B、ch='\0';
C、ch='7'+'9'; D、ch='a+b';
32、设x,y是float型变量,则不正确的赋值语句是____
A、++x; B、y=int(5);
C、x*=y+1; D、x=y=0;
33、设有说明:double b=0.5,c=1.5; int a=10;
则正确使用了C语言库函数的赋值语句是____
A、c=asin(c)+fabs(a); B、b=log10(b)+pow(b);
C、c=sqrt(b-c); D、a=(int)(atan2((double)a,b)+exp(b-0.2));
34、以下程序段的输出结果是____
int i=1,j=4,k=2;
float x=5.5,y=9.0,z;
z=(i+j)/k+sqrt((double)y)*1.2/k+x;
printf("%f\n",z);
A、9.800000 B、9.300000
C、8.500000 D、8.000000
35、若a为int类型变量,则执行以下程序段后a的值为____
a=5;
a*=a/=a++;
A、2 B、1 C、40 D、3
36、若a和b均为int型变量,则执行以下程序断后x的输出是____
x=15;y=15;
printf("%d\n",x%=(y%=2));
A、0 B、1 C、6 C、12
37、若x为unsigned int类型变量,则执行以下程序段后x的值是____
x=65535;
printf("%d\n",x);
A、65535 B、1 C、无定值 D、-1
38、以下语句的执行结果是____
printf("%d\n",NULL);
A、1 B、0 C、-1 无定值
39、若x为int类型变量,则执行以下程序段后的输出结果是____
x=0xDEF;
printf("%4d,%4o,%4x\n",x,x,x);
A、3567,6757,def B、3567,6757,xdef
C、3567,06757,0xdef D、3567,6757,0def
40、若a、b、c均为int型变量,则执行以下程序段后的输出结果为____
b=(a=10,a+5,c=10);
printf("a=%d,b=%d,c=%d\n",a,b,c);
c=(a=10,b=5,a+b);
printf("a=%d,b=%d,c=%d\n",a,b,c);
A、a=10,b=15,c=10 B、a=10,b=10,c=10
a=10,b=5,c=10 a=10,b=5,c=10
C、a=10,b=10,c=10 D、a=10,b=10,c=10
a=10,b=5,c=15 a=10,b=5,c=5
41、若a1、a2、a3、a4均为char类型变量,则执行以下程序段后的输出结果为____
a1='1'; a2='2'; a3='3'; a4='4';
printf("%1c\n",a1);
printf("%2c\n",a2);
printf("%3c\n",a3);
printf("%4c\n",a4);
A、1 B、1 C、1 D、输出格式的描述符不正确
2 2 02
3 3 003
4 4 0004
42、执行语句printf("The program's name is c:\\tools\book.txt");后的输出是____
A、The program's name is c:tools book.txt
B、The program's name is c:\tools book.txt
C、The program's name is c:\\tools book.txt
D、The program's name is c:\toolook.txt
43、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:1234+123+12+1,正确的输入形式应当是____
scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d);
printf("%4d+%3d+%2d+%1d",a, b, c, d);
A、1234123121<回车> B、1234123412341234<回车>
C、1234+1234+1234+1234<回车> D、1234+123+12+1<回车>
44、设c1、c2均是char类型变量,则以下不正确的函数调用是____
A、scanf("c1=%cc2=%c",&c1,&c2); B、getchar( )
C、putchar(c2); D、putchar(c1,c2)
45、逻辑运算符两侧运算对象的数据____
A、只能是0或1 B、只能是0或非0正数
C、只能是整型或字符型数据 D、可以是任何类型的数据
46、判断char型变量c1是否为大写字母的正确表达式是____
A、'A'<=c1<='Z' B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z') D、('A'<=c1) AND ('Z'>=c1)
47、执行以下程序段后的a值是___,b的值是___,c的值是___
int a=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>x)&&(b=y>z);
A、0 B、6 C、1 D、5
48、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是____
A、'i'&&'j' B、i<=j
C、i||j+k&&j-k D、!((i<j)&&!k||1)
49、设ch是char类型变量,其值是A,则以下表达式的值是____
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
A、Z B、A C、a D、z
50、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是____
A、num%2==1 B、!(num%2==0)
C、!(num%2) D、num%2
二、填空题
1、C源程序的基本单位是____。
2、一个C语句中至少应包含一个____。
3、在C语言中,输入操作可以由库函数____完成,输出操作可以由库函数____完成。
4、若x是int型变量,且x=6,则表达式x%2+(x+1)%2的值为____。
5、若a、b、c均是int型变量,则执行表达式c=(a=5)-(b=2)+a后,c的值为____。
6、若有定义:int y=7; float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为____。
7、若采用十进制数的表示形式,则077为___,0111为___,0x29为___,0xab为___。
8、设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果类型为____。
9、若有说明int x=10,y=20;请写出下面各printf语句对应的输出结果。
①printf("%3d\n",x+y); ____
②printf("%3o\n",x*y); ____
③printf("%3o\n",x%y); ____
④printf("%3x\n",(x%y,x-y,x+y)); ____
10、设有以下变量说明:
int a=5,b=10;
float x=3.5,y=10.8;
char c1='A',c2='B';
请根据以下输出格式和结果,完成printf语句中的填空。
①a=5,b=10,x+y=14.3
printf("________",_____);
②x-y=-7.3└─┘a-b=-5
printf("________",_____);
③c1='A' or 65(ASCII) └─┘c2='B' or 66(ASCII)
printf("________",_____);
11、若有说明:
int a=123;
float b=456.78;
double c=-123.45678;
请写出以下各printf语句的输出结果。
①printf("%.3f%.3e%lf\n",b,b,c); _____
②printf("%8.3f%8.3e%g\n",b,b,c); _____
③printf("%u%-10.3f%-10.3e\n",a,b,c); ___
12、若a1和a2都是double型变量,且a1的初值为3.0,a2的初值为2.0,则表达式pow(a2,fabs(a1))的值为____。
13、假设变量x和y均为整型,以下语句可以不借助任何变量把x、y中的值进行交换。
请填空。
x+=__; y=x-__; x-=__;
14、已有定义int m; float n,k; char ch1,ch2;,为使m=3, n=6.5, k=12.6, ch1='a', ch2='A',对应的scanf语句是___________________,输入数据的方式是___________。
15、已有定义int a,b; float k;,为将-10赋给a,将12赋给b,410.34赋给k;则对应以下scanf语句的数据输入形式是________。
scanf("%o%x%e",&a,&b,&k);
16、在C语言中,&作为双目运算符时表示的是___,而作为单目运算符时表示的是__。
17、设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。
①、(x&&y)==(x||z) ____
②、!(x>y)+(y!=z)||(x+y)&&(y-z) ____
③、x++-y+(++z) ____
18、设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。
①、x或y中有一个小于z
__________________
②、x、y和z中只有两个为负数
__________________
③、y是奇数
__________________
19、以下程序的输出结果为____
main( )
{
int x,y,z=246;
x=z/100%9;
y=(-1)&&(-1);
printf("%d,%d\n",x,y);
}
C语言程序设计第4章练习题
一、选择题
51、以下正确的if语句是____
A、if (n>0) printf("%f",n)
printf("%f",-n);
B、if (n>0)
{ n=n+m; printf("%f",n); }
else printf("%f",-n);
C、if (n>0)
{ n=n+m; printf("%f",n); };
else printf("%f",-n);
D、if (n>0)
{ n=n+m; printf("%f",n) };
else printf("%f",-n);
52、以下程序____
main( )
{ int x1=3, x2=0, x3=0;
if(x1=x2+x3)
printf("* * * *");
else
printf("# # # #"); }
A、输出:* * * * B、输出:# # # #
C、存在语法错误 D、无输出结果
53、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与__
A、缩排位置相同的if配对 B、其之前最近且不带else的if配对
C、其之前最近的if配对 D、第一个if配对
54、若w、x、y、z、k均为int类型变量,则执行下面语句后的k的值是____
w=1; x=2; y=3; z=4;
k=(w<x)?w:x;
k=(k<y)?k:y;
k=(k<z)?k:z;
A、1 B、2 C、3 D、4
55、下面程序段所表示的数学函数关系是____
x=-1;
if (a!=0)
if (a>0) x=1;
else x=0;
-1 (a<0) 1 (a<0)
A、x= 0 (a=0) B、x= -1 (a=0)
1 (a>0) 0 (a>0)
0 (a<0) -1 (a<0)
C、x= -1 (a=0) D、x= 1 (a=0)
1 (a>0) 0 (a>0)
56、以下关于switch语句和break语句的描述中正确的是____
A、在switch语句中必须使用break语句
B、break语句只能用于switch语句体中
C、break语句只能用于循环语句中
D、在switch语句中使用break语句或continue语句的作用相同
57、设有说明:int a=1,b=0; 则执行以下语句后的输出结果是____
switch(a)
{ case 1:
switch(b)
{ case 0: printf("** 0 **\n"); break;
case 1: printf("** 1 **\n");break;
}
case 2: printf("** 2 **\n"); break;
}
A、** 0 ** B、** 0 **
** 2 **
C、** 0 ** D、switch语句中存在语法错误
** 1 **
** 2 **
58、设有程序段____
int x=10;
while (x=0)
x=x-1;
A、while循环执行10次 B、循环是无限循环
C、循环体语句一次也不执行 D、循环体语句只执行一次
59、语句while (!y)中的表达式 !y 等价于____
A、y==0 B、y!=1 C、y!=0 D、y==1
60、以下关于do-while循环不正确的描述是___
A、d0-while的循环体至少执行一次
B、do-while循环由do开始,用while结束,在while (表达式)后面不能写分号
C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D、do-while的循环体可以是复合语句
61、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____
for (y=100; x!=y; ++x,y++)
printf("****\n");
A、循环体只执行一次 B、是无限循环
C、循环体一次都不执行
D、for语句中存在语法错误
62、以下程序段中的do-while循环____
m=-1;
do
{ m=m*m;
}while(!m);
A、是死循环 B、执行二次 C、执行一次 D、有语法错误
63、以下关于for循环的正确描述是____
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
64、语句for (表达式1; ; 表达式3)等价于____
A、for (表达式1; 0 ; 表达式3)
B、for (表达式1; 1 ; 表达式3)
C、for (表达式1; 表达式1; 表达式3)
D、for (表达式1; 表达式3; 表达式3)
65、若k为整型变量,则以下for循环的执行次数是____
for (k=2; k==0; )
printf("%d",k--);
A、无限次 B、0次 C、1次 D、2次
66、以下程序段的执行结果是____
int x=-3;
do
{ printf("%d\n", x++);
}while(!x);
A、-3 D、-3
B、-2 -2
C、陷入死循环 -1
67、执行以下程序段后,y的值是____,x的值是____
int x=1, y=10;
do
{ y-=x;
x++;
}while(y--<0);
A、9 B、8 C、-2 D、2 E、4 F、3
68、执行以下程序段后a的值是____,b的值是____
int a, b;
for (b=1,a=1; b<=50; b++)
{ if (a>=10) break;
if (a%2==1)
{ a+=5;
continue;
}
a-=3; }
A、10 B、6 C、7 D、8 E、4
69、以下程序段的执行结果是____
int a, b;
for (a=1; a<5; a+=2)
{ for (b=1; b<5; b++)
printf("%2d",a*b);
if (b==5)
printf("\n");
}
A、 1 2 3 4 B、1 2 3 4
3 6 9 12 6 9 12 15
C、 2 3 4 6 9 12
D、 2 3 4
6 9 12
10 15 20
70、以下程序段中是死循环的是____
A、int n=1; B、int n=1;
while (!n) do { n--;
n++; }while(n);
C、int n=1; D、for (n=5; n<1; ) ;
do { n++;
}while(n);
71、下面程序的运行结果是____
main( )
{ int m=0;
while (m<=2)
{ m++;
printf("%d\n", m);
}
}
A、1 B、 1
2
C、1 D、1
2 2
3 3
4
72、以下能正确计算1×2×3×…×10的程序段是____
A、do B、do
{ k=1; n=1; { k=1; n=0;
n=n*k; n=n*k;
k++; k++;
}while(k<=10); }while(k<=10);
C、k=1; n=1; D、k=1; n=0;
do do
{ n=n*k; { n=n*k;
k++; k++;
}while(k<=10); }while(k<=10);
73、下面程序的功能是计算1至10之间的奇数之和以及偶数之和。请选择填空。
main( )
{ int x, y, z, k;
x=z=0;
for (k=0; k<=10; k+=2)
{ x+=k;
________;
z+=y;
}
printf("偶数之和 = %d\n", x);
printf("奇数之和 =%d\n", ________);
}
①、A、y=k-- B、y=k+1 C、y=k++ D、y=k-1
②、A、z-10 B、z C、z-11 D、z-y
74、下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。
(提示:只要算出1000!中含有因数5的个数即可。)
for (m=0,n=5; n<=1000; n+=5)
{ t=n;
while (________)
{ m++; t=t/5; }
}
A、t%5 B、t=t%5==0 C、t%5==0 D、t%5!=0
75、若有以下程序段:
for (m=1; m<=100; m++)
{ scanf("%d", &y);
if (y<0)
continue;
printf("%3d", m); }
正确的描述是____
A、当y<0时整个循环结束
B、y>=0时什么也不输出
C、printf函数永远也不执行
D、最多允许输出100个非负整数
76、以下程序段等价于____
for (k=100; k<=200; k++)
{ if (k%3==0)
continue;
printf("%4d", k);
}
A、for (k=100; (k%3)&&k<=200; k++)
printf("%4d", k);
B、for (k=100; (k%3)||k<=200; k++)
printf("%4d", k);
C、for (k=100; k<=200; k++)
if (k%3!=0) printf("%4d", k);
D、for (k=100; k<=200; k++)
{ if (k%3)
printf("%4d", k);
else
continue;
break;
}
二、填空题
20、以下程序的功能是:输入三个整数n1、n2、n3,按从大到小的顺序进行输出。请填空。
main( )
{ int n1, n2, n3, temp;
scanf("%d%d%d", &n1, &n2, &n3);
if (______)
{ temp=n2; n2=n3; n3=temp; }
if (______)
{ temp=n1; n1=n2; n2=temp; }
printf("%d, %d, %d\n", n1, n2, n3);
}
21、以下程序的功能是:输入一个小写字母,按字母排列顺序后移5个位置后输出(如把'a'变为'f', 'w'变成'b')。请填空。
#include "stdio.h"
main( )
{ char c1;
c1=getchar( );
if (c1>='a' && c1<='u')
______;
else if (c1>='v' && c1<='z')
______;
putchar(c1);
}
22、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请填空。
main( )
{ char ch1;
scanf("%c", ch1);
if (________________)
ch1=ch1+32;
else if (ch1>='a' && ch1<='z')
________;
printf("%c", ch1);
}
23、阅读下面的程序并回答问题。
main( )
{ int m, n, x, y;
scanf("%d, %d", &x, &y);
m=1;
n=1;
if (x>0)
m=m+1;
if (x>y)
n=m+n;
else if (x==y)
n=5;
else
n=2*m;
printf("m=%d, n=%d", m, n); }
问题:为了使输出n=4,x的输入值应当为______,y的输入值应当为____。
24、以下程序的功能是:根据输入的三条边的值判断是否能组成三角形,若能组成则输出三角形的面积和三角形的类型。请填空。
展开阅读全文