C语言基本数据类型及运算题库

更新时间:2023-09-13 23:26:01 阅读量: 教学研究 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 基本数据类型及运算

一、选择题

1. 若以下选项中的变量已正确定义,则正确的赋值语句是 。

A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3; 答案:C

2. 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是 。

A) x=x*100+0.5/100.0 B) x=(x*100+0.5)/100.0 C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0 答案:C

3. 下列C语言中运算对象必须是整型的运算符是 。

A) %= B) / C) = D) *= 答案:A

4. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是 。

A) 0 B) 0.5 C) 1 D) 2 答案:A

5. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是 。

A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 答案:D

6. 下列变量定义中合法的是 。

A)short_a=1-.le-1; B)double b=1+5e2.5; C)long do=0xfdaL; D)float 2_and=1-e-3; 答案:A

7. 以下4个选项中,不能被看作是一条语句的是 。

A) {;} B) a=0,b=0,c=0;

C) if (a>0); D) if (b==0)m=1;n=2; 答案:D

8. 设x=1,y=-1,下列表达式中解为8的是 。

A)x&y B)~x│x C)x^x D)x<<=3 答案:D

9. 在C语言中不合法的整数是 。

A)20 B)0x4001 C)08 D)0x12ed 答案: C

10. 以下选项中不正确的实型常量是

A)2.607E-1 B)0.8103e0.2 C)-77.77 D)456e –2 答案:B)

11.若变量已正确定义并赋值,符合C语言语法的表达式是

A)a=a+7 B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B)

12.以下十六进制数中不合法的是

A)oxff B)0Xabc C)0x11 D)0x19

答案:A)

13. 设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ik)&&(c=i,j,k)后,c值是 。

A)0 B)1 C)2 D)3 答案:D

14. 下列程序的运行结果是 。

# include “stdio.h” void main( ) { int i=23; do{++i;} while(i);

printf(“%d”,i); }

A)23 B)24 C)死循环 D)无任何结果 答案:C

15.设int a=3,b=4,c=5;,下列表达式的值不为1的是 。

A)a+b>c&&b==c B)a||b+c&&b-c C)!(a>b)&&!c||1 D)!(a+b)+c-1&&b+c/2 答案:A

16.下列不合法的常量是: 。

(1)’?’ (2)’abc’ (3)”Turbo c” (4)’\\0x32’ (5)’\\123’ (6)’’’’ (7)”△” (8)’△’ (9)”\\\\\\” (10)’’a’’’ (11)’\\\\’ (12)’\\0123’(13)’\\xaf’ (14)’王’ (15)”李为民”

(16)”\\xaif” 答案:(2),(12),(14),(16)

17. 下列运算符中,结合方向为自左向右的是( )。

(A)?: (B), (C)+ = (D)+ + 答案:(B)

18. 若有float x;则sizeof (x)和sizeof (float)两种描述( )。

(A)都正确 (B)都不正确 (C)前者正确 (D)后者正确 答案:(A)

19. 有整型变量x,单精度变量y=5.5,表达式x=(float)(y*3+((int)y)%4)执行后,x的值为( )。

(A)17 (B)17.500000 (C)17.5 (D)16 答案:(A)

20. 若给定条件表达式(M)?(a++):(a--),则其中表达式(M) 。

A.和(M==0)等价 B.和(M==1)等价 C.和(M!=0)等价 D.和(M!=1)等价 答案:C

21. 已知float x=1,y;则y=++x*++x的结果是 。

A.y=9 B.y=6 C.y=1 D.表达式是错误的 答案:D

22. 以下程序的输出结果是 。

short i=65535; printf (\

A.65535 B.0 C.语法错误,无输出结果 D.-1 答案:D

23.有变量说明语句int a,b ,c;,顺序执行下面语句: a=b=c=1;

++a||++b&&++c;

那么,变量b的值应是( )

A.2 B.1 C.0 D.3 答案:B

24. 有变量说明int a=3;,则表达式a<1&&--a>1的运算结果和a的值应该是( )

A.0和2 B.0和3 C.1和2 D.1和3 答案:B

25. 以下程序的输出为 。

#include void main( ) {

double x=213.82631; printf(\}

A.213.82 B.21.38e+01 C.2.14e+02 D.-2.14e2 答案:C

26. 下列关于单目运算符+ +、- -的叙述中正确的是 。

A)它们的运算对象可以是任何变量和常量

B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D)它们的运算对象可以是char型变量、int型变量和float型变量 答案:D

27. 有以下程序:

#include void main ( ) {

char a,b,c,*d; a='\\';b='\\xbc';

c='\\0xab';d=\

printf (\}

编译时出现错误,以下叙述中正确的是 。 A)程序中只有“a='\\';”语句不正确 B)“b='\\xbc';”语句不正确

C)“d=\”语句不正确 D)“a='\\';”和“c='\\0xab';”语句都不正确 答案:D

28. 有以下程序:

#include void main ( ) {

int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a

程序运行后的输出结果是 。

A)0,0 B)0,1 C)1,0 D)1,1 答案:C

29. 已定义ch为字符型变量,下列赋值语句中错误的是 。

A)ch='\\'; B)ch=62+3; C)ch=NULL; D)ch='\\xaa'; 答案:A

30. 以下4个选项中,不能看作一条语句的是 。

A){;} B)a=0,b=0,c=0;

C)if (a>0); D)if (b= =0)m=1;n=2; 答案:D

31. 假定有以下变量定义,则能使值为3的表达式是 。

int k=7,x=12;

A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 答案:D

32. 以下程序的输出结果是 。

#include void main( ) {

int x=3,y=2,z=1;

printf (\ printf (\}

A)x/y&z=0 B)x/y&z=1 x^y&~z =0 x^y&~z =0 C)s=x/y&z=0 D)x/y&z=1 s=x^y&~z =1 x^y&~z =1

答案:D

33. 设有“int x=11;”则表达式(x++*1/3)的值是 。

A)3 B)4 C)11 D)12 答案:A

34. 若有语句scanf(”%d %c%f”,&a,&b,&c),假设输入序列为2223a123o.12,a、b、c的值为 。

A)无值 B)2223,a,123o.12 C)2223,a,无 D)2223,a,123 答案:D

35. 下列描述中,正确的一条是 。

A)C语言的整型变量可以分为int 、short、long、unsigned int、unsigned short、unsigned long等几种类型,因此整型常量也可以分为这几种类型

B)C语言的字符数据与整型数据可以互相赋值 C)若对字符型变量的定义为:“char c;”可使用语句c=“a”对变量c赋值 D)已知x为float型,执行语句(int)x后,x为int型 答案:B

36. 设“int x=1,y=1;”,表达式(!x‖y--)的值是 。

A)0 B)1 C)2 D)-1 答案:B

37. 执行x=5>1+2&&2||2*4<4-!0后,x的值为 。

A)-1 B)0 C)1 D)5 答案:C

38. 语句“printf (\”的输出结果是 。

A)无输出 B)结果不确定 C)-1 D)1 答案:D

39. 设a=2、b=3、c=4,则表达式a+b>c&&b= =c&&a||b+c&&b+c的值为 。

A)5 B)8 C)0 D)1 答案:D

40. 执行语句scanf (“%c%c%c”,&c1,&c2,&c3),输入abc时,变量c1、c2、c3的值分别为 。

A)'a', 'b', 'c' B)'a','b', '' C)'a', '', 'b' D)'a','','c' 答案:A

41. 若有以下定义:

int a=10,b=9,c=8;

顺序执行下列语句后,变量b中的值是 。 c=(a -= (b-5)); c=(a)+(b=3);

A)3 B)8 C)9 D)10 答案:A

42. 有以下程序段:

int m=0,n=0;char c='a'; scanf(\,&m,&c,&n); printf(\

若从键盘上输入:10A10<回车键>,则输出结果是 。

A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0 答案:A

43. 已定义c为字符型变量,则下列语句中正确的是 。

A)c='97 ' B)c=“97 “ C)c=97 D)c=“a” 答案:C

44. 若有以下变量说明和数据的输入方式,则正确的输入语句为( )。

变量说明:float x1,x2; 输入方式:4.52<回车> 3.5<回车>

A)scanf (“%f,%f”,&x1,&x2); B)scnaf (“%f%f”,&x1,&x2);

C)scanf (“%3.2f %2.1f”,&x1,&x2); D)scnaf (“%3.2f%2.1f”,&x1,&x2); 答案:B

45. 若有程序段:

for (m=1;m<=100;m++) {

scanf(\ if(y<0) continue; printf(\}

正确的描述是( )。

A)当y<0时整个循环结束 B)y>=0时什么也不输出

C)printf函数永远也不执行 D)最多允许输出100个非负整数 答案:D

46. 下面程序的运行结果是( )。

#include #define DATA 20+7 void main( )

{

printf(\}

A)DATA=22 B)DATA=21 C)DATA=9 D)以上都不对 答案:A

47. sizeof(float)是( )。

A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式 答案:B

48. 设有语句

int a=5,b=6,c=7,d=8,x=2,y=2,n; n=(x=ad&&b>c)); 则执行完上述语句后n的值为( )。 A)1 B)2 C)3 D)0 答案:D

49. 设c1,c2均是字符型变量,则以下不正确的函数调用为( )。

A)scanf(“c1=ì2=%c”,&c1,&c2); B)c1=getchar( ); C)putchar(c2); D)putchar(c1,c2); 答案:D

50. 有定义如下:

char str1[50],str2[20],ch; 则下列语句中正确的是( )。

A)str1={“Crazy”}; B)str1={“Crazy”}; str2=str1; str2={“English”}; strcpy(str1,str2); C)ch=“xy”; D)ch='x'; 答案:D

51. 有以下定义语句:

double a,b; int w; long c;

若各变量已正确赋值,则下列选项中正确的表达式是( )。 A)a=a+b=b++ B)w%((int)a+b) C)(c+w)%(int)a D)w=a=b 答案:C

52. 有以下程序:

#include void main( ) {

int i=0,s=0; for(; ;) {

if(i==3||i==5)continue; if(i==6) break; i++; s+=i; };

printf(\}

程序运行后的输出结果是( )。

A)10 B)13 C)21 D)程序进入死循环 答案:D

53. 以下选项中可以作为C语言中合法整数的是 。

(A)10110B (B)0386 (C)0Xffa (D)x2a2 答案:C

54.以下选项中可作为C语言合法常量的是 。

(A)-80. (B)-080 (C)-8e1.0 (D)-80.0e 答案:A

55.若a为整型变量,则以下语句 。

a=-2L;printf(“%d\\n”,a);

(A)赋值不合法 (B)输出值为-2 (C)输出为不确定值 (D)输出值为2 答案:B

56.若有以下程序:

#include void main( )

{ int k=2,i=2,m; m=(k+=i*=k);

printf(\}

执行后的输出结果是 。

(A)8, 6 (B)8 ,3 (C)6, 4 (D)7, 4 答案:C

57. 以下非法的赋值语句是 。

(A)n=(i+2,i++); (B)j++; (C)++(i+1); (D)x=j>0 答案:C

58. 有以下程序

#include

void main( )

{ int x=102,y=012;

printf(“-,-\\n”,x,y); }

执行后输出结果是 。

(A)10,01 (B)02,12 (C)102,10 (D)02,10 答案:C

59. 以下程序输出的结果是 。

#include void main( ) {

printf(\ printf(\}

(A)*a=chinazhongguo* (B)*a=chinazhongguo* b=**chi* *b=chi *

(C)*a=* chinabeijing* (D)*a= chinazhongguo* *b=chi* *b=chi * 答案:D

60. 若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

(A)1 (B)2 (C)3 (D)4 答案:A

61. 设有定义:int x=1,y=-1;。则语句“printf(“%d\\n”,(x- -&&++y);”的输出结果是 。

(A)1 (B)0 (C)-1 (D)2 答案:B

62. 若变量a是int类型,并执行了语句:a= ' A ' +1.6;,则正确的叙述是 。

(A)a的值是字符C (B)a的值是浮点型

(C)不允许字符型和浮点型相加 (D)a的值是字符'A'的ASCII值加上1 答案:D

63. 有一下程序

#include void main() {

int x=3,y=2,z=1;

printf(\}

程序运行后的输出结果是 。

(A)3 (B)2 (C)-1 (D)0 答案:D

64. 表达式x

(A)~,&,<,|| (B)~,||,—,> (C)~,&,|| , < (D)~,<,&,|| 答案:D

65. 整型变量x和y的值相等,且均为非0值,则以下选项中,结果为0的表达式是 。

(A)x||y (B)x|y (C)x & y (D)x^y 答案:D

66. 在下列符号中,不属于转义字符的是 。

(A)\\ (B)\\x12 (C)\\013 (D)\\05 答案:A

67. 若有以下定义:intx,y;char a,b,c;并有以下输入数据(此处?代表空格):

1?2 A?B?C

则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是 。

(A)scanf (\(B)scanf (\(C)scanf (\(D)scanf (\答案:D

68. 语句:printf(\的输出为 。

(A)004,5 (B)004,5

(C)4,5 (D)4,5 答案:A

69. 若有以下程序段:

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

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

printf(\,%d,%d\\n\其输出结果是

A)3,0,-10 B)0,0,5 C)-10,3,-10 D)3,0,3 答案:B)

70. 若有以下程序段:

#include void main() {

#include void main( ) {

char c1, c2; int n1, n2;

c1 = getchar(); c2 = getchar();

n1= c1 - '0'; n2 = n1*10 + (c2 - '0'); printf (\}

若输入48,则运行结果是: 答案:48

22.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main( ) {

char c; int n=100; float f=10; double x;

x=f*=n/=(c=50);

printf(\}

运行结果: 答案:

2 20.000000

23.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main( ) {

int a,b,c;

a=10; b=20; c=(a%b<1)||(a/b>1); printf(\}

运行结果:

10 20 0

24.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int x=0210;

printf(\

}

运行结果: 答案:88

25.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

已知字母A的ASCII码为65。以下程序运行后的输出结果是______。 #include void main() {

char a, b;

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

运行结果: 答案:67 G

26.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是______。

#include void main() {

char a,b; a=getchar(); scanf(\ a=a-'A'+'0';b=b*2; printf(\}

运行结果: 答案:1 B 27.

四、编程题

1. 编写程序,读入3个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

【分析与解答】

(1)定义4个双精度变量a、b、c和ave,变量a、b、c分别存放读入的3个双精度数,ave存放它们的平均值。

(2)设计输入语句,以及在此之前用于提示输入的(printf)语句。 (3)设计求平均值的算法,把所求得平均值放入变量ave中。

(4)设计把变量ave中的数,从小数点后第二位数进行四舍五入的算法。现举例说明:若ave中的数为123.4644,为了保留此值小数点后一位,可用表达式:(int)(123.4644*10)/10.0;依次推算,为了保留此值小数点后二位,可用表达式:(int)(123.4644*100)/100.0;其他依次类推。

(5)若要求对小数点后第二位数进行四舍五入,则可对原数加0.05后再进行以上运算。如要求保留123.4644小数点后一位且对第二位数进行四舍五入,可用表达式:(int)((123.467+0.05)*10)/10.0。注意:分母一定要用实数10.0而不能用整数10,否则就变成整除了;若要求保留123.4644小数点后两位且对第三位数进行四舍五入,可用表达式:(int)((123.467+0.005)*100)/100.0;其他依此类推。

(6)设计输出语句。输出a、b、c和ave。 (7)把以上内容放在主函数的一对花括号中。 (8)编写程序如下: #include void main() {

double a,b,c,ave;

printf(\:\

scanf(\ ave=(a+b+c)/3;

printf(\用以比较四舍五入前后的数据*/ ave=(int)((ave+0.05)*10)/10.0;

printf(\ }

2. 编写一个简单的C程序,输出以下信息:

* * * * * * * * * * * * *

C program!

* * * * * * * * * * * * *

答案:

#include void main ( ) {

printf(\ printf(\

printf(\}

3. 编写一个程序,输入一个弧度值,并将其换算成角度值(度、分、秒的形式)输出。

提示:设x为弧度,则对应的角度为180*x/∏,其整数部分为度数,余下的部分乘60,其整数部分为分数,再将余下的部分乘60,其整数部分为秒数。 答案:

#define pi 3.14159 #include void main() {

float x,a,a1; int d,f ,m;

printf(\请输入弧度:\ scanf(\ a=x*(180/pi); d=(int)a; a1=(a-d)*60; f=(int)a1;

m=(int)((a1-f)*60+0.5);

printf(\弧度 <=> %d度%d分%d秒\\n\}

4. 编写一个程序,输入一个摄氏温度,输出其对应的华氏温度。

提示:摄氏温度与华氏温度之间的转换公式为:华氏温度=9*摄氏温度/5+32。 答案:

#include void main() {

float c,f;

printf(\请输入摄氏温度:\ scanf(\ f=9*c/5+32;

printf(\摄氏%f对应的华氏温度为%f\\n\}

5. 编写一个程序,输入半径,输出其圆周长、圆面积、及圆球体积。 答案:

#define pi 3.14159 #include void main() {

float r,l,s,v;

printf(\请输入圆半径:\ scanf(\ l=2*pi*r;

s=pi*r*r;

v=4*pi*r*r*r/3;

printf(\半径为%f的圆周长为%f,面积为%f,圆球体积为%f \\n\}

6. 输入一个字符,分别输出其前导字符、该字符、后续字符。 答案:

#include void main() {

char c;

printf(\输入一个字符:\

printf(\前导字符:%c\\n 该字符:%c\\n后续字符:%c\\n\}

7.对任意输入的一个字符进行加密,然后解密,输出加密解密的结果。

【解】设一个常量d为加密码,利用异或运算对字符c进行加密,解密过程则是再一次利用异或运算。程序如下:

#include void main( ) {

char c; int d=9999;

printf(\输入一个字符:\ c=c^d; printf(\加密后:%c\\n\ c=c^d; printf(\解密后:%c\\n\}

8. 输入三个整数,按从小到大的顺序进行输出。 答案:

#include void main() {

int a,b,c,temp;

scanf(\ if(a>b) {

temp=a; a=b; b=temp; }

if(a>c) {

temp=a; a=c; c=temp; }

if(b>c)

A) gets B) puts C) getchar D) putchar 答案:D

138. 若有下列语句

char c=’A’; printf(“%d”,c);

则输出的结果是 。

A) A B) c C) 65 D) 错误的语句 答案:C

139. 下列程序输入’a’字母后,执行程序后输出的结果是 。

#include void main( ) {

char c;

c=getchar(); c=c-32;

printf(\}

A)65 B) A C) 97 D) a 答案:B

140.以下不能正确计算代数式值的C语言表达式是______。

A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3 C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2) 答案:A

141.以下能正确定义且赋初值的语句是______。

A)int n1=n2=10; B)char c=32; C)float f=f+1.1; D)double x=12.3E2.5; 答案:B

142.设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是______。

A)k=k>= B)-k++ C)k%int(f) D)k>=f>=m 答案:C

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

A)(!a==1)&&(!b==0) B)(a

144.以下选项中可作为C语言合法常量的是______。

A)-80. B)-080 C)-8e1.0 D)-80.0e 答案:A

145.以下不能定义为用户标识符的是______。

A)Main B)_0 C)_int D)sizeof 答案:D

146.以下选项中不能作为合法常量的是______。

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 答案:B

147.有以下程序

#include void main( ) {

int m=12,n=34;

printf(\ printf(\}

程序运行后的输出结果是______。 A)12353514 B)12353513 C)12343514 D)12343513 答案:A

148.有以下程序

#include void main( ) {

int a,b,d=25; a=d/10%9; b=a&&(-1);

printf(\}

程序运行后的输出结果是______。 A)6,1 B)2,1 C)6,0 D)2,0 答案:B

149.以下叙述中正确的是______。

A)调用printf函数时,必须要有输出项

B)使用putchar函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码 答案:B

150.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。

#include void main()

{

int r; float s;

scanf(\ s=p*r*r;

printf(\}

出错的原因是______。

A)注释语句书写位置错误

B)存放圆半径的变量r不应该定义为整型 C)输出语句中格式描述符非法

D)计算圆面积的赋值语句中使用了非法变量 答案:D

151.数字字符0的ASCII值为48,若有以下程序

#include void main() {

char a='1',b='2'; printf(\ printf(\}

程序运行后的输出结果是______。

A)3,2 B)50,2 C)2,2 D)2,50 答案:C

152.有定义语句:int b;char c[10];,则正确的输入语句是______。

A)scanf(\ B)scanf(\C)scanf(\ D)scanf(\答案:B

153.有以下程序

#include void main() {

int m,n,p;

scanf(\ printf(\}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。

A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 答案:A

154.有以下程序

#include void main() {

char c1='1',c2='2';

c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); }

当运行时输入:a<回车> 后,以下叙述正确的是______。 A)变量c1被赋予字符a,c2被赋予回车符 B)程序将等待用户输入第2个字符

C)变量c1被赋予字符a,c2中仍是原有字符2 D)变量c1被赋予字符a,c2中将无确定值 答案:A

155.以下程序的功能是进行位运算

#include void main() {

unsigned char a, b; a=7^3; b= ~4 & 3;

printf(\}

程序运行后的输出结果是______。

 A)4 3 B)7 3 C)7 0 D)4 0 答案;A

156. 有以下程序

#include void main() {

int c=35;

printf(\}

程序运行后的输出结果是______。

A)0 B)70 C)35 D)1 答案:C

157.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是 。

A)c1^c2 B)c1&c2 C)~c2 D)c1|c2

158. 有定义语句:int a,b;, 若要通过scanf(\语句使变量a得到数值30,变量b得到数值40, 则下面四组输入形式中,错误的输入形式是 。 A)30 40<回车> B)30,40<回车>

C)30,40<回车> D=30,<回车>40<回车> 答案:A

159. 若有说明语句:char ch=’65’;则变量ch 。 A)包含3个字符 B)包含2个字符

C)包含1个字符 D)说明不合法,变量值不确定 答案:C

160. 已知字母a的ASCII码为十进制的97,ch1为字符型变量,则执行语句ch1='a'+'7'-'5';后,ch1中的值为 。

A) 99 B)不确定的值 C) b D) c 答案:D

161. 假设变量a是整型,b是实型,c是双精度型,则表达式30+a+c*b的值的数据类型是 。

A) int B) float C) double D) 不确定 答案:C

162.若变量c为char类型,能正确判断出c为大写字母的表达式是 。 A) 'A'<=c<= 'Z' B) (c>= 'A')||(c<= 'Z') C) ('A'<=c) and ('Z'>=c) D) (c>= 'A')&&(c<= 'Z') 答案:D

163. 若有定义:int a=7;f1oat x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 。

A) 2.5 B) 2.7 C) 3.5 D) 4.7 答案:A

164.下列程序执行后的输出结果是 。

#include void main() {

int x= 'f';

printf(\}

A) G B) H C) I D) J 答案:A

165. 在C语言中(以TC编译系统为例),5种基本数据类型的存储空间长度的排列顺序为 。

A) char

166. 在c语言中,非char型数据在内存中的存储形式是 。 A) 补码 B) 反码 C) 原码 D) ASCII码 答案:A

167. 在c语言中,char型数据在内存中的存储形式是 。 A) 补码 B) 反码 C) 原码 D) ASCII码 答案:D

二、填空题

1. printf库函数的第一个参数中的格式串是指明输出数据格式,各种数据类型对应的基本格式串是:

short、int (1) , long (2) ,

float (3) 、 (4) , double (5) 、 (6) , char (7) 、 (8) , 字符串 (9) 。

答案:(1) %d (2)%Ld (3)%f (4)%e (5)%f

(6)%e (7) %c (8) %d (9)%s

2. scanf库函数格式串和输入项之间的关系是 。

答案:一一对应关系:格式串与输入项的个数要相同,顺序要一致,类型要匹配

3. 阅读下述程序功能:将三位整数n的十位数的数字变为0。例如,输入三位整数为738,输出为708。请将正确答案写在横线处。

# include void main( ) {

(1) ;

printf (“输入一个三位整数:”); scanf (“%d”,&n);

d2= (2) ; /* 取出百位数的数字 */ d0= (3) ; /* 取出个位数的数字 */ printf (“输出三位整数:%d\\n”, (4) ); }

答案:(1)int n,d2,d0 (2) d2=n/100 (3) d0=n (4)d2 * 100+d0

5. 若x为单精度型变量,y为字符型变量,z为整型变量,执行如下的输入语句:

scanf (“%f %c%d”,&x,&y,&z);后,从键盘输入12.77A79A86。此时,变量x、y、z的值分别为 ① 、 ② 、 ③ 。 答案:①12.770000 ②A ③79

6. 表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是 。 答案:0

7. 已知char c= 'A';int i=1,j;执行语句j=!c&& i++后,i和j的值分别是 和 。

答案:1,0

8. 执行下面的程序 #include void main( ) {

int a=0100,b=100;

printf(\

}

则输出结果是 答案:x=63,y=100

9. 如果要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是 ,请用表示回车键。

scanf (\解:输入格式“%c”表示输入任意一个字符,包括按回车、空格和Tab键等。因此在输入整数10、30、40后不能输入空格而要直接输入字母;同理,字母B和C之间也不能输入空格。同时在20和30之间必须输入空格进行两个整数的区分。所以本题答案为: 10A20□30BC40D(其中,“□”表示一个空格)。

10. 有以下程序:

#include void main ( ) {

char ch1,ch2;int n1,n2;

ch1=getchar ( );ch2=getchar ( ); n1=ch1-'0';n2=n1*10+(ch2-'0'); printf (\}

程序运行时输入:12<回车>,执行后输出结果是 。(2004年4月) 答案:12

11.程序的运行结果为 。

#include void main( ) {

char c1='a',c2='b',c3='c';

printf (\}

答案:aabb cc

12. 请在空白处填上适当的语句,使以下程序的输出结果是16.00,。

#include void main ( ) {

int a=9,b=2;

float x= ,y=1.1,z; z=a/2+b*x/y+1/2;

printf (“%5.2f\\n”,z); } 答案:6.6

13. 有如下程序:

#include void main( ) {

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

printf(\ }

运行该程序的输出结果是 。

A)3 4 B)4 2 C)4 3 D)3 3 答案:D

14. 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是 。

A)if((a>b&&(b>c))k=1; B) if((a>b)‖(b>c))k=1; else k=0; else k=0; C)if(a<=b) k=0; D) if(a>b) k=1;

else if(b<=c) k=1; else if(b>c) k=1; else k=0; 答案:A

15. 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量是'\\101'是 。 答案:A

16. 下面程序的运行结果是 。

#include

#define STR \void main( ) {

printf(\:This is a STR!\\n\ printf(\:This is %s!\}

答案: No.1:This is a STR!

No.2:This is a C program!

17. 若有以下程序:

main( ) {int i=4;

printf(“%d”,-++i); }

该程序执行后的输出结果以及i的值分别是 【1】 、 【2】 。 答案: 【1】-5 【2】 5

18. 以下程序运行时若从键盘输入:10 20 30<回车>。输出结果是 。

#include

void main( ) {

int i=0,j=0,k=0;

scanf(\ printf(\}

答案:10300

19. 以下程序的执行结果是 。

#include void main( ) {

int a,b,c; c=(a=3,b=a--);

printf(\}

答案:c=3,a=2,b=3

20. 已知x=7.5,y=2,z=3.6,则表达式x>y&&z>xy的值是 (3) 。 答案:0

21. 以下程序运行的结果是 。

#include void main( ) {

int a,b,c;

a=1;b=2;c=3;a=b--<=a||a+b!=c; printf(\}

答案:1,1

22. 输入“12345,xyz”,下列程序输出的结果是 。

main( )

{ int x;char y;

scanf (“=<”,&x,&y); printf (“%d,%c”,x,y);} 答案:123,4

23. 以下的程序执行时,先输入a ;后输入b 。最后显示的结果是 。

#include void main( ) {

int x,y;

printf(\:\

5. 以下程序的输出是什么?

#include void main ( ) {

int i;

unsigned int j; i= ~0; j= ~0;

printf (\}答:

输出结果为:

i=-1 j=-1

6. 使用运算符++可以把以下3个语句写成一个语句。请设法写出这个语句,并编程上机验证结果。

y=y+1; z=x+y; x=x+1; 答:

可使用语句: z=(x++)+(++y);

7. 假定输入的数据流如下:

23.456789 12.23 567 hello F 34.32

为了把第二个数赋给变量second,把第三个数赋给变量third,把字符’F’赋给变量ch。问scanf( )函数的表示形式是什么?

解:scanf (\

8. 找出并更正以下程序中的错误。 #include

void main ( ) {

double pound; double kilograms; scanf (“%f”,pound); kilogram=pound/2.2;

printf (“%d pounds equals %d kilograms\\n”,pounds,kilograms); } 答:

正确的程序如下: #include void main ( ) {

double pound;

}

double kilograms;

scanf (\输入输出double型数,要使用格式符%lf */ kilograms=pound/2.2;

printf (\

9. 语句printf(\的输出结果是 。 答案:Re’CH’you

10. 说明下面程序的输出结果:

#include void main() {

int x='f';

printf(\}

答:输出大写字母G。因为x-’a’是字符常量’f’的ASCII码值减去字符常量’a’的ASCII码值。结果是5,加1后为6。于是’A’+6得到的是大写字母G的ASCII码值。按格式“%c”输出,即是字母G。

11. 分析下面程序的输出结果。

#include void main( ) {

int x,m,n,a,b; m=n=a=b=8;

x=(m=a>b)&&(n=a>b);

printf(\}

【解】输出结果是:

x=0,m=0,n=8

这里,变量m、n、a、b初始值都是8。语句

x=(m=a>b)&&(n=a>b);

把逻辑表达式(m=a>b) &&(n=a>b)的值赋给变量x。逻辑运算符&&左右两边都是赋值表达式:左边是把关系表达式a>b的值赋给变量m;右边是把关系表达式a>b的值赋给变量n.

在计算这个逻辑表达式取值时,左边的关系表达式a>b不成立,因此取值为0。也就是说,变量m的值为0,所以&&左边的条件取值为假。于是,C语言不再去计算这个逻辑表达式右边的条件,而直接把逻辑值0赋给变量x。正因为没有去计算右边表达式的取值,所以并没有做把关系表达式的a>b的值赋给变量n的操作。因此变量n仍保持它原有的值8。

12. 执行下面的程序后,变量b里的值是什么? #include void main( ) {

int x =35; char c='A'; int b;

b=((x&15)&&(c<'a')); printf(\}

【解】这里是要把逻辑表达式(x&15)&&(c<‘a’)的值赋给变量b。该逻辑表达式进行的是逻辑与(“&&”)运算。它的左边是一个位逻辑表达式,右边是一个关系表达式。

先来看左边的x&15。从图3- 4看出,运算结果是3,即是逻辑真,取值为1。

X=35: 0 0 15: 0 0 & 0 0 0 0 0 0 0 0 0 0 0 0 1 1 结果: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 图3-4 位逻辑运算示意

再来看右边的关系表达式c<‘a’。由于变量c里存放的是’A’,它的ASCII码值

(65)小于’a’的ASCII码值(97)。因此,该关系成立,运算结果为1。 所以,整个逻辑表达式的结果是1。因此,程序执行后,变量b里的值是1。

13. 以下程序的执行结果是什么?为什么?

#include main ( ) {

long a=32767; long b; b=a+1;

printf (\}

解:这里都是长整型数,存储一个数的位数是32,故直接相加即可。 所以,本程序的执行结果为:a=32767,b=32768

14. 执行以下程序时输入:

1234567 请写出程序运行结果。 #include void main( ) {

int x,y;

scanf(\ printf(\}

解:scanf ( )函数中第一个格式说明为“-”,表示接受两个数字即12赋给x;第二个格式说明为“%*2s”,表示接受两个数字不赋给任何变量,即跳过34;第三个格式说明为

“”,表示接受一个数字即5赋给y。所以程序输出为:

x=12,y=5

15. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int i; float f; char c;

scanf(\

printf (\}

当输入100a1.563时,程序的运行结果是: 当输入1.23456时,程序的运行结果是: 答案:当输入100a1.563时,程序的运行结果是:

i= 100, c=a, f=1.563000

当输入1.23456时,程序的运行结果是:

i= 1, c= ., f=23456.000000

16. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int i = 010, j = 10, k = 0x10;

printf (\}

运行结果是:

答案:运行结果是:

i= 8, j= 10, k= 16

17. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int a = 7, b = 9;

a = a + b; b = a - b; a = a - b; printf (\}

运行结果是:

答案:运行结果是:

a= 9, b= 7

18. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int a, b, c;

a = (b = (c = 3) * 5)*5;

printf (\}

运行结果是:

答案:运行结果是:

a = 30, b = 15, c = 3

19. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int a = 16, b, x = 6, y, z; b = a+++1;

printf (\ x *= a = b;

printf (\ x = 1; y = 2; z = 3; x += y += z;

printf (\}

运行结果是:

答案:运行结果是:

b=17 x=102 9

20. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main( ) {

printf(\ printf(\}

运行结果是:

答案:运行结果是:

f gde h j k

21. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

本文来源:https://www.bwwdw.com/article/f4dh.html

Top