C习题集Word文档格式.docx
《C习题集Word文档格式.docx》由会员分享,可在线阅读,更多相关《C习题集Word文档格式.docx(53页珍藏版)》请在冰豆网上搜索。
A)oxffB)0XabcC)0x11D)0x19
二、填空题
1. 若K为int整型变量且赋值11。
请写出运算K++后表达式的值A)____和变量的值 B)____。
2. 若X为double型变量,请写出运算x=3.2,++x后表达式的值A)____和变量的值 B)____。
3.函数体由符号____开始,用符号____结束。
函数体的前面是____部分,其后是____部分。
4.C语言中的标识符可分为____、____、和预定义标识符三类。
5.在C语言的程序中,用关键字____定义基本整型变量,用关键字____定义单精度实型变量,用关键字____定义双精度实型变量。
6.把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。
7.C程序中定义变量,代表内存中的一个____。
8.表达式3.5+1/2的计算结果是____。
9.对以下数学式,写出三个等价的C语言表达式____、____、____。
a*b
c
10.表达式s=10应当读做’’____’’.
11.计算机中内存储器的最小存储单位称____,基中能容纳的数是____。
12. 通常一个字节包含____8个二进制位。
在一个字节中能存放的最大(10进制)整数是____,它的二进制数的形式是____:
最小(十进制)整数是____,它的二进制数的形式是____。
13.当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是____、最小(十进制)整数是____,它的二进制数的形式是____。
14.在C语言中整数可用____进制数、____进制数、和____进制数三种数制表示。
三、上机改错题(读者最好在TURBOC环境下上机试一试,以便熟悉出错信息)。
1.请指出以下C程序的错误所在
#includestdio.h;
main();
/*mainfunction*/
floatr,s;
/*/*risradius*/,/*isareaofcircular*/*/
r=5.0;
s=3.14159*r*r;
printf(“%g\n”,s)
2.请指出以下C程序的错误所在
#includestdio.h;
/*mainfunction*/
{ floata,b,c,v;
/*a,b,caresides,visvolumeofcube*/
a=2.0;
b=3.0;
c=4.0
v=a*b*c:
printf(“%f\n”,v)
}
第四章最简单的C程序设计——顺序程序设计
一、选择题
1.若a,b,c,d都是int类型变量且初值为0,以下选项中不正确的赋值语句是
A)a=b=c=100;
B)d++;
C)c+b;
D)d=(c=22)-(b++);
2.以下选项中不是C语句的是
A){inti;
i++;
printf(“%d\n”,I);
}B);
C)a=5,c=10D){;
}
3.以下合法的C语言赋值语句是
A)a=b=58B)k=int(a+b);
C)a=58,b=58D)–i;
4.以下程序的输出结果是
A)0B)1C)3D)不确定的值
main()
{intx=10,y=3
printf(“%d\n”,y=x/y);
}
5.若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是
A)read(a,b,c);
B)scanf(“%d%d%d”,a,b,c);
C)scanf(“%D%D%D”,&
a,%b,%cD)scanf(“%d%d%d”,&
a,&
b,&
c);
6.若变量已正确说明为float类型,要通过以下赋值语句给a赋予10,b赋予22,c赋予33,以下不正确的输入形式是
A)10B)10.0,22.0,33.0C)10.0D)1022
2222.033.033
33
scanf(“%f%f%f,&
7.若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是
A)a=a+b,b=a-b,a=a-b;
B)t=a,a=b,b=t;
C)a=t;
t=b;
b=a;
D)t=b;
b=a;
a=t;
8.若变量已正确定义,以下程序段的输出结果是
A)输出格式说明与输出项不匹配,输出无定值 B)5.17
C)5.168 D)5.169
X=5.16894
Printf(“%f\n”,(int)(x*1000+0.5)/(float)1000):
9.若有以下程序段,c3中的值是
A)0B)1/2C)0.5D)1
Intcl=1,c2=2,c3;
c3=c1/c3;
10.若有以下程序段,其输出结果是
A)3,0,-10B)0,0,3C)-10,3,-10D)3,0,3
inta=0,b=0,c=0;
printf(“%d,%d,%d\n”,a,b,c);
11.当运行以下程序时,在键盘上从第一列开始输入9876543213210<CR>(此处<
cr>
代表enter)则程序的输出结果是
A)a=98,b=765,c=4321B)a=10,b=432,c=8765
C)a=98b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0
Main()
{inta;
floatb,c;
scanf(“%2d%3f%4f”,&
printf(“\na=%d,b=%f,c=%f\n”,a,b,c);
12.以下程序的输出结果是
A)a=%2,B=%5B)a=3,b=5
C)a=%%d,b=%%dD)a=%d,b=%d
{inta=2,b=5;
printf(“a=%%d,b=%%\n”,a,b);
13. 若int类型占两个字节,则以下程序段的输出是
A)-1,-1B)-1.32767C)-1.32769D)-1.65535
Inta=-1;
Printf(“%d,%u\n”,a,a);
14.以下程序段的输出是
A)*496*B)*496*C)00496D)输出格式符合法
Intx=496
Printf(“%d06d*\n”,x);
15.以下程序段的输出是
A)|3.1415|B)|3.0|C)|3|D)|3.|
Floata=3.1415;
Printf(“|%6.0f|\n”,a);
16.以下程序段的输出是
A)|2345.67800|B)|12345.6780|C)|12345.67800|D)|12345.678|
Printf(“|%10.5f|\n”,12345.678);
17.以下程序段的输出是
A)*0000057.66*B)*57.66*C)*0000057.67*D)*57.67*
Floata=57.666;
Printf(“*%010.2f*\n”,a);
18. 若从终端输入 以下数据,要给变量c赋以2.8319,则正确的输入语句是
A)scanf(“%f”,c);
B)scanf(“%8.14f”,&
C)scanf(“%6.2f”,&
D)scanf(“%8”,&
283.1900<
CR>
<
表示回车键
19.若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(u代表空格)
A)3.12uu9.0<
B)a=uu3.12b=uuu9<
C)a=3.12,b=9<
D)a=3.12uu,b=9uuuu<
Scanf(“a=%f,b=%f”,&
b);
20.以下程序的输出结果是
A)98B)89C)66D)以上三个都不对
#include“math.h”
{doublea=-3.0,b=2;
printf(“%3.0f%3.0f\n”,pow(b,fabs(a)),pow(fabs(a),b));
二、填空题
1. 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。
(1)_____
(2)_____(3)_______
intI=-200,j=2500;
printf(“
(1)%d%d,”I,i);
printf(“
(2)I=%d,j=%d\n”,I,j);
printf(“(3)I=%d\nj=%d\n”,I,j);
2. 变量I、j、k已定义为int类型并有初值0.,用以下语句进行输入时
scanf(“%d”,&
i);
scanf(“%d”,&
j);
k);
当执行第一个输入语句,从键盘输入:
12.3<
表示回车
则变量I、j、k的值分别是___、____、____。
3. 复合语句在语法上被认为是_____。
空语句的形式是___。
4. C语句的最后用__结束。
5. 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。
写出运行时给K输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式__、___、___。
Intk;
floata;
doublex;
Scanf(“%d%f%lf’,&
K,&
x);
Printf(“k=%d,a=%f,x=%f\n”,k,a,x);
6.以下程序段的输出结果是___。
Intx=0177
Printf(“x=%-3d,x=%6d,x=%6x,x=%6u\n”,x,x,x,x,x,);
7.以下程序段的输出结果是_____。
Printf(“x=%-3d,x=%6d,x=$%-06d,x=$%06d,x=%%06d\n”,x,x,x,x,x,);
8.以下程序段的输出结果是____。
Dublea=513.789215;
Printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\n”,a,a,a,a);
三、编程题和改错题
1. 以下程序多处有错。
要按下面指定的形式输入 数据和输出数据时,请对该程序做相应的修改
main
{doublea,b,c,s,v;
printf(inputa,b,c:
\n);
scanf(“%d%d%d”,a,b,c);
s=a*b;
v=a*b*c;
printf(“%d%d%d”,a,b,c);
printf(“s=%f\n”,s,”v=%d\n”,v);
当程序执行时,屏幕的显示和要求输入形式如下;
inputa,b,c:
1.02.03.0←此处的 2.0 2.0 3.0是用户输入的数据
a=2.000000,b=2.000000,c=3.000000←此处是要求输出形式
s=4.000000,v=12.000000
2.编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
3.编写程序,输入两个整数:
1500和350,求出它们的商数和余并进行输出。
4.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
5.编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的数给c,把c原来的值给a。
第五章选择结构程序设计
1.下列运算符中优先级最高的运算符是
A)!
B)% C)-= D)&&
2.下列运算符中优先级最低的运算符是
A)|| B)!
=C)<= D)+
3.为表示关系 x≥y≥z,应使用的C语言表达式是
A)(x>
=y)&
&
(y>
=z)B)(x>
=)AND(y>
=x)
C)(X>
=y>
=z)D)(x>
=z)
4.设a、b和c都是int型变量,且a=3,b=4,c=5;
则以下的表达式中,值为0的表达式是
A)a&
bB)a<
=bC)a||b+c&
b-cD)!
((a<
b)&
!
c||1)
5. 以下程序的输出结果是
A)0B)1C)2D)3
{inta=2,b=-1,c=2
if(a<
b)
if(b<
0)c=0;
elsec+=1;
printf("
%d\n"
c);
6.以下程序的输出结果是
A)1 B)2 C)3 D)4
{intw=4,x=3,y=2,z=1
(w<
x?
w:
z<
y?
z:
x));
7.若执行以下程序时从键盘上输入3和4,则输出结果是
A)14 B)16 C)18 D)20
{inta,b,s;
scanf("
%d%d"
&
s=a;
b)s=b;
s*=s;
s);
8.下面的程序片段所表示的数学函数关系是
-1(x<
0)1(x<
0)
A)y=0(x=0)B)y=-1(x=0)
1(x>
0)0(x>
0(x<
0)-1(x<
C)y=-1(x=0)D)y=1(x=0)
y=-1;
if(x!
=0)
if(x>
0)y=1;
elsey=0;
9.运行以下程序后,输出
A)####B)&
C)####&
D)有语法错不能通过编译
{intk=-3;
if(k<
=0)printf("
****\n"
)
elseprintf("
\n"
);
10.若a和b均是正整型变量,以下正确的switch语句是
A)switch(pow(a,2)+pow(b,2))(注:
调用求幂的数学函数)
{case1:
case3:
y=a+b:
break;
case0:
case5:
y=a-b;
B)switch(a*a+b*b);
{case3:
case1:
y=a+b;
y=b-a;
C)switcha
{default:
x=a+b;
case10:
case11:
x=a*b;
D)switch(a+b)
{case10:
x=a+b:
1.C语言中用__表示逻辑值"
真"
,用__表示逻辑值"
假"
.
2.C语言中的关系运算符按优先级别是__、__、__、__。
3.C语言中的逻辑运算符按优先级别是__、__、__。
4.C语言中的关系运算符和逻辑运算符的优先级别是__、__、__、__、__、__、__。
5.C语言中逻辑运算符__的优先级高于算术运算符。
6.将下列数学式改写成C语言的关系表达式或逻辑表达式A)__B)__。
A)a=b或a<
cB)|x|>
4
7.请写出以下程序的输出结果__。
{inta=100;
if(a>
100)printf("
a>
100);
a<
=100);
8.写出与以下表达式等价的表达式A)__B)__。
A)!
(x>
0)B)!
9.当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为__、__、__。
10.若变量已正确定义,以下语句段的输出结果是__。
x=0;
y=2;
z=3
switch(x)
{case0:
switch(y==2)
{case1:
printf("
*"
case2:
%"
case1:
switch(z)
$"
default:
#"
三、编程题
1.请将以下语句改写成switch语句。
if(a<
30)m=1;
elseif(a<
40)m=2;
50)m=3;
60)m=4;
elsem=5
2.编写程序,输入一位学生的生日(年:
y0、月:
m0、日:
d0);
并输入当前的日期(年:
y1、月:
m1、日:
d1);
输出该生的实足年龄。
3. 编写程序,输入一个整数,打印出它是奇数还是偶数。
4.编写程序,输入a、b、c三个数,打印出最大者。
5.有一函数:
x(-5<
x<
y=x-1(x=0)
x+1(0<
10)
编写一程序,要求输入x的值,输出y的值。
分别用
(1)不嵌套的if语句
(2)嵌套的if语句
(3)if_else语句 (4)switch语句
第六章循环控制
1.以下程序段的输出结果是
A)9B)1C)11D)10
Intk,j,s;
For(k=2;
k<
6;
k++,k++)
{s=1;
for(j=k;
j<
j++)s+=j;
printf(“%d\n”,m);
2.以下程序段的输出结果是
A)12 B) 15 C) 10 D) 9
IntI,j,m=0;
For(I=1;
I<
=15;
j+=4)m++;
Printf(“%d\n”,m);
3.以下程序段的输出结果是
A)10B)9C)10D)9
9898
8787
76
intn=10;
while(n>
7)
{n--;
print(“%d\n”,n):
4.以下程序段的输出结果是
A)1B)30C)1-2 D)死循环
Intx=3;
Do
{printf(“%3d\n”,x-2);
while(!
(--x));
5.以下程序的输出结果是
A)15B)14C)不确定D)0
{intI,sum;
for(I=1;
I++)sum+=sum;
printf(“%d\n”,sum);
6.以下程序的输出结果是
A)741B)852C)963D)875421
{inty=10;
for(;
y>
0;
y--)
if(y%3==0)
{printf(“%d”,--y);
continue;
7.若x是int型变量,以下程序段的输出结果是
A) **3 B) ##3C)##3D)**3##4
##4**3**4##5**5
**5##5
for(x=3;
x<
x++)
printf((x%2)?
(“**%d”);
(“##%d\n”),x);
8.以下程序的输出结果是
A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$
{intI;
=5;
I++);
elsecontinue;
printf(“#”);
printf(“#”);
9.以下几种叙述正确的是
A)do_while语句构成的循环不能用其它语句构成的循环来代替。
B)do_while语句构成的循环只能用break语句退出。
C)用do_while语句构成的循环时,只有在while后的表达式为非零时结束循环。
D)用do_while语句构成的循环时,只有在while后的表达式为零时结束循环。
10.以下程序的输出结果是
A)3981B)4284C)2668D)2870
{intx,I;
for(I=1;
=100;
I++)
{x=I;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)