第二章练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择题

1)C语言中运算对象必须是整型的运算符是(A)。

A .% B./ C.! D.* *

分析总结:“%”为取余运算符,要求左右两边的运算对象必须是整形数据。

“/”是除运算符,当左右两边的运算对象是整数时,结果也是整数,即产生整除效应。

2)若变量已正确定义并赋值,符合C语言语法的表达式是(B)。

A.a=a+7; B.a=7+b+c,a++

C.int(12.3%4) D.a=a+7=c+b

分析总结:注意题目中要求找的是表达式,而不是语句。所以A选项是错误的,首先排除。B选项是逗号表达式。C选项%的左边不是整数,错误。D选项赋值运算符的左边只能是变量不能使常量和表达式,所以也是错误的。

3)以下中叙述中正确的是(A)。

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

分析总结:A选项:a是实型变量,C允许进行赋值a=10,因C语言的灵活性,系统会自动的将10转换成10.0小数形式进行储存。课堂上讲过整型数据和实型数据的储存形态是不同的。B选项:赋值号左边只能是变量,从运算方向和存储上来理解。C选项:执行表达式a=b 后,在内存中a的值已由原值改变为b的值,b的值不变。D选项:已有a=3,b=5,执行表达式a=b,将变量b的值赋值给a变量,使a中的值为5,b中的值不变仍为5;执行第二个表达式b=a,将a变量的值5传递给b,所以最终结果a、b都为5。

4)若a,b,c,d都是int型变量且初值为0,以下选项中不正确的赋值表达式是(C)。A.a=b=c=100 B.d++

C.c+b D.d=(c=22)-(b++)

分析总结:注意语句和表达式的区别。赋值运算符的左边只能是变量,不能是常量或者表达式。

5)下列选项中不是C语句的是(C)。

A.{int i; i++; printf(“%d\n”,i);} B.;

C.a=5,c=10 D.{ ; }

分析总结:注意语句和表达式的区别。

6)合法的C语言赋值语句是(D)。

A.a=b=58 B.k=int(a+b);

C.a=58,b=58 D.- -i;

分析总结:强制转换符需加括号,即(int)(a+b)。而D选项- -i;等价于i=i-1;

7)有以下程序

#include

main()

{

int x=10,y=3;

printf("%d\n",y=x/y);

}

执行后的输出结果是(C)。

A.0 B.1 C.3 D.不确定的值

分析总结:整除

8)若变量已正确定义为int型,要给a,b,c输入数据,正确的输入语句是(D)。A.read(a,b,c);

B.scanf(“%d%d%d”,a,b,c);

C.scanf(“%D%D%D”,&a,%b,%c);

D.scanf(“%d%d%d”,&a,&b,&c);

分析总结:&取地址符一定不能忘记!

9)若变量a,b,t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是(C)

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;

10)若有正确定义语句

double x=5.16894;

语句printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);的输出结果是(D)。

A.输出格式说明与输出项不匹配,输出无定值

B.5.170000 C.5.168000 D.5.169000

分析总结:强制转化类型的书写格式为:(转换类型)(需转换的表达式或者常量)

11)若有以下程序段:

int c1=1,c2=2,c3;

c3=c1/c2;

printf(“%d\n”,c3);

执行后的输出结果是(A)。

A.0 B.1/2 C.0.5 D.1

12)若有以下程序段

int a=0,b=0,c=0;

c=(a-=a-5),(a=b,b+3);

printf(“%d,%d,%d\n”,a,b,c);

执行后的输出结果是(B)。

A.3,0,-10 B.0,0,5

C.-10,3,-10 D.3,0,3

分析总结:c=(a-=a-5),(a=b,b+3);是两个逗号表达式c=(a-=a-5)和(a=b,b+3)组成一个大的逗号表达式。

二、填空题

1)若k为int型变量且赋值11。请写出运算k++后表达式的值__11__和变量k的值__12___。

分析总结:自增自减运算符的要点是:无论是++i还是i++,变量i的值必然要增加一个。

表达式的取值按照从左往右的方向取值。

2)表达式s=10应当读做___将10赋值给变量s_________。

3)把a1,a2定义成双精度实型变量,并赋初值1的定义语句是_ double a1=1,a2=1;_ 。4)若x为double型变量,请写出运算x=3.2,++x后表达式的值__4.200000___和变量x的值__4.200000____。

5)若有以下定义,请写出以下程序段中输出语句执行后的输出结果__见图______。

int i=-200,j=2500;

printf("(1)%d,%d",i,j);

printf("(2)i=%d,j=%d\n",i,j);

printf("(3)i=%d\nj=%d\n",i,j);

6)变量i,j,k已定义为int类型并均有初值0,用以下语句进行输入时:

scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);

•从键盘输入:12.3

•则变量i,j,k的值分别是__12__,___0____,____0___。

分析总结:12.3的整数部分为12赋值给变量i,剩下0.3是小数无法赋值给%d类型的整型变量j,所以j和k变量的值仍然为初值0。

7)复合语句在语法上被认为是__一条语句____,空语句的形式是___;____。

8)C语句的最后用__;___结束。

三、编程题和改错题

1)更正后程序为:

#include

void main()

{

double a,b,c,s,v;

printf("input a,b,c:\n");

scanf("%lf%lf%lf",&a,&b,&c);

s=a*b;

v=a*b*c;

printf("%f %f %f\n",a,b,c);

printf("s=%f\n,v=%f\n",s,v);

}

分析总结:scanf和printf中的格式控制串%d,%f,%lf与数据类型int,float,double都需严格的一一对应。

相关文档
最新文档