昆明理工大学C语言程序设计课后习题答案 下载本文

A.浮点数在存储时存在舍入误差

B.程序设计时,不能直接对两个浮点型数据进行相等比较

C.将一个很小的浮点数和一个很大的浮点数进行相加,结果可能不正确 D.C语言中的浮点型变量有float和double两种

43.若ch为字符型变量,则不能使ch表示字符'B'的语句是__________。

A.ch=B; B.ch=66; C.ch='\\102'; D.ch='\\x42'; 44.以下程序运行后的输出结果是_________。

#include \int f(int x,int y) { return 2*x+y; } void main()

{ int a=3,b=2,t=0; t= f(b,a);

printf(\ A. 0 B. 5 C. 7 D. 8 45.以下程序运行后的输出结果是_________。

#include \void main() { char ch='a'; int x=5;

float s=2.5F;

printf(\A.1,2,4 B.1,4,4 C.1,4,8 D.a,5,2.5 (三)、编程题

1.已知长方形的长和宽分别为x和y,计算其周长和面积。

2.编写一个程序,其功能为:从键盘上输入两个整型数据,分别存放在整型变量a和b中,然后输出表达式a/b和a%b的值。

3.编写一个程序,其功能为:从键盘上输入一个浮点数,然后分别输出该数的整数部分和小数部分。

4.编写一个程序,其功能为:从键盘上输入一个小写字母,显示这个小写字母及它所对应的大写字母以及它们的ASCII码值。 提示:大写字母A~Z的ASCII码值为65~90,小写字母a~z的ASCII码值为97~122。可见,对应的大小写字母的ASCII码值相差32,所以大写字母转换成小写字母就是将其ASCII值加上32,小写字母转换成大写字母就是将其ASCII值减去32。

5.输入一个华氏温度F,根据公式c=5(F-32)/9计算输出对应的摄氏温度。要求:输入要有提示,输出要有说明。

第2章顺序结构

二、习题 (一)是非题

1.表达式1/4+2.75的值是3。

A.对 B.错

2.C语言中浮点型变量可以进行自增或自减操作。

A.对 B.错

3.如果整型变量a、b、c已经正确定义,那么c=b=a=012是一个正确的表达式。

A.对 B.错

4.算术运算符和赋值运算符的结合方向均由左自右。

A.对 B.错

5.在进行赋值转换时,变量的类型被自动转换为赋值号右边的表达式值的类型。

A.对 B.错

6.语句char c=\定义了字符型变量c,并将其初始化为A。

A.对 B.错

7.运算符“%”的操作数不允许为单精度和双精度浮点型,允许为字符型和整型。

A.对 B.错

8. 运算符++的优先级高于运算符+。

A.对 B.错

9.逗号运算符的求值顺序是从左到右的,逗号表达式的值为第一个表达式的值。

A.对 B.错

10.“=”运算符用于判断两个数是否相等。

A.对 B.错

11.C语言本身不提供输入输出语句,但可以通过输入输出函数来实现数据的输入输出。

A.对 B.错

12.在使用函数scanf输入数据时必须与函数参数指定的输入格式一致。

A.对 B.错

13.getchar()函数用于输入单个字符,putchar()函数用于输出单个字符。

A.对 B.错

14.123、029、-0xEFF均是合法的整型常量。

A.对 B.错 15.假定已有定义char c;,sizeof c中的sizeof是容量运算符,而sizeof(char)中由于使用了括号形式,称为容量函数。 A.对 B.错

16.假定已有整型变量x的定义,则(x+1)++是一个合法的表达式。

A.对 B.错

17.假定已有整型变量初始化语句int x=2;,那么表达式x++,x *=2+1的值为9。

A.对 B.错

18.假定已有变量定义语句:int m=3,n=2;,那么(float)(m/n)表达式的值是1.5。

A.对 B.错

19.C语言中,表达式1/2*2的值为0。

A.对 B.错

20.若scanf函数的格式说明中有一个空格,在输入时也一定要在对应位置输入一个空格。

A.对 B.错 (二)选择题

1.数字字符0的ASCII值为48,则以下程序运行后的输出结果是______。

#include

main()

{ char a='1',b='2';printf(\A.3,2 B.50,2 C.2,2 D.2,50

2.以下程序运行后的输出结果是______。 #include main()

{ int m=12,n=34;

printf(\ printf(\

A.12353514 B.12353513 C.12343514 D.12343513

3.若整型变量a、b、c、d中的值依次为1、2、3、4。则表达式a+b/d*c的值是______。 A.1 B.2.5 C.0.25 D.2

4.以下程序运行后的输出结果是______。 #include main()

{ int a,b,c;

a=10; b=20; c= a%b+a/b;

printf(\

A.10200 B.10 20 10 C.102011 D.10 20 1

5.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错,出错的原因是______。 #include main()

{ int r; float s; scanf(\s=*p*r*r;

printf(\

A.注释语句书写位置错误B.存放圆半径的变量r不应该定义为整型

C.s=*p*r*r;语句中使用了非法变量 D.输出语句中格式描述符非法

6.设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是______。 A.k=k+=k B.-k++ C.k%int(f)D.f=k%m

7.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是______。 A.a%b%c B.a/b/cC.a=b=c D.a,b,c

8.有以下程序段:int k=0,a=1,b=2,c=3; k=a+=b-=c;,执行该程序段后,k的值是______。 A.0 B.1 C.2 D.3

9.以下程序运行后的输出结果是______。

#include main()

{ char c; int n=100; float f=10; double x; x=f*=n/=(c=50);

printf(\A.2 20 B.2 20.000000 C.100 10 D.50 10.000000

10.已知字母A的ASCII码为65,则以下程序运行后的输出结果是 ______。

#include main() { char a,b;

a='A'+'5'-'3';b=a+'6'-'2'; printf(\

A.6771 B.67G C.CG D.C71

11.表达式3.6-5/2+1.2+5%2的值是______。 A.3.3 B.3.8 C.4.3 D.4.8

12.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是________。 A.++x,y=x-- B.x+1=yC.x=x+10=x+y D.double(x)/10 13.以下程序运行后的输出结果是________。 #include main()

{ int x,y,z; x=y=1;

z=x++,y++,++y;

printf(\A.2,3,3 B.2,3,2 C.2,3,1 D.2,2,1

14.以下选项中,值为1的表达式是________。 A.1-'0'B.1-'\\0' C. '1'-0 D. '\\0'-'0'

15.设有定义:intk=0;,以下选项的________与其他三个表达式的值不相同。 A.k++ B.k+=1 C.++k D.k+1

16.执行以下程序后的输出结果是________。

#include main() { inta=10; a=(3*5,a+4);

printf(\

A.a=10 B.a=14 C.a=15 D.a=19

17.若变量均已正确定义并赋值,以下合法的C语言赋值语句是________。 A.x=y=5; B.x=n%2.5; C.x+n=i; D.x=5=4+1;

18.设变量已经正确定义并赋值,以下正确的表达式是________。 A.x=y*5=x+z B.int(15.8%5)C.x=y+z*5,++yD.x=25%5.0

19.以下不能正确表示代数式2ab/cd的C语言表达式是________。 A.2*a*b/c/d B.a*b/c/d*2 C.a/c/d*b*2 D.2*a*b/c*d

20.设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式________。 A.a=a-a+b B.a-a=b C.a=a-(a+b) D.a=-a+b

21.设有定义:int x=2;,以下表达式中,值不为6的是________。

A.x*=x+1 B.x++,2*x C.x*=(1+x) D.2*x,x+=2 22.表达式(int)((double)9/2)-(9)%2的值是________。 A.0 B.3 C.4 D.5

23.若有定义 intx=10;,则表达式x-=x+x的值为________。

A.-20 B.-10 C.0 D.10

24.若有定义double a=22;int i=0,k=18;,则以下有错的语句是________。

A.a=a++,i++; B.i=(a+k)/(k-i);C.i=a; D.i=!a; 25.以下程序运行后的结果是________。 #include main()

{ int a=2,b=2,c=2; printf(\A.0 B.1 C.2 D.3

26.若有定义int a;long b; double x,y;,则以下选项中正确的表达式是________。 A.a%(int)(x-y) B.a=b=x,y; C.(a*y)%b D.y=x+y=x 27.表达式a+=a-=a=9的值是________。 A.-9 B.0 C.9 D.18

28.若有定义int a=3,b=2,c=1;,以下选项中错误的赋值表达式是________。 A.a=(b=4)=3 B.a=b=c+1; C.a=(b=4)+c;D.a=1+(b=c=4); 29.若有定义int x=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为________。 A.1 B.1.9 C.2 D.2.4

30.以下程序运行后输出的结果是________。 #include main()

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

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

printf(\A.0,4,5 B.4,4,5 C.4,4,4 D.0,0,0

31.设变量均已正确定义并且赋值,以下与其他三组输出结果不同的一组语句是________。 A.x++; printf(\C.++x; printf(\D.n=x++; printf(\32.以下程序运行后输出的结果是________。 #include main()

{inta=1,b=0; printf(\A.0,0 B.1,0 C.3,2 D.1,2

33.以下程序运行后输出的结果是________。 #include

main(){ int k=011; printf(\A.12 B.11 C.10 D.9 34.有以下程序:

#include main()

{ int m,n,p;

scanf(\printf(\

若想使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。 A.m=123n=456p=789 B.123,456,789 C.m=123,n=456,p=789 D.123 456 789 35.以下程序运行后输出的结果是________。 #include