fudge函数C语言,C语言程序设计-中国大学mooc-题库零氪

第二周:计算

2.1 变量随堂测验

1、以下哪些是有效的变量名?

A、main

B、4ever

C、monkey-king

D、__int

2、给定: int a,b; scanf("%d %d", &a, &b); 则以下哪些输入方式是正确的?

A、1 2

B、1,2

C、1(回车)2

D、1、2

3、给定: int a,b; 以下哪些scanf的使用是正确的?

A、scanf("%d", &a); scanf("%d", &b);

B、scanf("%d %d", &a, &b);

C、scanf("%d, %d", &a, &b);

D、scanf("%d %d", a, b);

4、给定以下代码段: int a,b=0; 则a的初始值是0

5、写出下式的运算结果: 10/3.0*3

6、写出下式的运算结果: 10/3*3.0

2.2 表达式随堂测验

1、写出以下代码执行后,t1和t2的值,以空格隔开: int a=14; int t1 = a++; int t2 = ++a;

2、写出以下表达式的结果,一个结果一行: 6 + 5 / 4 - 2 2 + 2 * (2 * 2 - 2) % 2 / 3 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10

四川轻化工大学C语言第1-3章单元测验一(出题人:林山)

1、以下关于C语言数据类型使用的叙述中错误的是______。

A、若要准确无误差地表示一个自然数,应使用整数类型。

B、若要保存带有多位小数的数据,应使用双精度类型。

C、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型。

D、若只处理"真"和"假"两种逻辑值,应使用逻辑类型。

2、以下选项中,合法的一组C语言数值常量是______。

A、028 .5e-3 -0xf

B、12. 0Xa23 4.5e0

C、1774 e1.5 0abc

D、0x8A 10,000 3.e5

3、以下选项中不能作为C语言合法常量的是______。

A、'cd'

B、0.1e+6

C、"\a"

D、'\011'

4、以下说法正确的是______。

A、C语言只接受十进制的数

B、C语言只接受二进制、八进制、十六进制的数

C、C语言只接受二进制、十进制、十六进制的数

D、C语言只接受八进制、十进制、十六进制的数

5、以下选项中表示一个合法的常量是(说明:符号口表示空格)______。

A、9口9口9

B、0Xab

C、123E0.2

D、2.7e

6、关于C语言的符号常量,以下叙述中正确的是______。

A、符号常量的符号名是标识符,但必须大写

B、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量

C、符号常量在整个程序中其值都不能再被重新定义

D、符号常量的符号名必须是常量

7、以下选项中,合法的数值型常量是______。

A、3.1415

B、"A"

C、092

D、0xDH

8、C语言的常量包括数值型常量和符号常量,以下叙述正确的是______。

A、数值型常量1.0和1所占内存的大小不同

B、不能用sizeof求数值型常量所占内存的大小

C、不能用sizeof求符号常量所占内存的大小

D、可以用A取得符号常量A所占内存的首地址

9、以下选项中,能用作数据常量的是______。

A、o115

B、0118

C、1.5e1.5

D、115L

10、以下叙述中错误的是______。

A、非零的数值型常量有正值和负值的区分

B、常量是在程序运行过程中值不能被改变的量

C、定义符号常量必须用类型名来设定常量的类型

D、用符号名表示的常量叫符号常量

11、设有两行定义语句: int scanf; float case; 则以下叙述正确的是______。

A、第2行语句不合法

B、两行定义语句都合法

C、第1行语句不合法

D、两行定义语句都不合法

12、关于C语言的变量,以下叙述中错误的是______。

A、变量所占的存储单元地址可以随时改变

B、所谓变量是指在程序运行过程中其值可以被改变的量

C、程序中用到的所有变量都必须先定义后才能使用

D、由三条下划线构成的符号名是合法的变量名

13、以下程序执行后sum的值是______。 main() { int i, sum; for(i=1; i<6; i++) sum+=i; printf("%d\n",sum); }

A、15

B、14

C、不确定

D、0

14、有以下程序 #include main() { char *p1 = 0; int *p2 = 0; float *p3 = 0; printf("%d,%d,%d\n", sizeof(p1), sizeof(p2), sizeof(p3)); }

A、1,1,4

B、1,2,4

C、1,4,8

D、4,4,4

15、关于C语言的变量名,以下叙述正确的是______。

A、变量名必须以字母开头

B、变量名不可以与预定义标识符同名

C、变量名不可以与关键字同名

D、变量名是没有长度限制的

16、以下选项中合法的变量是______。

A、sizeof

B、5a

C、A%

D、_10_

17、以下选项中不是C语言数据类型的是______。

A、整型int

B、浮点型float

C、字符型char

D、字符串型string

18、C语言中,最基本的数据类型包括______。

A、整型、实型、字符型

B、整型、字符型、数组

C、整型、实型、逻辑型

D、整型、实型、结构体

19、以下选项中可用作C程序合法整数的是______。

A、0x77

B、1 2(数字间有一个空格)

C、xff

D、018

20、以下不属于C语言整型常量的是______。

A、-018

B、0L

C、0Xa

D、200U

21、与十进制数200等值的十六进制数为______。

A、A8

B、A4

C、C8

D、C4

22、C语言整数不包括______。

A、带小数点的整数

B、正整数

C、负整数

D、无符号整数

23、以下选项中可作为C语言合法整数的是______。

A、10110B

B、0386

C、0Xffa

D、x2a2

24、以下非法的定义语句是______。

A、unsigned int a=-100u;

B、long b=0L;

C、short c2=0123;

D、int d=0x0;

25、以下叙述中正确的是______。

A、整型变量可以分为int型、short型、long型和unsigned型四种

B、在C程序中书写的八进制和十六进制数,可以是浮点数

C、八进制数的开头要使用英文字母o,否则不能与十进制区分开

D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符

26、若函数中有定义语句:int k;,则______。

A、系统将自动给k赋初值0

B、这时k中的值无定义

C、系统将自动给k赋初值-1

D、这时k中无任何值

27、在C语言中,不正确的short int类型的常数是______。

A、32768

B、0

C、037

D、0xAF

28、以下关于long、int和short类型数据占用内存大小的叙述中正确的是______。

A、均占4个字节

B、根据数据的大小来决定所占内存的字节数

C、由用户自己定义

D、由C语言编译系统决定

29、在C语言中,合法的长整型常数是______。

A、OL

B、4962710

C、324562

D、216D

30、以下选项中不属于C语言的类型是______。

A、signed short int

B、unsigned char

C、signed long

D、long short

31、以下选项中,合法的实数是______。

A、E1.3

B、4.5E2

C、7.11E

D、1.2E1.2

32、以下选项中,合法的C语言实数是______。

A、3.1e0.4

B、2e0

C、E13

D、7.12E

33、以下选项中,合法的实数是______。

A、1.9E1.4

B、E1.1

C、2.10E

D、1.5E2

34、以下不合法的数值常量是______。

A、011

B、le1

C、8.0E0.5

D、0xabcd

35、以下选项中可用作C程序合法实数的是______。

A、1e0

B、3.0e0.2

C、E9

D、9.12E

36、以下选项中合法的实型常量是______。

A、0

B、3.13e-2.1

C、.914

D、2.0*10

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

A、1.234e04

B、1.234e0.4

C、1.234e+4

D、1.234e0

38、以下______是不合法的C语言常量。

A、OxFF

B、1.2e0.5

C、2L

D、'\72'

39、以下是正确C语言实型常量的是______。

A、1e-1

B、e-1

C、-1e

D、.e-1

40、在C语言中,以下选项中不能正确表示10×1000之值的是______。

A、1.0e4

B、1.E4

C、10E3

D、1.0E4.0

41、下列定义变量的语句中错误的是______。

A、int _int;

B、double int_;

C、char For;

D、float US$;

42、设变量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;

43、以下选项中正确的定义语句是______。

A、double a;b;

B、double a=b=7;

C、double a=7,b=7;

D、double,a,b;

44、有以下程序 main() { int a,b,d=25; a=d/10%9; b=a-1; printf("%d,%d\n",a,b); } 程序运行后的输出结果是______。

A、6,1

B、2,1

C、6,0

D、2,0

45、以下不能用于实型数据的运算符是______。

A、%

B、/

C、*

D、+

46、以下选项中,当x为大于1的奇数时,值为0的表达式是______。

A、x%2==0

B、x/2

C、x%2!=0

D、x%2==1

47、C语言程序中,运算对象必须是整型数的运算符是______。

A、+

B、/

C、%

D、*

48、以下叙述中错误的是______。

A、C程序中的#include和#define行均不是C语句

B、除逗号运算符外,赋值运算符的优先级最低

C、C程序中,j++;是赋值语句

D、C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算

49、若有以下程序 #include main() { int b=10, a=-11; a%=b%=4; printf("%d %d\n", a, b); } 则程序的输出结果是______。

A、-1 2

B、1 2

C、-1 -2

D、1 -2

50、以下关于运算符"/"的叙述正确的是______。

A、不允许char型对象参与运算

B、总是进行双精度除法运算

C、总是进行单精度除法运算

D、只有其两边运算对象的类型都是整型时,所做运算为整数整除运算

51、以下程序拟实现计算 sum=1+1/2+1/3+ … +1/50 。 #include main( ) { int i; double sum; sum=1.0; i=1; do { i++; sum += 1/i; } while( i<50 ); printf("sum=%lf\n",sum); } 程序运行后,不能得到正确结果,出现问题的语句是______。

A、sum += 1/i;

B、while(i<50);

C、sum = 1.0;

D、i++;

52、设变量m为float类型,变量n为int类型,则以下能实现将m中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是______。

A、n=m*100+0.5, m=n/100.0

B、m=(m*100+0.5)/100.0

C、n=m/100+0.5, m=n*100.0

D、m=m*100+0.5/100.0

53、有以下程序 #include main() { int a=0,b=0,c=0; c=(a-=a-5); a=b,b+=4); printf("%d,%d,%d\n",a,b,c); } 程序运行后的输出结果是______。

A、0,4,5

B、4,4,5

C、4,4,4

D、0,0,0

54、设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是______。

A、(a+b)*h/2

B、(1/2)*(a+b)*h

C、(a+b)*h*1/2

D、h/2*(a+b)

55、以下能正确表述算式sin(2πr+30°)的C语言表达式是______。

A、sin(2*3.14*r+3.14*30/180.0)

B、sin(2*π*r+ 30 )

C、sin(2*3.14*r+ 30 )

D、sin(2*3.14*r+30*3.14/360.0)

56、有以下定义: int a; long b; double x,y; 则以下选项中正确的表达式是______。

A、a%(int)(x-y)

B、a=x!=y;

C、(a*y)%b

D、y=x+y=x

57、以下说法正确的是______。

A、复合语句中包含的语句种类没有限制

B、复合语句中不能有循环语句

C、复合语句中不能有分支语句

D、一条复合语句不能超过50行

58、以下叙述中错误的是______。

A、C语句必须以分号结束

B、复合语句在语法上被看作一条语句

C、空语句出现在任何位置都不会影响程序运行

D、赋值表达式末尾加分号就构成赋值语句

59、有如下程序 #include Int main() { int x = 0x13; if ( x = 0x18) printf("T"); printf("F"); printf("\n"); } 程序运行后的输出结果是______。

A、F

B、T

C、TF

D、TFT

60、以下选项中,能表示逻辑值"假"的是______。

A、1

B、0.000001

C、0

D、100.0

61、以下关于C语言数据类型使用的叙述中错误的是______。

A、若只处理"真"和"假"两种逻辑值,应使用逻辑类型

B、若要保存带有多位小数的数据,可使用双精度类型

C、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型

D、整数类型表示的自然数是准确无误差的

62、有以下程序 main() { int a=5,b=4,c=3,d=2; if (a==b==c) printf("%d\n",d); else if((c-d)==1) printf("%d\n",d+1); else printf("%d\n",d+2);} 执行后输出的结果是______。

A、2

B、3

C、4

D、编译时有错,无结果

63、以下叙述中正确的是______。

A、关系运算符两边的运算对象可以是C语言中任意合法的表达式

B、在C语言中,逻辑真值和假值分别对应1和0

C、对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误

D、分支结构是根据算术表达式的结果来判断流程走向的

64、表示关系式x≤y≤z的C语言表达式的是______。

A、(x<=y<=z)

B、(x<=y)||(y<=z)

C、(x<=y) && (y<=z)

D、(x<=y) ! (y<=z)

65、以下关于逻辑运算符两侧运算对象的叙述中正确的是______。

A、只能是整数0或1

B、只能是整数0或非0整数

C、可以是结构体类型的数据

D、可以是任意合法的表达式

66、若变量c为char类型,能正确判断出c为小写字母的表达式是______。

A、'a'>=c<='z'

B、(c>='a')||(c<='z')

C、('a'<=c)and('z'>=c)

D、(c>='a')(c<='z')

67、有以下程序 #include "stdio.h" main(){ int x=10,y=11,z=12; if(y

A、A:x=11 y=12 z=11

B、x=10 y=10 z=10

C、x=11 y=11 z=10

D、x=10 y=10 z=12

68、有以下程序: #include "stdio.h" main() { int x = 0x13; if (x = 0x12) printf("True"); printf("False\n"); } 程序运行后的输出结果是______。

A、False

B、True

C、TrueFalse

D、TrueFalseTrue

69、以下运用if语句判断x和y大小的程序段,错误的是______。

A、if(x>y) printf(" x>y ");else if(x

B、if(x>=y)if(xy) printf("xy");else printf("x=y");else printf("x

C、if(x>y) printf(" x>y ");if(y

D、if(x>y) printf(" x>y ");else if(y

70、有以下程序段scanf("%d%d%d",&a,&b,&c);if(a

A、输出a、b、c中的最小值

B、输出a、b、c中的最大值

C、输出a的原始值

D、输出a、b、c中值相等的数值

71、若有以下程序: #include "stdio.h" main() { int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b==2) r+=2; else; if (c!=3) r+=3; else; if (d==4) r+=4; printf("%d\n", r);} 则程序的输出结果是______。

A、7

B、10

C、6

D、3

72、以下程序的功能是判断输入的一个整数是否能被3或7整除,若能整除,输出YES,否则输出NO。在下划线处应填入的选项是______。 #include "stdio.h" main() { int k; printf("Enter a int number : "); scanf("%d", &k ); if printf("YES\n"); else printf("NO\n"); printf("%d\n",k); }

A、((k%3==0)||(k%7==0))

B、(k/3==0)||(k/7==0)

C、((k%3=0)||(k%7=0))

D、((k%3==0)&&(k%7==0))

73、下面的程序片段: y=-1; if (x!=0) {if(x>0) y=1;} else y=0; 以下说法错误的是______。

A、表述了类似数学中的分段函数

B、可以用其他格式的if语句改写替代

C、else与上一行的if相匹配

D、该程序段是if语句的嵌套

74、有以下程序: #include “stdio.h” main(){ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d\n",a,b,c,d);} 程序输出______。

A、0,1,2,0

B、0,0,0,3

C、1,1,2,0

D、编译有错

75、若执行以下程序时从键盘上输入9,则输出结果是______。 main() { int n; scanf("%d:",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); }

A、11

B、10

C、9

D、8

76、为了避免在嵌套的if-else语句中产生二义性,C语言规定与else子句配对是______。

A、与其缩排位置相同的if子句

B、在其之后最近的不带else的if子句

C、在其之前最近的不带else的同层if子句

D、与其在同一行上的if子句

77、以下4个选项,不能看作一条语句的是______。

A、{;}

B、a=0,b=0,c=0;

C、if(a>0);

D、if(b==0)m=1;n=2;

78、设有定义:int m=1,n=2;则以下if语句中,编译时会产生错误信息的是______。

A、if(m

B、if(m=n){ m++; n++;}

C、if(m>0 && n>0) { ;}

D、if(m==0) ; else m++;

79、有以下程序: #include "stdio.h" main() { int t; scanf("%d", &t ); if(t++ !=6) printf("%d\n",t); else printf("%d\n",t--); printf("\n"); } 执行时输入:6回车,则输出结果是______。

A、8

B、7

C、6

D、5

80、有以下程序段 scanf("%d%d%d",a,b,c); if(a>b) a=b; if(a>c) a=c; printf("%d\n",a);该程序段的功能是______。

A、输出a、b、c中值相等的数值

B、输出a、b、c中的最大值

C、输出a、b、c中的最小值

D、输出a的原始值

81、以下程序段中,不能实现条件"如果a==b则x=10,否则x=-10"的是______。

A、if(a==b) x=10;if(b==a) x=-10;

B、if(a==b) x=10;else x=-10;

C、x=-10;if(a==b) x=10;

D、x=(a==b)? 10:-10;

82、以下程序的输出结果是______。 main() { int x=05; char z='a'; printf("%d\n",(x)&&('z') ); }

A、0

B、1

C、2

D、3

83、#include “stdio.h” main() { int a=0,b=0,c=0; if(a++ || b++&&++c) printf ("%d,%d,%d\n", a, b, c); else printf ("%d,%d,%d\n", a, c, b); }

A、1,1,1

B、1,0,1

C、1,0,0

D、1,1,0

84、下列叙述中正确的是______。

A、C语言中既有逻辑类型也有集合类型

B、C语言中没有逻辑类型但有集合类型

C、C语言中有逻辑类型但没有集合类型

D、C语言中既没有逻辑类型也没有集合类型

85、以下叙述中正确的是______。

A、else不是一条独立的语句,它只是if语句的一部分

B、对于逻辑表达式:a++ && b++,设a的值为0,则求解表达式的值后,b的值会发生改变

C、对于逻辑表达式:a++ || b++,设a的值为1,则求解表达式的值后,b的值会发生改变

D、关系运算符的结果有三种:0,1,-1

86、若有以下程序 #include main() { int a=1,b=2,c=3,d=4; if ((a=2) || (b=2)) c=2; if ((c==3) & (d==-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d);} 则程序的输出结果是______。

A、1,2,3,4

B、2,1,2,-1

C、5,1,2,-1

D、2,2,2,4

87、执行以下程序段后,w的值为______。 int w='A',x=14,y=15; w =((x || y)||(w &'a'));

A、-1

B、NULL

C、1

D、0

88、有下列程序 #include main() { int a=-1,b=2; for (;b>1; a++ ) printf("%d,%d,", ++a, --b); printf ("%d,%d",a, b);} 程序执行后的输出结果是______

A、0,1,1,1

B、0,1,1,0

C、0,1,1,0,1,0

D、0,1,1,1,1,1

89、有以下程序 #include main() { int a=1,b=2,c=3,d=0; if (a==1 && b++==2) if (b!=2||c--!=3) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c);} 程序运行后的输出结果是______。

A、1,2,3

B、1,3,2

C、1,3,3

D、3,2,1

90、以下程序的输出结果是______。 main() { int a=4,b=5,c=0,d; d=!a && !b || !c; printf("%d\n",d);}

A、1

B、0

C、非0的数

D、-1

91、有以下程序: main() { int x=0,y=5,z=3; while(z-->0 && ++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z);} 程序执行后的输出结果是______。

A、3,2,0

B、3,2,-1

C、4,3,-1

D、5,-2,-5

92、设有定义:int a=0,b=1;,以下表达式中,会产生"短路"现象,致使变量b的值不变的是______。

A、a++ && b++

B、a++ || ++b

C、++a && b++

D、+a || ++b

93、以下选项中与(!a==0)的逻辑值不等价的表达式是______。

A、(a==!0)

B、a

C、(a>0||a<0)

D、(a!=0)

94、已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a

A、-1

B、0

C、1

D、2

95、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为______。

A、不定值

B、4

C、3

D、1

96、若有以下程序 #include main() { int a=1,b=2,c=3,d=4; if (a==b--) c=2; if ( c-- > (d=-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d);} 则程序的输出结果是______。

A、2,2,2,4

B、2,1,2,-1

C、5,1,2,-1

D、1,2,3,4

97、有如下程序 #include main() { iint a = 0, b = 1; if (a++ == b) printf("TRUE"); else printf("FALSE"); printf("_OUT:a=%d,b=%d\n", a, b++);} 程序运行后的输出结果是______。

A、FALSE_OUT:a=1,b=1

B、FALSE_OUT:a=0,b=2

C、TRUE_OUT:a=1,b=2

D、TRUE_OUT:a=0,b=1

98、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是______。

A、1

B、0

C、2

D、不知道a的值,不能确定

99、有以下程序 main() { int i=1,j=2,k=3; if(i++==1 && (++j==3 || k++==3)) printf("%d %d %d\n",i,j,k); }

A、1 2 3

B、2 3 4

C、2 2 4

D、2 3 3

100、设a、b、c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

A、'a'

B、a=b

C、a||a+c

D、!((a

第三周:判断

3.1 判断随堂测验

1、以下语句是否可以通过编译: if ( 1<=n<=10 );

2、以下语句是否表示n属于[1,10]: if ( 1<=n<=10 );

3、写出程序的输出结果: int i,j,k; i=5; j=10; k=1; printf("%d", k>i

4、写出程序的输出结果: int i,j,k; i=2;j=3; k = i*j==6; printf("%d\n", k);

5、写出程序的输出结果: int i,j,k; i=3;j=2;k=1; printf("%d", i

3.2 分支随堂测验

1、写出程序的输出: int i=1; switch ( i%3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); }

2、写出程序的输出: int a = 58; if ( a>50 ) printf("A"); if ( a>40 ) printf("B"); if ( a>30 ) printf("C");

编程题01

1、请编程实现:从键盘上随意输入一个算术运算式(可能是加、减、乘、除中的一种),然后你编写的程序要能判断出这个算术运算是否正确,正确显示“yes”,错误显示“no”。比如:从键盘上输入“3+2=5↙”,则屏幕上显示“yes”;从键盘上输入“3*2=5↙”,则屏幕上显示“no”。

编程题01(在线评分)

1、蓝集明出题:顺序、选择结构部分。

2、蓝集明出题:顺序、选择结构部分。

第四周:循环

4.1 循环随堂测验

1、while循环的条件满足的时候循环继续,而do-while的条件满足的时候循环就结束了

2、以下代码片段执行结束后,变量i的值是多少? int i =10; while ( i>0 ) { i /=2; }

3、以下代码片段执行结束后,变量i的值是多少? int i = 1; do { i += 5; } while (i<17);

4.2 循环应用随堂测验

1、以下哪种运算能从变量x中取得十进制最低位的数字

A、x / 10

B、x % 10

C、x * 10

D、10 / x

2、当需要累加一些值的时候,用来记录累加结果的变量应该被初始为:

四川轻化工大学C语言第4-5章单元测验二(出题人:宋健)

1、有以下程序: #include "stdio.h" void main() { int x=0,y=6; do { while(--y) x++; }while(y--); printf("%d,%d\n",x,y); } 程序的运行结果是______。

A、5,-1

B、6,0

C、5,0

D、6,-1

2、以下程序的输出结果是______。 #include "stdio.h" void main() { int i=0,a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d\n",a); }

A、21

B、32

C、33

D、11

3、以下判断形参变量a是否为素数的函数正确的是______。

A、int isprime(int a) { int i; for(i=2; i<=a/2; i++) if(a%i==0) return 0; return 1;}

B、int isprime(int a) { int i; for(i=2; i<=a/2; i++) if(a%i==1) return 1; return 0;}

C、int isprime(int a) { int i; for(i=2; i=

D、int isprime(int a) { int i; for(i=2; i<=a/2; i++) if(a%i==1) return 1; else return 0;}

4、有以下程序 #include "stdio.h" void main() { int i,j,m=1; for(i=1;i<3;i++) { for(j=3;j>0;j--) { if(i*j>3) break; m*=i*j; } } printf("m=%d\n",m); } 程序运行后的输出结果是______。

A、m=6

B、m=2

C、m=4

D、m=5

5、有以下程序: #include "stdio.h" void func(int n) { int i; for(i=0;i<=n;i++) printf("*"); printf("#"); } void main() { func(3); printf("????"); func(4); printf("\n"); } 程序运行后的输出结果是______。

A、****#????***#

B、***#????****#

C、**#????*****#

D、****#????*****#

6、有以下程序 #include "stdio.h" void main() { int i,j; for( i=3; i>0; i-- ) { for( j=1; j<=i; j++ ) putchar( '*'); for( j=1; j<=3-i; j++ ) putchar('#'); putchar('\n'); } } 程序运行后的输出结果是______。

A、*** **# *##

B、**# *## ###

C、### ##* #**

D、##* #** ***

7、有下列程序: #include void main() { int arry[] = {1,3,5,7,9},i,j; for(i=0;i<4;i+=2) { for(j=1;i+j<5;j++,j++) printf ("%d ",arry[i+j]); } } 程序执行后的输出结果是______。

A、5 7 7

B、3 5 7

C、5 9 9

D、3 7 7

8、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。 void sort(int a[],int n) { int i,j,t; for(i=0;i

A、1,2,3,4,5,6,7,8,9,10,

B、10,9,8,7,6,5,4,3,2,1,

C、1,2,3,8,7,6,5,4,9,10,

D、1,2,10,9,8,7,6,5,4,3,

9、若i和k都是int类型变量,有以下for语句: for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是______。

A、循环体执行两次

B、循环体执行一次

C、循环体一次也不执行

D、构成无限循环

10、有以下程序 #include "stdio.h" void main() { int i,n=0; for( i=2;i<5;i++) { do { if(i%3) continue; n++; }while(!i); n++; } printf("n=%d\n",n); } 程序执行后输出结果是______。

A、n=5

B、n=2

C、n=3

D、n=4

11、以下程序段中,与其他三个功能不同的程序段是______。

A、s=0;i=1; for( ; ; ) {s+=i; i++; if(i>=10) break;}

B、s=0,i=1; for( ; i<=10; ) {s+=i,i++;}

C、s=0; for(i=1; i<=10; i++) {s+=i;}

D、for(s=0,i=1; i<=10; s+=i,i++) ;

12、以下程序的输出结果是______。 #include "stdio.h" void main() { int a=6,b=0,c=0; for ( ;a; ) { b += a; a -= ++c; } printf("%d,%d,%d\n", a,b,c); }

A、0,14,3

B、1,14,3

C、0,18,3

D、0,14,6

13、有以下程序: #include "stdio.h" void main() { int k=5, n=0; do { switch(k) { case 1: case 3: n+=1; k--; break; default: n=0; k--; case 2: case 4: n+=2; k--; break; } printf("%d",n); }while(k>0 && n<5); } 程序运行后的输出结果是______。

A、235

B、0235

C、02356

D、2356

14、有以下程序: #include "stdio.h" void main() { int i,a; for (i=0; i<=10; i++) a=i; printf("%d,%d\n", i, a); } 程序的运行结果是______。

A、10,11

B、10,10

C、11,10

D、11,11

15、有以下程序 #include "stdio.h" void main() { int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++) { for(j=0;j<=i;j++) printf("%4c",' '); for(j=_____;j<4;j++) printf("%4d",num[i][j]); printf("\n"); } } 若要按以下形式输出数组右上半三角: 1 2 3 4 6 7 8 11 12 16 在程序下划线处应填入的是______。

A、i-1

B、i

C、i+1

D、4-i

16、有以下程序 #include "stdio.h" void main() { int i, j; for(i=1;i<4;i++) { for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j); printf("\n"); } } 程序运行后的输出结果是______。

A、1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3

B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9

C、1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9

D、1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9

17、有以下程序: void sort(int a[],int n) { int i,j,t; for(i=0;i

A、1,2,3,4,5,6,7,8,9,10,

B、10,9,8,7,6,5,4,3,2,1,

C、9,2,7,4,5,6,3,8,1,10,

D、1,10,3,8,5,6,7,4,9,2,

18、有如下程序: #include void main() { int i,data; scanf("%d",&data); for (i=0; i<5; i++) { if (i>data) break; printf("%d,", i); } printf("\n"); } 程序运行时,从键盘输入:3回车后,程序输出结果为______。

A、3,4,

B、0,1,0,1,

C、3,4,5,

D、0,1,2,3,

19、对于循环语句:for(i=0;i<=10;i++) { ; }下面各选项的叙述中错误的是______。

A、省略i=0,可引起无限循环

B、省略i<=10,可引起无限循环

C、省略i++,可引起无限循环

D、圆括号()内三个表达式都省略,可引起无限循环

20、以下程序的输出结果是______。 #include "stdio.h" void main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d\n",t); }

A、3

B、4

C、1

D、9

21、以下叙述中正确的是______。

A、三种循环for,while,do-while可以互相嵌套

B、循环发生嵌套时,最多只能两层

C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

D、for语句的圆括号中的表达式不能都省略掉

22、有以下程序 : #include "stdio.h" void main() { int a[3]={0}, i, j, k=2; for( i=0; i

A、1

B、2

C、3

D、0

23、设有n个数按从大到小的顺序存放在数组x中,以下能使这n个数在x数组中的顺序变为从小到大的是______。

A、for(i=0;i

B、for(i=0;i

C、for(i=0;i

D、for(i=0;i

24、以下程序的输出结果是______。 #include "stdio.h" void main() { int i,x[3][3]={1,2,3,4,5,6,7,8,9,}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); }

A、1,5,9,

B、1,4,7,

C、3,5,7,

D、3,6,9,

25、以下程序段中的变量已正确定义 for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf("*"); 程序段的输出结果是______。

A、********

B、****

C、**

D、*

26、以下程序中给数组所有元素输入数据,请从选项中选择正确的答案填入下划线处______。 #include void main() { int a[10], i=0; while( i<10 ) scanf("%d", ______ ); }

A、a+(i++)

B、a[i+1]

C、a+i

D、a[i++]

27、以下叙述中错误的是______。

A、while语句的循环体至少会被执行一次

B、break语句只能在循环体内和switch语句体内使用

C、执行continue语句时将跳过本次循环体中余下尚未执行的语句

D、在C语言中有三种可以构成循环结构的循环语句:while、do-while和for

28、若有以下程序 #include void main() { int a=-2, b=0; do { ++b ; }while(a++); printf("%d,%d\n", a, b); } 则程序的输出结果是______。

A、0,2

B、1,3

C、1,2

D、2,3

29、由以下while构成的循环,循环体执行的次数是______。int k=0;while ( k=1 ) k++;

A、无限次

B、一次也不执行

C、执行一次

D、有语法错,不能执行

30、以下程序的输出结果是______。 #include void main() { int num=0; while(num!=2) { num++; printf("%d\n",num); } }

A、123

B、12

C、1234

D、1

31、有以下程序 #include void main() { int i; for(i=0;i<3;i++) switch(i) { case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } } 执行后输出的结果是______。

A、011122

B、012

C、012020

D、120

32、有以下程序 #include void main() { int a=1, b=0; for(;a<5; a++) { if (a%2==0) break; b += a; } printf("%d \n", b); } 程序的运行结果是______。

A、0

B、10

C、1

D、4

33、有以下程序 #include void main() { int x,a=1,b=1; while(1) { scanf("%d",&x); if(x>0) { a*=x;break;} if(x<0) { b*=x;continue; } printf("%d,%d\n",a,b); } } 程序运行时输入:-1 -2 0 1 2 回车,则输出结果是______。

A、1,2

B、2,2

C、-1,1

D、-2,1

34、关于"while(条件表达式)循环体",以下叙述正确的是______。

A、条件表达式的执行次数总是比循环体的执行次数多一次

B、循环体的执行次数总是比条件表达式的执行次数多一次

C、条件表达式的执行次数与循环体的执行次数一样

D、条件表达式的执行次数与循环体的执行次数无关

35、下面程序的输出是______。 #include void main() { char *s="12134211"; int v1=0,v2=0,v3=0,v4=0,k; for (k=0;s[k];k++) switch(s[k]) { default:v4++; case '1':v1++; case '3':v3++; case '2':v2++; } printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }

A、v1=4,v2=2,v3=1,v4=1

B、v1=4,v2=9,v3=3,v4=1

C、v1=5,v2=8,v3=6,v4=1

D、v1=8,v2=8,v3=8,v4=8

36、t为int类型,进入下面的循环之前,t的值为0。while(t=1){......}则以下叙述中正确的是______。

A、循环控制表达式的值为0

B、循环控制表达式的值为1

C、循环控制表达式不合法

D、以上说法都不对

37、下面函数的功能是______。 int fun1(char*x) { char *y=x; while(*y++); return(y-x-1); }

A、求字符串的长度

B、比较两个字符串的大小

C、将字符串x复制到字符串y

D、将字符串x连接到字符串y后面

38、有如下程序 void main() { int n=9; while(n>6) { n--; printf("%d",n); } } 该程序段的输出结果是______。

A、987

B、876

C、8765

D、9876

39、有以下程序 #include void main() { int s; scanf("%d",&s); while(s) { switch(s) { case 1:printf("%d",s+5); case 2:printf("%d",s+4);break; case 3:printf("%d",s+3); default:printf("%d",s+1);break; } scanf("%d",&s); } } 运行时,若输入1 2 3 4 5 0回车,则输出结果是______。

A、6566456

B、66656

C、66666

D、6666656

40、有以下程序段 int i,n; for(i=0;i<8;i++) { n= %5; switch(n) { case 1: case 3: printf("%d\n",n); break; case 2: case 4: printf("%d\n",n); continue; case 0: exit(0); } printf("%d\n",n); } 以下关于程序段执行情况的叙述,正确的是______。

A、for循环语句固定执行8次

B、当产生的随机数n为4时结束循环操作

C、当产生的随机数n为1和2时不做任何操作

D、当产生的随机数n为0时结束程序运行

41、有以下程序 #include void main() { int a=1,b=2; while(a<6) { b+=a; a+=2; b%=10; } printf("%d,%d\n",a,b); } 程序运行后的输出结果是______。

A、5,11

B、7,1

C、7,11

D、6,1

42、有以下程序 #include void main() { char ch = 'D'; while (ch!='A') { ch --; putchar(ch); if (ch == 'A') break; putchar(ch+1); } } 程序运行后的输出结果是______。

A、CDBCA

B、BCA

C、CCBB

D、CB

43、有以下程序 #include void main() { int a=7; while(a--); printf("%d\n",a); } 程序运行后的输出结果是______

A、-1

B、0

C、1

D、7

44、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是______。

A、while((ch=getchar())!='N') printf("%c ",ch);

B、while(ch=getchar() ='N') printf("%c ",ch);

C、while(ch=getchar()=='N') printf("%c ",ch);

D、while(getchar(ch))=='N') printf("%c ",ch);

45、有以下程序 #include void main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是______。

A、y=0

B、y=-1

C、y=1

D、while构成无限循环

46、有以下程序 #include void main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,", b++); case 1: printf("%d,", b++); case 2: printf("%d,", b++); } } } 程序运行时输入:1 2 3回车,则输出结果是______。

A、1,2,3,

B、1,2,2,3,4,5,

C、1,2,3,2,3,3,

D、1,1,1,2,2,3

47、有以下程序 #include void main() { int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0:switch(a[i]%2) { case 0:a[i]++;break; case 1:a[i]--; } break; case 1:a[i]=0; } for(i=0;i<4;i++) printf("%d ",a[i]); printf("\n"); } 程序运行后的输出结果是______。

A、3 3 4 4

B、2 0 5 0

C、3 0 4 0

D、0 3 0 4

48、请读程序: #include void main() { int num=0; while( num <=2) { num++; printf("%d\n",num); } } 上面程序的输出结果是______。 ① 1 ② 12 ③ 123 ④ 1234

A、①

B、②

C、③

D、④

49、有以下程序 #include void main() { int k=5,n=0; while(k>0) { switch(k) { default : break; case 1 : n+=k; case 2 : case 3 : n+=k; } k--; } printf("%d\n",n); } 程序运行后的输出结果是______。

A、0

B、4

C、6

D、7

50、有如下程序 #include void main() { int n = 9; while(n>6) { n--; printf("%d",n); } } 该程序的输出结果是______。

A、987

B、876

C、8765

D、9876

51、有以下程序 #include void main() { int a,b; for (a=0; a<3; a++) { scanf("%d",&b); switch(b) { case 1: printf("%d,", ++b); case 2: printf("%d,", ++b); default: printf("%d,", ++b); } } } 执行时输入:1 2 3回车 ,则输出结果是______。

A、2,3,4,3,4,4,

B、2,3,4,

C、2,2,2,3,3,4,

D、2,3,4,3,4,5,4,5,6

52、有以下程序 #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } } printf("a=%d,b=%d\n",a,b);} 程序的运行结果是______。

A、a=1,b=0

B、a=2,b=2

C、a=1,b=1

D、a=2,b=1

53、有以下程序 #include void main() { int a=15,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是______。

A、1

B、2

C、3

D、4

54、有以下程序 #include void main() { int m,n; scanf("%d%d",&m,&n); while(m!=n) { while(m>n) m=m-n; while(n>m) n=n-m; } printf("%d\n",m); } 该程序的功能是______。

A、计算m和n的差值

B、计算m和n的最小公倍数

C、计算m和n的最大公约数

D、找出m和n中的较大值

55、对于while(!E) s; ,若要执行循环体s,则E的取值应为:______。

A、E不等于0

B、E等于0

C、E不等于1

D、E等于1

56、有以下程序 #include void main() { char ch = '1'; while (ch

A、1

B、01234567

C、0

D、12345678

57、设变量n已正确定义并赋值,以下不能实现自然数1到n累加求和的程序段是______。

A、int sum=1, i=0;while(i<=n){i++; sum+=i;}

B、int sum=0,i=1;while(i<=n){ sum+=i;i++;}

C、int sum=0, i=0;while(i<=n){i++; sum+=i;}

D、int sum=1, i=1;while(i<=n){i++; sum+=i;}

58、以下叙述中正确的是______。

A、只能在循环体内和switch语句体内使用break语句

B、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行

C、continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环

D、在while语句和do-while语句中无法使用continue语句

59、以下程序中,while循环的循环次数是______。 #include void main() { int i=0; while(i<10) { if(i<10) continue; if(i==5)break; i++; } ...... }

A、1

B、10

C、6

D、死循环,不能确定次数

60、以下程序的输出结果是______。 #include void main() { char *s="12134211"; int v[4]={0,0,0,0},k,i; for (k=0;s[k];k++) { switch(s[k]) { case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; } for(k=0; k<4;k++) printf("%d ",v[k]); }

A、4 2 1 1

B、0 0 0 8

C、4 6 7 8

D、8 8 8 8

61、有以下程序 #include void main() { int a=-1, b=-1; while(++a)++b; printf("%d,%d\n", a,b); } 程序的运行结果是______。

A、0,0

B、0,-1

C、-1,-1

D、结果不确定

62、有以下程序 #include void main() { int k=5; while(--k) printf("%d",k-=3); printf("\n"); } 执行后的输出结果是______。

A、1

B、2

C、4

D、死循环

63、若有以下程序 #include void main() { int s=0, n; for (n=0; n4; n++) { switch(n) { default: s+=4; case 1: s+=1; case 2: s+=2; case 3: s+=3; } } printf("%d\n", s); } 则程序的输出结果是______。

A、24

B、18

C、10

D、6

64、设有以下两段代码 do { while(条件表达式1 ) 循环体A; }while (条件表达式2); 和 while (条件表达式1) { do {循环体B;} while (条件表达式2); } 其中,循环体A与循环体B相同,在相同条件下,以下叙述正确的是______。

A、循环体A与循环体B的执行次数不确定

B、循环体A比循环体B的执行次数多一次

C、循环体A比循环体B的执行次数少一次

D、循环体A与循环体B的执行次数相同

65、阅读以下函数 fun(char *sl,char *s2) { int i=0; while(sl[i]==s2[i]) i++; return(sl[i]=='\0' ?1:0); } 此函数的功能是______。

A、将s2所指字符串赋给s1

B、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

66、以下叙述中正确的是______。

A、如果根据算法需要使用无限循环(即通常所称的"死循环") ,则只能使用while语句

B、对于"for(表达式1;表达式2;表达式3) 循环体"首先要计算表达式2的值,以便决定是否开始循环

C、对于"for(表达式1;表达式2;表达式3) 循环体",只在个别情况下才能转换成while语句

D、只要适当地修改代码,就可以将do-while与while相互转换

67、以下叙述中正确的是______。

A、continue语句使得整个循环终止

B、break语句不能用于提前结束for语句的本层循环

C、使用break语句可以使流程跳出switch语句体

D、在for语句中,continue与break的效果是一样的,可以互换

68、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。

A、(!E==0)

B、(E>0||E<0)

C、(E==0)

D、(E!=0)

69、若有以下程序段,w和k都是整型变量: w=k;LB:if(w==0)goto LE;w--;printf("*");goto LB;LE: . . . 则不能与上面程序段等价的循环语句是______。

A、for(w=k;w!=0;w--)printf("*");

B、w=k; while(w--!=0)printf("*");w++;

C、w=k; do { w--;printf("*");}while(w!=0);

D、for(w=k;w;--w)printf("*");

70、以下叙述中正确的是______。

A、break语句只能用于switch语句体中

B、continue语句的作用是:使程序的执行流程跳出包含它的所有循环

C、break语句只能用在循环体内和switch语句体中

D、在循环内使用break语句和continue语句的作用相同

71、有以下程序 #include void main() { int c=0,k; for(k=1;k<3;k++) switch(k) { default: c+=k; case 2: c++;break; case 4: c+=2;break; } printf("%d\n",c); } 程序运行后的输出结果是______。

A、3

B、5

C、7

D、9

72、有以下程序 #include void main() { int x,y=0,z=0,t; do { scanf("%d",&x); t=x; switch (t) { case 0:break; case 1:y+=x; continue; } z+=x; }while(x); printf("%d,%d\n",y,z); } 程序运行时输入:-1 1 -2 2 0回车,则输出结果是______。

A、1,1

B、1,0

C、1,-1

D、3,0

73、若有定义语句int a,b;double x ;则下列选项中没有错误的是______。

A、switch (x%2){case 0: a++;break;case 1: b++;break;default: a++; b++;}

B、switch ((int)x/2.0){case 0: a++;break;case 1: b++;break;default: a++; b++;}

C、switch ((int)x%2){case 0: a++;break;case 1: b++;break;default: a++; b++;}

D、switch ( (int) (x)%2){case 0.0: a++;break;case 1.0: b++;break;default: a++; b++;}

74、有以下程序 #include void main() { char c; while( ( c=getchar() )!= '\n' ) { switch( c-'2' ) { case 0 : case 1 : putchar( c+4 ); case 2 : putchar( c+4 ); break; case 3 : putchar( c+3 ); default : putchar( c+2 ); break; } } printf( "\n" ); } 程序运行后从第一列开始输入以下数据2473回车程序的输出结果是______。

A、668977

B、4444

C、6677877

D、68766

75、有以下程序 #include void main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,", ++b); case 1: printf("%d,", ++b); case 2: printf("%d,", ++b); } } } 执行时输入:1 2 3回车,则输出结果是______。

A、2,3,4,

B、2,3,3,4,5,6,

C、2,2,3,4,4,4,

D、2,3,4,3,4,4,

76、下列叙述中正确的是______。

A、在switch语句中必须使用default

B、在switch语句中,不一定使用break语句

C、break语句必须与switch语句中的case配对使用

D、break语句只能用于switch语句

77、有如下程序 #include void main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,b); } 该程序的输出结果是______。

A、a=2,b=1

B、a=1,b=1

C、a=1,b=0

D、a=2,b=2

78、有以下程序 #include void main() { int a = 3; do { printf("%d,", a-=2 ); } while( ! (--a) ); printf("\n"); } 程序运行后的输出结果是______。

A、1,

B、1, -2,

C、3,0,

D、1,0

79、有以下程序段 int n,t=1,s=0; scanf("%d",&n); do { s=s+t; t=t-2; } while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是______。

A、任意正奇数

B、任意负偶数

C、任意正偶数

D、任意负奇数

80、有以下程序 #include void main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { case 1: printf("%d,", b++); case 2: printf("%d,", b++); default: printf("%d,", b++); } } printf("\n"); } 执行时输入:1 2 3 回车,则输出结果是______。

A、1,2,3,

B、1,2,3,2,3,3,

C、2,3,4,3,4,4,

D、1,1,1,2,2,3

81、若有以下程序 #include void main() { int s=0, n; for (n=0; n<4; n++) { switch(n) { default: s+=4; case 1: s+=1; break; case 2: s+=2; break; case 3: s+=3; } } printf("%d\n", s); } 则程序的输出结果是______。

A、10

B、11

C、13

D、15

82、以下程序的输出结果是______。 #include void main() { int n=4; while(n--) printf("%d ",--n); }

A、2 0

B、3 1

C、3 2 1

D、2 1 0

83、有下列程序 #include void main() { int i,j,a,b; a=b=j=0; while(j<3) { j++; if(j==1) continue; for(i=0;i<3;i++) { if(i>1) break; a=a*10+i; if(i<1) b=a; } } printf ("%d %d\n",a, b); } 程序执行后的输出结果是______。

A、101 10

B、101 101

C、10 0

D、10 101

84、若要实现total=1+2+3+4+5求和,以下程序段错误的是______。

A、int i=1,total=1;while(i<=5){ total+=i;i+=1;}

B、int i=1,total=0;while(i<=5){ total+=i;i+=1;}

C、int i=0,total=0;while(i<5){ i+=1;total+=i;}

D、int i=0,total=0;while(i<=5){ total+=i;i+=1;}

85、以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是______。

A、switch(a){case 1:a=b;break;default : a++;}

B、switch(a==1){case 0:a=b;break;case 1:a++;}

C、switch(a){default:a++;break;case 1:a=b;}

D、switch(a==1){case 1:a=b;break;case 0:a++;}

86、有以下程序段int x=3;do{ printf("%d",x-=2);}while(!(--x));其输出结果是______。

A、1

B、3 0

C、1 -2

D、死循环

87、有以下程序 #include void main() { int i=5; do{ if(i%3==1) if(i%5==2) {printf("*%d",i);break;} i++; }while(i!=0); printf("\n"); } 程序的运行结果是______。

A、*7

B、*3*5

C、*5

D、*2*6

88、有以下程序#include #include #include void main() { char c; do { c=getchar(); putchar(c); } while(c != '#'); printf("\n"); } 执行时如输入:abcdefg##回车 , 则输出结果是______。

A、abcdefg

B、abcdefg#

C、abcdefg##

D、##

89、以下能够实现计算5!的程序段是______。

A、int fac=1,k=0;do{ k++; fac*=k;} while(k5);

B、int fac=0,k=1;do{ fac*=k; k++;} while(k5);

C、int fac=1,k=1;do{ k++; fac*=k;} while(k=5);

D、int fac=1,k=0;do{ fac*=k; k++;} while(k5);

90、有以下程序#include #include void main() { int a=7,b=0; do { b+= a;a-=1; } while (a--) ; printf("%d,%d\n",b,a); } 执行后的输出结果是______。

A、16,-1

B、28,1

C、16,0

D、28,0

91、以下不构成无限循环的语句或语句组是______。

A、n=0;do{++n;} while(n=0);

B、n=0;while(1){n++;}

C、n=10;while (n);{n--;}

D、for(n=0,i=1; ;i++) n+=i;

92、有以下程序 #include void main() { int i=0,s=0; do { if(i%2) {i++;continue;} i++;s+=i; } while(i<7); printf("%d\n",s); } 执行后输出的结果是______。

A、16

B、12

C、28

D、21

93、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是______。

A、n=0; while((ch=getchar())!='\n') n++;

B、n=0; while(getchar()!='\n') n++;

C、for(n=0;getchar()!='\n';n++);

D、n=0;for(ch=getchar();ch!='\n';n++);

94、有如下程序: #include void main() { int n[5] = {0,0,0},i,k = 2; for(i = 0; i

A、不确定的值

B、2

C、1

D、0

95、以下程序的输出结果是______。 #include void main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }

A、258

B、741

C、852

D、369

96、有以下程序 #include int f(int a) { return a%2; } void main() { int s[8]={1,3,5,2,4,6},i,d=0; for (i=0;f(s[i]);i++) d+=s[i]; printf("%d\n",d); } 程序运行后的输出结果是______。

A、9

B、11

C、19

D、21

97、有以下程序: #include void main() { int i,s=0; for(i=1;i<=10;i+=2) s+=i+1; printf("%d\n",s); } 程序执行后的输出结果是______。

A、自然数1~9的累加和

B、自然数1~10的累加和

C、自然数1~9中奇数之和

D、自然数1~10中偶数之和

98、有如下程序 #include "stdio.h" void main() { int i,f=1,s=0; for(i=1;i<100;i++) { s=s+f*i;f=-f;} printf ("s=%d\n",s); } 程序的功能是______。

A、计算1-3+5-7+...-99的值

B、计算1-2+3-4+... +99的值

C、计算1*2*3*4*...*99的值

D、计算1*3*5*7*...*99的值

99、有以下程序 #include "stdio.h" void main() { int a, b; for( a=1,b=1; a<=100; a++ ) { if(b>=20) break; if(b % 3==1) {b=b+3; continue;} b=b-5; } printf("%d\n",a); } 程序的输出结果是______。

A、8

B、10

C、9

D、7

100、有以下程序 #include "stdio.h" void main() { char a[4][4]={' '}; int i,j; for(i=0;i<4; i++) { a[i][0]=a[i][3]='#'; for(j=1; j<3; j++) { a[0][j]=a[3][j]='#'; if((i!=0)||(i!=3)) a[i][j]='o'; } } for(i=1;i<3; i++) { for(j=0; j<4;j++) printf("%2c",a[i][j]); printf("\n"); } } 程序的运行结果是______。

A、# o o # # o o #

B、# # # # # o o #

C、# o o # # # # #

D、# # # # # # # #

4.3循环编程作业

1、(郑宗良出题) 请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代): 程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

第五周:循环控制

5.1 第三种循环随堂测验

1、以下哪个循环和其他三条循环不等价(假设循环体都是一样的)?

A、for ( i=0; i<10; i++ ) {...}

B、for ( i=0; i<10; ++i ) {...}

C、for ( i=0; i++<10; ) {...}

D、for ( i=0; i<=9; i++ ) {...}

2、以下代码段的输出是什么? for ( int i=10; i> 1; i /=2 ) { printf("%d ", i++); }

5.2 循环控制随堂测验

1、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) continue; sum += i; } printf("%d\n", sum);

2、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) break; sum += i; } printf("%d\n", sum);

第六周:数据类型

6.1 数据类型随堂测验

1、以下哪个字母不能在数字后面表示类型?

A、F

B、U

C、L

D、X

2、以下哪个数字的值最大?

A、10

B、010

C、0x10

D、10.0

3、以下哪个数字占据的空间最大?

A、32768

B、‘3’

C、32768.0

D、32768.0F

4、以下哪种类型不能用在switch-case的判断变量中:

A、char

B、short

C、int

D、double

5、下列哪些是有效的字符?

A、‘ ’

B、‘\’‘

C、''

D、'\'

6、以下表达式的结果是: '1'+3

6.2 其他运算:逻辑、条件、逗号随堂测验

1、以下哪个表达式,当a和b都是true或者都是false的时候,表达式的结果为true。

A、a && b

B、a || b

C、a == b

D、a ^ b

2、以下哪个表达式与!(a&&b)是等价的

A、!a && !b

B、!a || !b

C、a && b

D、a || b

3、以下哪个表达式的结果是true?

A、!(4<5)

B、2>2||4==4&&1<0

C、34==33&&!false

D、!false

4、以下哪个表达式,当a和b中只有一个是true的时候结果为true,而如果两个都是false或都是true的时候,结果为false

A、a && b

B、a || b

C、a != b

D、!a && !b

5、以下代码执行后,i的值是: i = 3/2,3*2;

第一次单元测验

1、以下哪个选项是判断ch是否为大写字母的正确形式?

A、ch >= 'A' && ch <='Z'

B、ch <= 'Z' && ch >= 'A'

C、'A' <= ch <= 'Z'

D、ch >= 'A' || ch <= 'Z'

E、ch >='A' AND ch <='Z'

F、ch BETWEEN 'A' AND 'Z"

2、以下代码片段的输出是: int j=4; for ( int i=j; i<=2*j; i++ ) { switch ( i/j ) { case 0: case 1: printf(“*”); break; case 2: printf(“#”); } }

A、****#

B、****##

C、***#

D、*#

E、****

3、下列程序段输出结果为: int x=1, y=012; printf(“%d”,y*x++);

A、10

B、12

C、20

D、24

4、下面程序段的输出结果是? int k; while(k!=0) k=k-1; printf(“%d”, k);

A、0

B、无论k的初值如何,最终都会减到0的。

C、因为k没有初值,所以结果不确定

D、1

E、因为没有给k赋初值,因此程序不能通过编译

5、以下表达式x&&1 用在if的条件中时,和哪个是等价的:

A、x!=0

B、x

C、x==0

D、x==1

E、x!=1

6、以下哪个不是C语言的关键字?

A、include

B、if

C、while

D、int

E、for

7、对于以下代码: unsigned short sht = 0; sht --; 执行后,sht的值是?

A、65535

B、2的16次方-1

C、-1

D、32767

E、65536

8、以下哪个直接量是十进制的124?

A、0174

B、0x7C

C、124

D、0x124

E、0124

F、124d

9、对于以下代码: int i=6; if ( i<= 6 ) printf("hello\n");; else printf("bye-bye\n");; 哪句话是对的?

A、无法编译

B、不能通过编译

C、打印出"hello"

D、打印出"bye-bye"

E、打印出"hello bye-bye"

10、在代码: while ( !e ) 中,!e等价于:

A、e == 0

B、e != 1

C、e!=0

D、e == 1

11、下列可用于C语言程序标识符的一组是(名字间以逗号分隔):

A、For, _abc, IF

B、_if, _123, file

C、void, d, WORD

D、For, -abc, IF

E、-(减号)不能出现在名字中

F、2_a, xyz, b1_s

12、对for(表达式1;;表达式3) 可理解为

A、for(表达式1;1;表达式3)

B、for(表达式1;true;表达式3)

C、for(表达式1; 表达式1;表达式3)

D、for(表达式1; 表达式3;表达式3)

E、for(表达式1;0;表达式3)

13、对于以下代码: int i,j=6; 以下哪句话是对的?

A、i不会被初始化,而j是6

B、i和j的初始值都是6

C、i被初始为0,而j是6

D、不能通过编译

14、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?

A、-1

B、255

C、ASCII码表中255那个位置的字符

D、编译错误,因为赋值的时候类型不一致

E、编译错误,因为赋值的时候不能把负数赋给char

F、运行错误,因为%d和ch的类型不匹配

15、对于以下代码: int i; scanf("%d", &i); i %= 4; 执行后,i会有几种可能性?

A、7

B、0

C、1

D、2

E、3

F、不好说

16、对于以下代码: int i=6; do { printf("%d", i--); } while (0); 哪句话是对的?

A、打印出6

B、打印出5

C、因为while(0),无法编译

D、打印不出东西

17、对于以下代码: int i; for ( i=0; i<10; i++) printf("%d", i); for循环后,i的值是多少?

A、10

B、9

C、11

D、i没有确定的值

E、i不存在

18、以下哪个for语句是错误的?

A、for (i=0;j=0; i<10; i++ );

B、for (i=0;i<10);

C、for (i=0; i++ );

D、for (;;);

E、for (i=0; i<10; i--);

F、for (i=0; i<10, j<10; i++);

G、for (int i=0; i<10, j<10; i++);

19、表达式ch =‘B’+‘8’-‘3’表示的字符是:

20、以下代码的输出是 _____. int x=0, y=0, z=0; z = (x==1) && (y=2); printf("%d ", y);

21、以下代码段的结果是: int i=10; long long t = sizeof(i++); printf("%d", i);

22、表达式(double)(10/4*4) 的结果是_____

23、以下代码的输出是 : int i,x,y; i=x=y=0; do { ++i; if ( i%2 ) x+=i, i++; y +=i++; } while ( i<=7 ); printf("%d %d %d", i, x, y);

第七周:函数

7.2 函数的参数和变量随堂测验

1、以下哪句不是正确的原型?

A、int f();

B、int f(int i);

C、int f(int);

D、int f(int i) {}

2、以下哪个函数的定义是错误的?

A、void f() {}

B、void f(int i) { return i+1; }

C、void f(int i) {}

D、int f() { return 0; }

3、对于不返回值而且只有一个int类型的参数的函数,以下哪些函数原型是正确的?

A、void f(int x);

B、void f();

C、void f(int);

D、void f(x);

4、以下程序的输出是什么? #include void swap(int a, int b); int main() { int a = 5; int b = 6; swap(a,b); printf("%d-%d\n", a, b); return 0; } void swap(int a, int b) { int t = a; a = b; b = t; }

第八周:数组

8.2 数组运算随堂测验

1、若有定义: int a[2][3]; 则以下选项中不越界的正确的访问有:

A、a[2][0]

B、a[2][3]

C、a[1>2][0]

D、a[0][3]

2、以下程序片段的输出结果是:int m[][3] = {1,4,7,2,5,8,3,6,9,}; int i,j,k=2; for ( i=0; i<3; i++ ) { printf("%d", m[k][i]); }

A、369

B、不能通过编译

C、789

D、能编译,但是运行时数组下标越界了

3、假设int类型变量占用4个字节,定义数组 int x[10] = {0,2,4}; 则x在内存中占据几个字节?

4、若有: int a[][3] = {{0},{1},{2}}; 则 a[1][2] 的值是?

四川轻化工大学C语言第6-7章单元测验三(出题人:郑宗良)

1、有以下程序 #include void main() { int a[3][2]={0},(*ptr)[2],i,j; for(i=0;i<2;i++) { ptr=a+i; scanf("%d",ptr); ptr++; } for(i=0;i<3;i++) { for(j=0;j<2;j++) printf("%d",a[i][j]); } } 若运行时输入:1 2 3回车,则输出结果是______。

A、产生错误信息

B、102000

C、123000

D、102030

2、有以下程序 #include void main() { char *p[]={"3697","2548"}; int i,j; long num=0; for(i=0;i<2;i++) { j=0; while(p[i][j]!='\0') { if((p[i][j]- '0')%2) num=10*num+p[i][j]- '0'; j+=2; } } printf("%d\n",num); } 程序执行后的输出结果上______。

A、35

B、37

C、39

D、3975

3、有以下程序 #include void main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=0;j

A、1

B、3

C、2

D、9

4、有以下程序 #include void main() { int i,j; for(i=3;i>=1;i--) { for(j=1;j<3;j++) printf("%d",i+j); } } 程序的运行结果是______。

A、2 3 43 4 5

B、4 3 25 4 3

C、2 33 44 5

D、4 53 42 3

5、有以下程序 #include void main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<3;j++) { if(j%2) continue; x++; } x++; } printf("x=%d\n",x); } 程序执行后的输出结果是______。

A、x=4

B、x=8

C、x=6

D、x=12

6、有以下程序 #include void main() { int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]) { t=a[j][i]; a[j][i]=a[k][i]; a[k][i]=t; } /*按列排序*/ for(i=0;i<4;i++) printf("%d,",a[i][i]); } 程序运行后的输出结果是______。

A、1,6,5,7,

B、8,7,3,1,

C、4,7,5,2,

D、1,6,2,1,

7、有以下程序 #include void main() { int k, j, s; for( k=2; k<6; k++,k++ ) { s=1; for (j=k; j<6; j++ ) s+=j; } printf("%d\n" , s ); } 程序运行后的输出结果是______。

A、6

B、10

C、24

D、40

8、有以下程序 #include #include void fun( char s[][10],int n) { char t; int i,j; for(i=0;is[j][0]) { t=s[i][0]; s[i][0]=s[j][0]; s[j][0]=t; } } void main() { char ss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5); printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是______。

A、xy,aaaacc

B、aaaacc,xy

C、xcc,aabcc

D、acc,xabcc

9、有如下程序段 for(i=0;i<10;i++) if(i>5) break; 则循环结束后i的值为______。

A、5

B、6

C、9

D、10

10、有如下程序 #include void main() { int i, data; scanf("%d", &data); for (i=0; i<10; i++) { if (i> data) break; printf("%d,", i); } } 程序运行时,从键盘输入:3回车后,程序输出结果为______。

A、3,4,5,

B、1,2,3,

C、2,3,4,

D、0,1,2,3,

11、有以下程序: #include void main() { int k=4,n=0; for( ; n

A、1,1

B、2,2

C、3,3

D、4,4

12、有以下程序 #include void main() { int i=1,k=0; for(;i<6 ;) { switch(i%3) { case 0: k++; case 1: k++; break; case 2: k++; break; } i+=1; } printf("%d\n",k); } 程序的运行情况是______。

A、4

B、6

C、5

D、形成无限循环

13、有以下程序 #include void main() { int a=0, b=0; for( ;a<5; a++ ) { if (a%2==0) continue; b += a; } printf("%d \n", b); } 程序的运行结果是______

A、4

B、10

C、0

D、15

14、以下程序的输出结果是______。 #include void main() { int a,b; for(a=1,b=1;a<100;a++) { if(b==10) break; if(b%3==1) { b+=3; continue; } } printf("%d\n",a); }

A、101

B、6

C、5

D、4

15、#include void main() { int i, data; scanf("%d", &data); for (i=0; i<5; i++) { if (i == data) continue; printf("%d-", i); } } 程序运行时,从键盘输入:3回车后,程序输出结果为______。

A、3-4-

B、1-2-3-

C、0-1-2-

D、0-1-2-4-

16、#include void main() { int a=0, b=0; for(; a<5; a++) { if (a%2==0) continue; b += a; break; } printf("%d \n", b); } 程序运行后的输出结果是______。

A、1

B、4

C、0

D、10

17、有以下程序 #include void main() { int a=1, b=0; for(; a<5; a++) { if (a%2 == 0) break; continue; b += a; } printf("%d \n", b); } 程序运行后的输出结果是______。

A、0

B、1

C、10

D、4

18、有如下程序 #include void main() { int i, data; scanf("%d", &data); for (i=0; i<5; i++) { if (i == data) continue; printf("%d,", i); } printf("\n"); } 程序运行时,从键盘输入:3回车后,程序输出结果为______。

A、3,4,

B、1,2,3,4,

C、0,1,2,3,4,5,

D、0,1,2,4

19、有以下程序 #include void main() { int i=0,s=0; for (;;) { if(i>6) break; i++; s+=i; } printf("%d\n",s); } 程序运行后的输出结果是______。

A、10

B、15

C、21

D、28

20、有以下程序 #include void main() { int i; char c; scanf("%c",&c); for (i=0; i<5; i++) { if (i>=c) continue; printf("%d,",i); } } 执行时输入:0回车后,则输出结果是______。

A、0,1,2,3,4,

B、0,0,0,0,0,

C、5,3,

D、0,1,

21、有以下程序段 int x ,i ; for(i=0;i<100;i++) { scanf("%d",&x); if(x>0) continue; printf("%4d\n",x); } 下面针对上述程序段的描述正确的是______。

A、最多可以输出100个非正整数

B、当x<0时结束整个循环

C、当x=0时没有任何输出

D、printf函数调用语句总是被跳过

22、有以下程序 #include void main() { int i ; for( i=1; i<5; i++ ) { if( i % 2 ) printf( "*" ); else continue; printf( "#" ); } printf( "$\n" ); } 程序运行后的输出结果是______。

A、*#*#*#$

B、*#*#*$

C、*#*#$

D、*#*#*#*$

23、有以下程序 #include void main() { int x=8; for( ;x>0;x--) { if(x%3) { printf("%d,",x--); continue; } printf("%d,",--x); } } 程序的运行结果是______。

A、7,4,2,

B、8,7,5,2,

C、9,7,6,4,

D、8,5,4,2,

24、以下函数按每行8个输出数组中的数据 #include void fun( int *w, int n) { int i; for(i=0;i

A、if(i/8==0) printf("\n");

B、if(i/8==0) continue;

C、if(i%8==0) printf("\n");

D、if(i%8==0) continue;

25、以下叙述中正确的是______。

A、转义字符用@符号开头

B、字符变量在定义时不能赋初值

C、同一英文字母的大写和小写形式代表的是同一个字符常量

D、字符常量可以参与任何整数运算

26、以下叙述正确的是______。

A、A表达式9+'0'的值是字符9的ASCII码

B、表达式'A'+32的值是字母A的ASCII码

C、表达式'a'-32的值是字母a的ASCII码

D、表达式9-'0'的值是数值9

27、有以下程序: #include void main() { char ch = 'M'; while (ch != 'K') { putchar(ch); ch--;} } 程序运行后的输出结果是______。

A、ML

B、MK

C、OP

D、mm

28、有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是______。

A、gets(&s[0]);

B、scanf("%s",s);

C、gets(s);

D、scanf("%s",s[0]);

29、有以下程序: #include int f(int x); void main() { int a,b=0; for(a=0;a<3;a++) { b=b+f(a); putchar('A'+b);} } int f(int x) { return x*x+1; } 程序运行后的输出结果是______。

A、ABE

B、BDI

C、BCF

D、BCD

30、以下函数值的类型是______。 fun(float x) { float y; y=3*x-4; return y; }

A、int

B、不确定

C、void

D、float

31、以下所列的各函数声明中,正确的是______。

A、void play(var a:Integer,var b:Integer)

B、void play(int a,b)

C、void play(int a,int b)

D、Sub play(a as integer,b as integer)

32、以下选项中表示空函数的是______。

A、void fun() { }

B、void fun();

C、int fun() { return 0;}

D、int fun(int a, int b) { return 1;}

33、以下关于函数的叙述中正确的是______。

A、函数形参的类型与返回值的类型无关

B、函数必须要有形参

C、函数必须要有返回值

D、函数调用必须传递实参

34、下列叙述中正确的是______。

A、每一个C程序文件中都必须要有一个main()函数

B、在C程序中main()函数的位置是固定的

C、C程序中所有函数之间都可以相互调用,与函数所在位置无关

D、在C程序的函数中不能定义另一个函数

35、若函数fun定义如下: int fun(void) { double d; long t=rand(); d=t*0.618; return d; } 则函数返回值的类型是______。

A、double

B、int

C、void

D、long

36、若有如下函数定义: double fun(int x,int y) { return (x+y); } return语句中表达式值的类型与说明的类型不一致,则以下叙述中正确的是______。

A、函数返回的值为double型

B、函数返回的值为int型

C、编译出错

D、运行时出错

37、有如下程序 #include void main() { int a[3][3] = {{1,2},{3,4},{5,6}}, i,j,s = 0; for(i = 1; i < 3; i++) { for(j=0;j<= i;j++) s += a[i][j]; printf("%d ",s); } } 该程序的输出结果是______。

A、7 18

B、7 19

C、8 20

D、8 21

38、以下程序的输出结果是______。 #include void main() { int i, k, a[10], p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); }

A、20

B、21

C、22

D、23

39、有以下程序 #include void main() { int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++) { for(j=0;j<=i;j++) printf("%4c",' '); for(j=i;j<4;j++) printf("%4d",num[i][j]); printf("\n"); } } 若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是______。

A、i-1

B、i

C、i+1

D、4-i

40、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10 void arrin(int x[N]) { int i=0; while(i

A、x[i++]

B、&x[i+1]

C、x+i++

D、&x[++i]

41、以下能正确定义二维数组的是______。

A、int a[][3];

B、int a[][3]={2*3};

C、int a[][3]={};

D、int a[3][3]={{1},{2},{3,4}};

42、有以下程序 #include int f(int a) { return a%2; } void main() { int s[8]={1,3,5,2,4,6},i,d=0; for (i=0;f(s[i]);i++) d+=s[i]; printf("%d\n",d); } 程序运行后的输出结果是______。

A、9

B、11

C、19

D、21

43、有以下程序 #include void main() { int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++) c[s[i]]++; for(i=1;i<5;i++) printf("%d",c[i]); printf("\n"); } 程序的运行结果是______。

A、1 2 3 4

B、2 3 4 4

C、4 3 3 2

D、1 1 2 3

44、有如下程序 #include void main() { int n[5] = {0,0,0},i,k = 2; for(i = 0; i < k; i++) n[i] = n[i] + 1; printf("%d\n",n[k]); } 该程序的输出结果是______。

A、不确定的值

B、2

C、1

D、0

45、以下程序的输出结果是______。 #include void main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }

A、258

B、741

C、852

D、369

46、以下程序中的函数 reverse 的功能是将 a 所指数组中的内容进行逆置。 #include void reverse(int a[],int n) { int i,t; for(i=0;i

A、22

B、10

C、34

D、30

47、有以下程序 #include void main() { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i][1]; printf("%d\n",s); } 程序运行后的输出结果是______。

A、11

B、19

C、13

D、20

48、有以下程序 #include void main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) {printf("%d ",m[k][i]);} } 执行后输出结果是______。

A、4 5 6

B、2 5 8

C、3 6 9

D、7 8 9

49、有以下程序 #include void main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) { printf("%d ",m[k][i]); } } 执行后输出结果是______。

A、4 5 6

B、2 5 8

C、3 6 9

D、7 8 9

50、以下程序的输出结果是______。 #include void main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d\n",t); }

A、3

B、4

C、1

D、9

51、有以下程序 #include void main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2) {k=k+p[i]; i++;} printf("%d\n",k); } 执行后输出的结果是______。

A、58

B、56

C、45

D、24

52、以下程序的输出结果是______。 #include void main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }

A、0650

B、1470

C、5430

D、输出值不定

53、若有定义语句:int a[3][6];,按在内存中的存放顺序,a 数组的第 10 个元素是______。

A、a[0][4]

B、a[1][3]

C、a[0][3]

D、a[1][4]

54、有如下程序 #include void main() { int a[3][3] = {{1,2},{3,4},{5,6}}, i,j,s = 0; for(i = 1; i < 3; i++) for(j = 0; j <= i; j++) s += a[i][j]; printf("%d\n",s); } 该程序的输出结果是______。

A、18

B、19

C、20

D、21

55、以下能正确定义一维数组的选项是______。

A、int a[5]={0,1,2,3,4,5};

B、char a[]={0,1,2,3,4,5};

C、char a={'A','B','C'};

D、int a[5]="0123";

56、以下叙述中错误的是______。

A、对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出

B、程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越界"的出错信息

C、可以通过赋初值的方式确定数组元素的个数

D、数组名代表的是数组所占存储区的首地址,其值不可改变

57、以下程序的输出结果是。 #include void main() { int i,x[3][3]={1,2,3,4,5,6,7,8,9,}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); }

A、1,5,9,

B、1,4,7,

C、3,5,7,

D、3,6,9,

58、以下程序的输出结果是______。 #include void main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for (i=1;i<3;i++) for(j=0;j<=i;j++)s+=a[i][j]; printf("%d\n",s); }

A、18

B、19

C、20

D、21

59、假定 int 类型变量占用两个字节,若有定义:int x[10]={0,2,4};,则数组 x 在内存中所占 字节数是______。

A、3

B、6

C、10

D、20

60、以下数组定义中不正确的是______。

A、int a[2][3];

B、int b[][3]={0,1,2};

C、int c[100][100]={0};

D、int d[3][]={{1,2},{1,2,3},{1,2,3,4}}

61、若有定义:int aa[8];则以下表达式中不能代表数组元素 aa[1]的地址的是______。

A、&aa[0]+1

B、&aa[1]

C、aa[0]++

D、aa+1

62、以下能正确定义数组并正确赋初值的语句是______。

A、int N=5,b[N][N];

B、int a[1][2]={{1},{3}};

C、int c[2][]={{1,2},{3,4}};

D、int d[3][2]={{1,2},{3,4}};

63、以下能正确定义一维数组的选项是______。 int num[]

A、#define N 100 int num[N]

B、int num[0..100]

C、int N=100;

D、int num[N]

64、有以下程序 #include void main() { int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf("%d ",t[2-i][i]); } 程序执行后的输出结果是______。

A、7 5 3

B、3 5 7

C、3 6 9

D、7 5 1

65、若有定义:int a[2][3];,以下选项中对 a 数组元素正确引用的是______。

A、a[2][!1]

B、a[2][3]

C、a[0][3]

D、a[1>2][!1]

66、若有定义语句:int m[ ]={5,4,3,2,1},i=4; ,则下面对 m 数组元素的引用中错误的是______。

A、m[--i]

B、m[2*2]

C、m[m[0]]

D、m[m[i]]

67、有以下程序 #include #define N 4 void fun(int a[][N],int b[]) { int i; for(i=0;i

A、1,2,3,4,

B、1,0,7,0,

C、1,4,5,9,

D、3,4,8,10,

68、若有定义语句:char s[10]= "1234567\0\0";,则 strlen(s)的值是______。

A、7

B、8

C、9

D、10

69、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______。

A、数组 a 和 b 的长度相同

B、a 数组长度小于 b 数组长度

C、a 数组长度大于 b 数组长度

D、上述说法都不对

70、有定义语句:char s[10];,若要从终端给 s 输入 5 个字符,错误的输入语句是______。

A、gets(&s[0]);

B、scanf("%s",s);

C、gets(s);

D、scanf("%s",s[1]);

71、以下能正确定义字符串的语句是______。

A、char str[]={'\064'};

B、char str="\x43";

C、char str='';

D、char str[]="\0";

72、有以下程序 #include #include void fun( char s[][10],int n) { char t; int i,j; for(i=0;is[j][0]) {t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;} } void main() { char ss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5); printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是______。

A、xy,aaaacc

B、aaaacc,xy

C、xcc,aabcc

D、acc,xabcc

73、有如下程序: #include void main() { int n[5]={0,0,0},i,k = 2; for(i = 0; i < k; i++) n[i] = n[i] + 1; printf("%d\n",n[k]); } 该程序的输出结果是______。

A、不确定的值

B、2

C、1

D、0

74、以下程序的输出结果是______。 #include void main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }

A、258

B、741

C、852

D、369

75、以下程序的输出结果是______。 #include void main() { char ch[3][5]={"AAAA","BBB","CC"}; printf("%s\n",ch[1]); }

A、"AAAA"

B、"BBB"

C、"BBBCC"

D、"CC"

76、有以下程序 #include void main() { char s[]="\n123\\"; printf("%d,%d\n",strlen(s),sizeof(s)); } 执行后输出结果是______。

A、6,7

B、5,6

C、6,6

D、赋初值的字符串有错

77、113、以下程序段的输出结果是:______。 char s[]="\\141\141abc\t"; printf("%d\n",strlen(s));

A、9

B、12

C、13

D、14

78、有以下程序 #include void main() { char a[]={'a','b','c','d','e','f','g','h','\0'}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\n",i,j); } 程序运行后的输出结果是______。

A、9,9

B、8,9

C、1,8

D、9,8

79、有以下程序 #include void main() { char a[]={'a','b','c','d','e','f','g','h','\0'}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\n",i,j); } 程序运行后的输出结果是______。

A、9,9

B、8,9

C、1,8

D、9,8

80、以下程序的输出结果是______。 #include void main() { char st[20]="hello\0\t\\"; printf("%d%d\n",strlen(st),sizeof(st)); }

A、99

B、520

C、1320

D、2020

81、以下关于字符串的叙述中正确的是______。

A、C 语言中有字符串类型的常量和变量

B、两个字符串中的字符个数相同时才能进行字符串大小的比较

C、可以用关系运算符对字符串的大小进行比较

D、空串一定比空格打头的字符串小

82、请读程序片段(字符串内没有空格字符): printf("%d\n",strlen("ATS\n012\1\\") ); 上面程序片段的输出结果是______。

A、11

B、10

C、9

D、8

83、设有 static char str[]="Beijing"; 则执行 printf("%d\n",strlen(strcpy(str,"China") ) ); 后的输出结果为______。

A、5

B、7

C、12

D、14

84、下列描述中不正确的是______。

A、字符型数组中可以存放字符串

B、可以对字符型数组进行整体输入、输出

C、可以对整型数组进行整体输入、输出

D、不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

85、以下程序的输出结果是______。 #include void main( ) { int n[3][3], i, j; for(i=0;i<3;i++) for(j=0;j<3;j++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j]; printf("%d\n",n[i][j]); }

A、14

B、0

C、6

D、值不确定

86、以下程序的输出结果是______。 #include #include void main() { char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str) ); }

A、6

B、7

C、11

D、12

87、不能把字符串:Hello!赋给数组 b 的语句是______。

A、char b[10]={'H','e','l','l','0','!'};

B、char b[6]={'H','e','l','l','0','!'};

C、char b[10];strcpy(b,"Hello!");

D、char b[10]="Hello!";

88、若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则值为 4 的表达式是______。

A、a[g-c]

B、a[4]

C、a['d'-'c']

D、a['d'-c]

89、有以下程序 #include void main() { char a[7]="a0\0a0\0"; int i,j; i=sizeof(a); j=strlen(a); printf("%d %d\n",i,j); } 程序运行后的输出结果是______。

A、7 2

B、6 2

C、1 5

D、1 6

90、以下程序的输出结果是______。 #include void main() { char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k; for(k=1;k<3;k++) printf("%s\n",w[k]); }

A、EFGH IJKL

B、BCD FGH

C、KL ABCD

D、EFG IJ

91、有以下程序 #include void main() { char a[]="abcdefg",b[10]="abcdefg"; printf("%d %d\n",sizeof(a),sizeof(b)); } 执行后输出结果是______。

A、7 7

B、8 10

C、7 10

D、10 10

92、有以下程序 #include void main() { char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcpy(p+strlen(q),r); strcat(p,q); printf("%d %d\n",sizeof(p),strlen(p)); } 程序运行后的输出结果是______。

A、20 9

B、9 9

C、20 11

D、11 11

93、有以下程序 #include void main() { char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcat(p,r); strcpy(p+strlen(q),q); printf("%d\n",strlen(p)); } 程序运行后的输出结果是______。

A、9

B、6

C、11

D、7

94、若程序中定义了以下函数 double myadd(double a,double b) {return(a+b);} 并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是 ______。

A、double myadd(double a, b);

B、double myadd(double,double);

C、double myadd(double b, double a);

D、double myadd(double x, double y);

95、以下所列的各函数声明中,正确的是______。

A、void play(var a:Integer,var b:Integer)

B、void play(int a,b)

C、void play(int a,int b)

D、Sub play(a as integer,b as integer)

96、C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是______。

A、void

B、int

C、float

D、double

97、若程序中定义了以下函数, double myadd(double a,double b) {return(a+b);} 并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是 ______。

A、double myadd(double a, b);

B、double myadd(double,double);

C、double myadd(double b, double a);

D、double myadd(double x, double y);

98、下列叙述中正确的是______。

A、每一个 C 程序文件中都必须要有一个 main()函数

B、在 C 程序中 main()函数的位置是固定的

C、C 程序中所有函数之间都可以相互调用,与函数所在位置无关

D、在 C 程序的函数中不能定义另一个函数

99、有以下程序 #include fun(char p[][10]) { int n=0,i; for(i=0;i<7;i++) if(p[i][0]== 'T') n++; return n; } void main() { char str[][10]={ "Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; printf("%d\n",fun(str)); } 程序执行后的输出结果是______。

A、1

B、2

C、3

D、0

100、#include sub(int *s,int y) { static int t=3; y=s[t]; t--; } void main() { int a[]={1,2,3,4},i, x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x); } printf("\n"); }

A、1234

B、4321

C、0000

D、4444

8.3数组编程作业

1、(郑宗良出题)请编一个函数 void fun(int tt[M][N],int pp[N]),tt 指向一个 M 行 N 列的二维数组,求出二维数组每列中最小元素,并依次放入 pp 所指一维数组中。二维数组中的数已在主函数中赋予。

2、(郑宗良出题)程序定义了 N×N 的二维数组,并在主函数中赋值。请编写函数 fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的 s。 例如:a 数组中的值为 |0 1 2 7 9| |1 9 7 4 5| a= |2 3 8 3 1| |4 5 6 8 2| |5 9 1 4 1| 则返回主程序后 s 的值应为:3.375。

3、34、给定程序的功能是实现矩阵(3 行 3 列)的转置(即行列互换)。 例如,输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

4、329、程序定义了 N×N 的二维数组,并在主函数中自动赋值。请编写函数 fun( int a[][N]), 函数的功能是:使数组中第一行元素中的值与倒数第一行元素中的值对调、第二行元素中的 值与倒数第二行元素中的值对调、……、其他依次类推。例如:a 数组中的值为

8.4字符串编程作业

1、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。

2、例7.8 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

3、请编写函数fun,函数的功能是:在字符串中的所有字符中加入空格 例如,输入2020,则输出为:2 0 2 0。

4、规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中所有连续的*号。

8.5字符串编程作业2

1、在考生文件夹下的给定程代码中,利用参数传地址,编写fun函数,函数 fun 的功能是:实现主函数的两个整数的交换。 例如给 a 和 b 分别输入:60 和 65,输出为:a=65 b=60 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

2、请编写一个函数 void fun(char *tt,int pp[]),统计在 tt 字符串中'a'到'z'26 个字母各自出 现的次数,并依次放在 pp 所指数组中。 例如,当输入字符串:abcdefgabcdeabc 后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意: 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写 的若干语句

第十二周:程序结构

12.2 编译预处理和宏随堂测验

1、假设宏定义: #define DOUBLE(x) 2*x 则DOUBLE(1+2)的值是

2、假设宏定义如下: #define TOUPPER(c) ('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c)) 设s是一个足够大的字符数组,i是int型变量,则以下代码段的输出是: strcpy(s, "abcd"); i = 0; putchar(TOUPPER(s[++i]));

四川轻化工大学C语言第9章单元测验六(出题人:陈国超)

1、有以下程序 #include #define N 5 #define M N+1 #define f(x) (x*M) void main() { int i1,i2; i1=f(2); i2=f(1+1); printf("%d %d\n",i1,i2); } 程序的运行结果是______。

A、12 12

B、11 7

C、11 11

D、12 7

2、有以下程序 #include #define FNA(x) x*x #define FNB(x) x+x void main() { int a=2,b=4; printf("%d,%d\n",FNA(FNB(a)),FNB(FNA(b))); } 程序运行后的输出结果是______。

A、8,32

B、16,32

C、8,16

D、16,16

3、以下选项中的编译预处理命令行,正确的是______。

A、#define int INT;

B、##define eps 0.001

C、#DEFINE TRUE

D、#define PI 3.14

4、有以下程序 #include #define PT 3.5 #define S(x) PT*x*x void main() { int a=1,b=2; printf("%4.1f\n",S(a+b)); } 程序运行后的输出结果是______。

A、14.0

B、31.5

C、程序有错无输出结果

D、7.5

5、有以下程序 #include #define SUB(a)(a)-(a) void main() { int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf("%d\n",d); } 程序运行后的输出结果是______。

A、0

B、-12

C、-20

D、10

6、有如下程序 #include #define D(x) 4*x+1 void main() { int i = 2,j = 4; printf("%d\n", D(i+j)); } 程序运行后的输出结果是______。

A、13

B、25

C、9

D、12

7、以下程序的输出结果是______。 #define f(x) x*x void main() { int a=6,b=2,c; c=f(a)/f(b); printf("%d\n",c); }

A、9

B、6

C、36

D、18

8、有如下程序 #define N 2 #define M N+1 #define NUM 2*M+1 void main() { int i; for(i=1;i<=NUM;i++) printf("%d ",i); } 该程序中的for循环执行的次数是______。

A、5

B、6

C、7

D、8

9、以下关于宏的叙述中正确的是______。

A、宏名必须用大写字母表示

B、宏定义必须位于源程序中所有语句之前

C、宏替换没有数据类型限制

D、宏调用比函数调用耗费时间

10、若有以下程序 #include #define S(x) (x)*(x) #define T(x) S(x)/S(x)+1 void main() { int k=3, j=2; printf("%d,%d\n", S(k+j),T(k+j) ); } 则程序的输出结果是______。

A、25,2

B、25,26

C、11,12

D、11,2

11、以下for语句构成的循环执行了______次。 #include #define N 2 #define M N+1 #define NUM (M+1)*M/2 void main() { int i,n=0; for(i=1;i<=NUM;i++) { n++; printf("%d",n); } printf("\n"); }

A、5

B、6

C、8

D、9

12、有以下程序 #include #define SUB(X,Y) (X+1)*Y void main() { int a=3, b=4; printf("%d\n",SUB(a++ ,b++ )); } 程序运行后的输出结果是______。

A、16

B、20

C、12

D、25

13、有以下程序 #define P 3 int F(int x) { return(P*x*x); } void main() { printf("%d\n",F(3+5)); } 程序运行后的输出结果是______。

A、编译出错

B、29

C、25

D、192

14、以下程序的输出结果是______。 #define SQR(X) X*X void main() { int a=16,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d\n",a); }

A、16

B、2

C、9

D、1

15、有以下程序 #define f(x) (x*x) void main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } 程序运行后的输出结果是______。

A、64,28

B、4,4

C、4,3

D、64,64

16、若有以下程序 #include #define S(x) x*x #define T(x) S(x)*S(x) void main() { int k=5, j=2; printf("%d,%d\n", S(k+j),T(k+j)); } 则程序的输出结果是______。

A、49,2401

B、17,37

C、17,289

D、49,289

17、下面选项中关于编译预处理的叙述正确的是______。

A、凡是以#号开头的行,都被称为编译预处理命令行

B、预处理命令行必须使用分号结尾

C、预处理命令行不能出现在程序的最后一行

D、预处理命令行的作用域是到最近的函数结束处

18、有以下程序 #include #define D(x) 2*x+3 void main() { int i=1,j=2; printf("%d\n", D(i+j)); } 程序运行后的输出结果是______。

A、6

B、7

C、9

D、2

19、有以下程序 #include #define S(x) x/x void main() { int k=5, j=2; printf("%d,%d\n", S(k+j), S(j+k)); } 程序的运行结果是______。

A、7,7

B、1,1

C、7,9

D、9,9

20、以下叙述中正确的是______。

A、预处理命令行必须位于C源程序的起始位置

B、在C语言中,预处理命令行都以"#"开头

C、每个C程序必须在开头包含预处理命令行:#include

D、C语言的预处理不能实现宏定义和条件编译的功能

21、以下叙述中正确的是______。

A、在一个程序中,允许使用任意数量的#include命令行

B、在包含文件中,不得再包含其他文件

C、#include命令行不能出现在程序文件的中间

D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接

22、有以下程序: #include"stdio.h" int fun(int n) { static int t=1; int i=1; for( ; i<=n; i++) t*=i; return t; } void main() { int t=1,i; for(i=2;i<4; i++) t+=fun(i); printf("%d\n",t); } 程序的运行结果是______。

A、15

B、11

C、8

D、4

23、设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是______。

A、auto

B、register

C、static

D、auto或register

24、设有以下函数: f(int a) { int b=0; static int c=3; b++;c++; return(a+b+c); } 如果在下面的程序中调用该函数,则输出结果是______。 void main() { int a=2, i; for(i=0;i<3;i++) printf("%d\n",f(a)); }

A、7 8 9

B、7 9 11

C、7 10 13

D、7 7 7

25、有以下程序: #include int mul(int val) { static int init=1; return init*=val; } void main() { int i; for (i=1;i<=5;i++) printf("%d,",mul(i)); } 程序运行后的输出结果是______。

A、1,2,6,24,120,

B、1,2,3,4,5,

C、1,1,1,1,1,

D、1,2,4,6,8,

26、有以下程序: #include double fun(int n) { static double f=1; f*=n; return f; } void main() { int i; double s=0; for(i=1;i<6;i++) s+=fun(i); printf("%lf\n", s); } 程序计算的是______。

A、s=1!+2!+3!+4!+5!

B、s=1+2+3+4+5

C、s=1*2*3*4*5

D、s=1!*2!*3!*4!*5!

27、有以下程序: #include int fun(int a) { int b=2; static int c=2; b++; c--; return(a+b+c); } void main() { int k, a=2; for(k=0; k<3; k++) printf("%d ", fun(a)); printf("\n"); } 执行后的输出结果是______。

A、6 7 8

B、6 6 6

C、6 5 4

D、4 5 6

28、有以下程序: #include int f(int k) { static int n=0; int m=0; n++; m++; k++; return n+m+k; } void main() { int k; for(k=0;k<2;k++) printf("%d,",f(k)); printf("\n"); } 程序运行后的输出结果是______。

A、3,5,

B、3,6,

C、3,7,

D、0,3,

29、有以下程序: #include int a=2; int f() { static int n; int m; m=n=0; n++; a++; m++; return n+m+a; } void main() { int k; for (k=0; k<3; k++) printf("%d,", f( )); printf("\n"); } 程序的运行结果是______。

A、5,6,7,

B、5,7,9,

C、5,8,11,

D、5,5,5,

30、有以下程序: #include int fun(int a) { int b=0; static int c=3; a=(c++,b++); return(a); } void main() { int a=2,i,k; for(i=0;i<2;i++) k=fun(a++); printf( "%d\n",k ); } 程序的输出结果是______。

A、0

B、4

C、1

D、2

31、以下程序的输出结果是______。 void main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }

A、8,17

B、8,16

C、8,20

D、8,8

32、以下叙述中正确的是______。

A、全局变量的作用域一定比局部变量的作用域范围大

B、静态(static)类别变量的生存期贯穿于整个程序的运行期间

C、函数的形参都属于全局变量

D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值

33、以下叙述中正确的是______。

A、局部变量说明为static存储类,其生存期将得到延长

B、全局变量说明为static存储类,其作用域将被扩大

C、任何存储类的变量在未赋初值时,其值都是不确定的

D、形参可以使用的存储类说明符与局部变量完全相同

34、以下选项中叙述错误的是______。

A、C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

B、在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

C、C程序函数中定义的自动变量,系统不自动赋确定的初值

D、C程序函数的形参不可以说明为static型变量

35、有以下程序 int a=2; int f(int n) { static int a=3; int t=0; if(n%2) { static int a=4; t+=a++; } else { static int a=5; t+=a++; } return t+a++; } void main() { int s=a,i; for(i=0;i<3;i++) s+=f(i); printf("%d\n",s); } 程序运行后的输出结果是______。

A、26

B、28

C、29

D、24

36、有以下程序: #include int a=1,b=2; void fun1(int a,int b) { printf("%d%d",a,b); } void fun2() { a=3;b=4; } void main() { fun1(5,6); fun2(); printf("%d %d\n",a,b); } 程序运行后的输出结果是______。

A、125 6

B、563 4

C、561 2

D、345 6

37、有以下程序: #include int a=1; int f(int c) { static int a=2; c=c+1; return (a++)+c; } void main() { int i,k=0; for(i=0;i<2;i++) { int a=3; k+=f(a); } k+=a; printf("%d\n",k); } 程序的运行结果是______。

A、14

B、15

C、16

D、17

38、有以下程序 #include int m=12; int fun( int x,int y ) { static int m=3; m=x*y-m ; return (m); } void main() { int a=7, b=5; m=fun( a,b )/m; printf("%d\n", fun( a,b )/m ); } 程序运行后的输出结果是______。

A、0

B、1

C、2

D、3

39、有以下程序: #include int a=2; int f() { static int n=0; int m=0; n++; a++; m++; return n+m+a; } void main() { int k; for (k=0; k<3; k++) printf("%d,", f()); printf("\n"); } 程序的运行结果是______。

A、5,6,7,

B、5,7,9,

C、5,8,11,

D、5,5,5,

40、有以下程序: #include int m=1,n=2; void sub1(int m,int n) { m+=2; n++; } void sub2() { m++; n+=2; } void main() { printf("%d,%d,",m,n); sub1(4,5); printf("%d,%d,",m,n); sub2(); printf("%d,%d\n",m,n); } 程序运行后的输出结果是______。

A、1,2,1,2,2,4

B、1,2,6,6,7,8

C、1,2,2,4,2,4

D、1,2,6,6,2,4

41、有如下程序 #include void get_put() { char ch; ch = getchar(); if (ch != '\n') get_put(); putchar(ch); } void main() { get_put(); printf("\n"); } 程序运行时,输入1234回车,则输出结果是______。

A、4321

B、1234

C、4444

D、1111

42、有以下程序 fun(int x) { int p; if(x==0||x==1) return(3); p=x-fun(x-2); return p; } void main() { printf("%d\n",fun(7)); } 执行后的输出结果是______。

A、7

B、3

C、2

D、0

43、有以下程序 #include void fac2(int ); void fac1(int n) { printf("*"); if(n>0) fac2(n-1); } void fac2(int n) { printf("#"); if(n>0) fac2(--n); } void main() { fac1(3); } 程序的运行结果是______。

A、*###

B、*##*

C、**##

D、*#*#

44、#include void fun( int a ) { if( a>1 ) fun(a-1); printf("%d ",a); } void main() { int q=5; fun(q); printf("\n"); } 执行后的输出结果是______。

A、1 2 3 4 5

B、5 4 3 2 1

C、0 1 2 3 4 5

D、5 4 3 2 1 0

45、有以下程序 #include int f(int x) { if(x<2) return 1; return x*f(x-1) + f(x-2); } void main() { int y; y=f(3); printf ("%d\n",y); } 程序的输出结果是______。

A、7

B、10

C、13

D、9

46、有如下程序 #include void get_put() { char ch; ch = getchar(); if (ch != '\n') get_put(); putchar(ch); } void main() { get_put(); } 程序运行时,输入ABCD回车,程序的输出结果是______。

A、DCBA

B、DCDC

C、BABA

D、ABCD

47、#include int sum(int * array, int len) { if (len == 1) return array[1]; else return array[1] + sum(array+1, len-1); } void main() { int array[5] = {0,9,1,2}, res; res = sum(array, 3);printf("%d\n", res); } 程序运行后的输出结果是______。

A、8

B、11

C、12

D、27

48、有以下程序 #include void fun( int n ) { if( n/2 ) fun(n/2); printf("%d",n%2 ); } void main() { fun( 10 ); printf("\n"); } 程序运行后的输出结果是______。

A、1010

B、1000

C、1100

D、0101

49、有以下程序 #include void f(int x[], int n) { if(n>1) { printf("%d,", x[0]); f(&x[1], n-1); printf("%d,", x[0]); } else printf("%d,", x[0]); } void main() { int z[3] = {4,5,6}; f(z, 3); printf("\n"); } 程序运行后的输出结果是______。

A、4,5,6,5,4,

B、6,5,4,6,5,4,

C、4,5,6,4,5,6,

D、6,5,4,5,6,

50、有以下程序 #include void fun(char c) { if(c>'x') fun(c-1); printf("%c",c); } void main() { fun('z'); } 程序运行后的输出结果是______。

A、xyz

B、wxyz

C、zyxw

D、zyx

51、有以下程序 int fun(int n) { if(n==1) return 1; else return(n+fun(n-1)); } void main() { int x; scanf("%d",&x); x=fun(x); printf("%d\n",x); } 执行程序时,给变量x输入10,程序的输出结果是______。

A、55

B、54

C、65

D、45

52、有以下程序 #include< stdio.h> void f(int x[], int n) { if (n> 1) { printf("%d,", x[n-1]); f(x, n-1); printf("%d,", x[n-1]); } else printf("%d,", x[0]); } void main() { int z[3] = {1, 2, 3}; f(z,3); printf("\n"); } 程序运行后的输出结果是______。

A、3,2,1,2,3,

B、3,1,3,

C、1,2,3,1,2,3,

D、1,2,3,2,1,

53、有以下程序 #include int f(int x) { int y; if(x==0||x==1) return(3); y=x*x-f(x-2); return y; } void main() { int z; z=f(3); printf("%d\n",z); } 程序的运行结果是______。

A、0

B、9

C、6

D、8

54、有下列程序 #include void f(int x[], int n) { if (n>1) { printf("%d", x[n-1]); f(x,n-1); printf("%d", x[n-1]); } else printf ("%d",x[n-1]); } void main() { int a[4]={1,2,3,4}; f(a, 4); } 程序执行后的输出结果是______。

A、4321234

B、43211234

C、1234321

D、12344321

55、有以下程序 int f(int n) { if (n==1) return 1; else return f(n-1)+1; } void main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是______。

A、4

B、3

C、2

D、1

56、有如下程序: long fib(int n) { if(n>2) return (fib(n-1) + fib(n - 2)); else return(2); } void main() { printf("%d\n",fib(3)); } 该程序的输出结果是______。

A、2

B、4

C、6

D、8

57、以下程序的输出结果是______。 long fun(int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } void main() { printf("%ld\n",fun(3)); }

A、1

B、2

C、3

D、4

58、以下叙述中错误的是______。

A、在函数外部定义的变量在所有函数中都有效

B、在函数内部定义的变量只能在本函数范围内使用

C、函数中的形参属于局部变量

D、在不同的函数中可以使用相同名字的变量

59、以下叙述错误的是______。

A、未经赋值的全局变量值不确定

B、未经赋值的auto变量值不确定

C、未经赋值的register变量值不确定

D、未经赋值的静态局部变量值为0

60、以下与存储类别有关的四组说明符中,全部属于静态类的一组是______。

A、register和extern

B、auto和static

C、register和static

D、extern和static

61、有以下程序: #include int d=1; void fun(int p) { int d=5; d+=p++; printf("%d ", d ); } void main() { int a=3; fun( a ); d+=a++; printf("%d\n",d); } 程序的输出结果是______。

A、8 5

B、9 6

C、9 4

D、8 4

62、以下程序的结果是______。 int a,b; void fun() { a=100; b=200; } void main() { int a=5,b=7; fun(); printf("%d %d\n",a,b); }

A、100 200

B、5 7

C、200 100

D、7 5

63、有以下程序: #include void main() { int i=1, j=3; printf("%d," ,i++ ); { int i=0;i+=j*2; printf("%d,%d," ,i,j ); } printf("%d,%d\n" ,i,j ); } 程序运行后的输出结果是______。

A、1,6,3,1,3

B、1,6,3,2,3

C、1,6,3,6,3

D、1,7,3,2,3

64、有以下程序: int a=3; void main() { int s=0; { int a=5;s+=a++; } s+=a++; printf("%d\n",s); } 程序运行后的输出结果是_______。

A、8

B、10

C、7

D、11

65、在一个C源程序文件中所定义的全局变量,其作用域为______。

A、所在文件的全部范围

B、所在程序的全部范围

C、所在函数的全部范围

D、由具体定义位置和extern说明来决定范围

66、以下针对全局变量的叙述错误的是______。

A、用extern说明符可以限制全局变量的作用域

B、全局变量是在函数外部任意位置上定义的变量

C、全局变量的作用域是从定义位置开始至源文件结束

D、全局变量的生存期贯穿于整个程序的运行期间

67、有以下程序: int a=4; int f(int n) { int t=0; static int a=5; if(n%2) { int a=6; t+=a++; } else { int a=7; t+=a++; } return t+a++; } void main() { int s=a,i=0; for(;i<2;i++) s+=f(i); printf("%d\n",s); } 程序运行后的输出结果是______。

A、24

B、28

C、32

D、36

68、有以下不完整程序: #include int fun(int b) { 【】 return a+b; } void main() { int i; i=fun (5); printf ("%d\n",i); } int a=10; 若要程序能正确运行并得到结果15,在【】处,所应加入的变量声明是______。

A、extern int a;

B、register int a;

C、auto int a;

D、static int a;

69、以下叙述中正确的是______。

A、全局变量的存储类别可以是静态类

B、对于变量而言,"定义"和"说明"这两个词实际上是同一个意思

C、在复合语句中不能定义变量

D、函数的形式参数不属于局部变量

70、以下程序的输出结果是______。 int f() { static int i=0; int s=1; s+=i;i++; return s; } void main() { int i,a=0; for(i=0;i<5;i++) a+=f(); printf("%d\n",a); }

A、20

B、24

C、25

D、15

71、有以下程序: #define Out(n) n%2==0?"%c":"%d" #include void main() { int x; for(x=65; x<69; x++) printf(Out(x),x); } 程序的运行结果是______。

A、A66C68

B、65B67D

C、65666768

D、ABCD

72、有以下程序: #include #define S(x) 4*(x)*x+1 void main() { int k=5,j=2; printf("%d\n",S(k+j)); } 程序运行后的输出结果是______。

A、197

B、143

C、33

D、28

73、有一个名为init.txt的文件,内容如下: #define HDY(A,B) A/B #define PRINT(Y) printf("y=%d\n",Y) 有以下程序: #include"init.txt" void main() { int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d);PRINT(k); } 下面针对该程序的叙述正确的是______。

A、编译出错

B、运行出错

C、运行结果为 y=0

D、运行结果为 y=6

74、有以下程序: #include #define S(x) x/x*x void main() { int k=6, j=3; printf("%d,%d\n",S(k+j),S(j+k)); } 程序运行后的输出结果是______。

A、27,27

B、9,9

C、27,29

D、29,29

75、以下程序的输出结果是______。 #include #define FUDGE(y) 2.84+y #define PR(a) printf("%d",(int)(a)) #define PRINT1(a) PR(a);putchar('\n') void main() { int x=2; PRINT1(FUDGE(5)*x); }

A、11

B、12

C、13

D、15

76、有以下程序: #include #define S(x) x*x void main() { int k=5, j=2; printf("%d,%d\n", S(k+j+2),S(j+k+2)); } 程序的运行结果是______。

A、21,18

B、81,81

C、21,21

D、18,18

77、以下叙述中正确的是______。

A、预处理命令行必须位于源文件的开头

B、在源文件的一行上可以有多条预处理命令

C、宏名必须用大写字母表示

D、宏替换不占用程序的运行时间

78、若程序中有宏定义行:#define N 100 则以下叙述中正确的是______。

A、宏定义行中定义了标识符N的值为整数100

B、在编译程序对C源程序进行预处理时用100替换标识符N

C、对C源程序进行编译时用100替换标识符N

D、在运行时用100替换标识符N

79、以下关于编译预处理的叙述中错误的是______。

A、预处理命令行必须位于源程序的开始

B、源程序中凡是以#开始的控制行都是预处理命令行

C、一行上只能有一条有效的预处理命令

D、预处理命令是在程序正式编译之前被处理的

80、程序中头文件type1.h的内容是: #define N 5 #define M1 N*3 程序如下: #include "type1.h" #define M2 N*2 void main() { int i;i=M1+M2; printf("%d\n",i); } 程序编译后运行的输出结果是______。

A、10

B、20

C、25

D、30

81、设有宏定义: #define IsDIV(k,n) ((k%n==1)?1:0) 且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是______。

A、判断m是否能被5或者7整除

B、判断m是否能被5和7整除

C、判断m被5或者7整除是否余1

D、判断m被5和7整除是否都余1

82、下面关于编译预处理的命令行,正确的是______。

A、#define PAI 3.14

B、#Define Eps 0.00001

C、##DEFINE FALSE 0

D、#define int INT

83、以下关于宏的叙述错误的是______。

A、宏名必须用大写字母构成

B、宏名不具有类型

C、宏替换不具有计算功能

D、宏替换不占用运行时间

84、有以下程序 #include int fun(int a, int b) { static int m=0, i=2; i+=m+1; m=i+a+b; return m; } void main() { int k=4, m=1, p; p=fun( k, m ); printf("%d,",p); p =fun( k, m ); printf("%d\n",p); } 程序运行后的输出结果是______。

A、8,16

B、8,17

C、8,8

D、8,20

85、有以下程序 #include int mm; int func(int a) { static int n=3; int i; for(i=1;i

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值