200以内16的倍数大学c语言,C语言程序设计(2)-中国大学mooc-题库零氪

第5周 选择结构程序设计

5.1 关系运算符和关系表达式随堂测验

1、下列运算符中优先级最高的是:

A、=

B、+

C、++

D、<

2、下列运算符中优先级最低的是:

A、=

B、+

C、++

D、>

3、下列运算符中结合方向与其他不同的是:

A、=

B、+

C、<=

D、>

5.2 逻辑运算符和逻辑表达式随堂测验

1、下列运算符中优先级最高的是:

A、=

B、+

C、*

D、&&

2、下列运算符中优先级最低的是:

A、==

B、+

C、++

D、||

3、下列运算符中结合方向与其他不同的是:

A、!

B、&&

C、||

D、+

5.3 if 语句随堂测验

1、下列符合c语法的if语句是:

A、if 3>5 then printf("Ok!");

B、if 3>5 printf("Ok!")

C、if (3>5) then printf("Ok!");

D、if (3>5) printf("Ok!");

2、在c语言中,叙述正确的是:

A、if语句可以不以 分号;结尾

B、if语句必须要有else

C、if后面小括号里可以加分号;

D、if语句不一定要有else

3、下列符合c语法的if语句是:

A、if (3>5;) printf("Ok!");

B、if (3>5) then printf("Ok!");

C、if (3>5) printf("Ok!")

D、if (3>5) printf("Ok!");

5.4 switch语句随堂测验

1、在c语言中,叙述正确的是:

A、switch语句可以没有default分支

B、switch语句必须有default分支

C、switch语句每个分支必须执行

D、case与冒号之间可以是条件表达式

2、case与冒号之间可以是浮点类型数据

3、switch语句每个分支必须执行

5.5 条件运算符和条件表达式随堂测验

1、下列运算符中优先级最低的是:

A、==

B、+

C、++

D、? :

2、下列运算符中结合方向与其他不同的是:

A、? :

B、+

C、&&

D、||

3、条件运算符符可以嵌套使用。

5.6 选择结构程序举例随堂测验

1、以下代码输出结果是: if(3>2>1)printf("ok"); else printf("no");

A、ok

B、no

C、不确定

D、代码错误,不能输出

2、以下代码输出结果是: int x=10,y=20,z=30; if(x||(y=50)>z)printf("y=%d",y); else printf("y=%d",y);

A、y=20

B、y=50

C、不确定

D、代码错误,不能输出

3、以下代码输出结果是: char x='f'; if('A'

A、ok

B、no

C、不确定

D、代码错误,不能输出

选择结构

1、程序运行时从键盘输入两个整数,然后输出两个数中的较小者。

2、输入一个小多于5位的正整数,要求如下: 1、求出它的位数并输出; 2、按逆序输出它的每一位数码

第6周 循环结构程序设计

6.1 while语句随堂测验

1、下列程序的输出结果是__ int main() { int t=98765,x; while(t!=0) { x=t%10; printf("%d",x); t/=10; } return 0; }

A、98765

B、56789

C、57689

D、程序不停机

2、循环条件表达式不仅限于关系表达式和逻辑表达式,可以是任意类型的表达式。

3、while语句的循环体,可能一次也不被执行。

4、如果循环条件表达式的值__,表示条件为真;如果表达式的值为___,表示条件为假。

5、当循环体包含一条以上的语句时,必须用__括起来,组成复合语句。

6、本程序执行时出现__ int main() { int k=1,sum=0; while(k<=10) sum=sum+k; k++; printf("%d\n",sum); return 0; }

7、下列程序段中的循环执行次数为__ int x=10; while(x) x=x/2;

8、k=100; while(k--); printf("%3d\n",k);

6.2 do…while语句随堂测验

1、int main() { int t=98765,x; do { x=t%10; printf("%d",x); t/=10; }while(t!=0) return 0; }

A、98765

B、56789

C、57689

D、程序不停机

2、若某do-while的循环体由3条语句组成,这3条语句不必用大括号“{}”括起来。

3、while语句与do-while语句执行的过程相同。

4、do-while语句的循环体,可能一次也不被执行。

5、下列程序段的输出结果是__ int a=3,b=15; do { a+=b;b=b/2; }while(b>1); printf("%d\n",a);

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

6.3 for语句随堂测验

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、下列程序段的输出结果是__ int k=12; for(;k>8;k--); if(k%2==0) printf("%d",k);

A、1210

B、12

C、8

D、无限循环

3、for(表达式1;表达式2;表达式3)中的3个表达式都可以省略,但用于分割3个表达式的两个分号“;”不能省略。

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

5、下列程序的输出结果是__ int main() { int m; for(m=6;m<10;m++,m++) printf("**%d",m); return 0; }

6.4 循环嵌套随堂测验

1、以下代码段的输出是__ int i,b,k=0; for(i=1;i<=5;i++ ) { b=i%2; while(b-->=0) k++; } printf("%d,%d", k,b);

A、3,-1

B、8,-1

C、3,0

D、8,-2

2、下列程序段的输出结果是__ int a,b,m; for(a=5;a>=1;a--) { m=0; for(b=a;b<=5;b++) m=m+a*b; } printf("%d\n",m);

A、30

B、15

C、20

D、10

3、while、do-while和for三种循环可以互相嵌套。

4、双重循环的执行过程是外层循环的循环体执行一次,内层循环执行一遍。

5、以下代码段的输出是__ int i,b,k=0; for(i=1;i<=5;i++ ) { b=i%2; do k++; while(b-->=0) ; } printf("%d,%d", k,b);

6、下列程序的输出结果是__ int a,b,m; m=0; for(a=5;a>=1;a--) { for(b=a;b<=5;b++) m=m+a*b; } printf("%d\n",m);

6.5 辅助控制语句随堂测验

1、下面代码段的输出是__ int c=5,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、10

B、8

C、6

D、12

2、break语句只能用于__中。

A、while语句

B、do-while语句

C、for语句

D、switch语句

3、continue语句只能用于__中。

A、while语句

B、do-while语句

C、for语句

D、switch语句

4、下面代码段的输出是__ int k,m; for(k=0;k<10;k++ ) { m=k*k;; if(m>50) break; } printf("%d,%d\n",k,m);

5、下面代码段的输出是__ int k,m; for(k=0;k<10;k++ ) { if(m>50) continue; m=k*k; } printf("%d,%d\n",k,m);

6.6 循环结构实例随堂测验

1、百鸡百钱问题。有一百只鸡,价值一百文钱,其中公鸡五文钱一只,母鸡三文钱一只,三只鸡雏一文钱,问公鸡、母鸡和鸡雏各多少只?现用枚举法求解,假设公鸡有x只、母鸡有y只,鸡雏有z只,程序如下: #include int main( ) { int x,y,z,k=0; for(x=0;x<100;x++) for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(x+y+z==100&&x*5+y*3+z/3==100) { k++; printf("Plan %d is x:%-3d y:%-3d z:%-3d\n",k,x,y,z); } return 0; } 此程序可以求出正确的解。

2、百鸡百钱问题。现用枚举法求解,假设公鸡有x只、母鸡有y只,鸡雏有z只,程序如下: #include #include int main( ) { int x,y,z,k=0; for(x=0;x<100;x++) for(y=0;y<=100;y++) { z=100-x-y; if(z>=0&&z%3==0) { if(fabs(x*5+y*3+z/3-100)<1e-3) { k++; printf("Plan %d is x:%-3d y:%-3d z:%-3d\n",k,x,y,z); } } } return 0; } 此程序可以求出正确的解。

3、计算1!+2!+3!+4!+5!编程如下,程序中下划线处应填写__。 #include void main( ) { int i; int t=__,s=__; for(i=1;i<6;i++) { t=t*i; s=s+t; } printf("1!+2!+3!+4!+5!=%d\n",s); }

第1次单元测验

1、下列程序的输出结果是__ 。 int main() { int t=98765,x; while(t!=0) { x=t%10; printf("%d",x); t/=10; } return 0; }

A、98765

B、56789

C、57689

D、程序不停机

2、下列程序的输出结果是__ 。 int main() { int t=98765,x; do { x=t%10; printf("%d",x); t/=10; }while(t!=0); return 0; }

A、98765

B、56789

C、57689

D、程序不停机

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

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++ ) {...}

4、下列程序段的输出结果是__ int k=12; for(;k>8;k--); if(k%2==0) printf("%d",k);

A、1210

B、12

C、8

D、无限循环

5、以下代码段的输出是__ int i,b,k=0; for(i=1;i<=5;i++ ) { b=i%2; while(b-->=0) k++; } printf("%d,%d", k,b);

A、3,-1

B、8,-1

C、3,0

D、8,-2

6、下列程序段的输出结果是__ int a,b,m; for(a=5;a>=1;a--) { m=0; for(b=a;b<=5;b++) m=m+a*b; } printf("%d\n",m);

A、30

B、15

C、20

D、10

7、下面代码段的输出是__ int c=5,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、10

B、8

C、6

D、12

8、关于双重循环的执行过程,以下说法正确的是__。

A、外层循环的循环体执行一次,内层循环执行一遍。

B、外层循环的循环体执行一次,内层循环执行一次。

C、外层循环的循环体执行一遍,内层循环执行一次。

D、外层循环的循环体执行一遍,内层循环执行一遍。

9、9、计算1!+2!+3!+4!+5!编程如下,程序中下划线处应填写__。 #include void main( ) { int i; int t=__,s=__; for(i=1;i<6;i++) { t=t*i; s=s+t; } printf("1!+2!+3!+4!+5!=%d\n",s); }

A、0 0

B、1 0

C、0 1

D、1 1

10、下面代码段的输出是__ int k,m; for(k=0;k<10;k++ ) { m=k*k; if(m>50) break; } printf("%d,%d\n",k,m);

A、8,64

B、9,81

C、10,64

D、10,81

11、下面代码段的输出是__ int k,m; for(k=0;k<10;k++ ) { if(m>50) continue; m=k*k; } printf("%d,%d\n",k,m);

A、8,64

B、9,81

C、10,64

D、10,81

12、假设有定义: int k; 下面程序段编译运行的情况是___。 for (k=1; k; k++) printf ("%d ", k);

A、能运行, 是死循环

B、能运行, 正常结束

C、编译错误

D、以上说法都不对

13、for(表达式1;;表达式3)可理解为____。

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

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

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

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

14、以下哪个for语句是错误的__

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

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

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

D、for(;;);

15、while(x%3) a++;中的表达式x%3等价于____

A、x%3!=0

B、x%3==1

C、x%3==2

D、x%3==0

16、while (!x&&!y)中的循环条件表达式等价于__

A、!(x!=0||y!=0)

B、x=0 && y=0

C、!(x==0 && y==0)

D、!(x==0 || y==0)

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

A、e != 1

B、e == 1

C、e!=0

D、e == 0

18、对于以下代码: int i; for(i=0;i<10;i++) printf("%d",i); for循环结束后,i的值是__

A、i不再存在了

B、11

C、10

D、9

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

A、****#

B、***#

C、*#

D、****##

20、对于以下代码: int i=6; do{ printf("%d", i--); }while(0); 正确的是__

A、打印不出东西

B、打印出5

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

D、打印出6

21、对于以下代码: int i=6; do{ printf("%d", i--); }while(i--); 正确的是__

A、输出642

B、输出6420

C、输出6420-2

D、输出6420-2-4...,程序无法停机

22、对于以下代码: int i=6; do{ printf("%d", i--); }while(i); 最后一个输出的值是__

A、0

B、1

C、2

D、3

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

A、****#

B、***#

C、**#*

D、****##

24、在代码:while(e)中,e等价于__

A、e != 1

B、e == 1

C、e!=0

D、e == 0

25、在代码:while(e==0)中,e等价于__

A、e != 1

B、e == 1

C、e!=0

D、!e

26、在代码:while(e||0)中,e等价于__

A、e != 1

B、e == 1

C、e!=0

D、e == 0

27、在代码:while(e&&1)中,e等价于__

A、e != 1

B、e == 1

C、e!=0

D、e == 0

28、在代码:while(e||1)中,e等价于__

A、e取任何值

B、e == 1

C、e!=0

D、e == 0

29、若int k;while(k%4)中,使循环条件不成立的是__

A、k=0

B、k=1

C、k=2

D、k=3

30、设有程序段int k=5; while(k=0) k=k-1;则下面描述中正确的是__

A、while循环执行5次

B、循环是无限循环

C、循环体语句一次也不执行

D、循环体语句执行一次

31、设有程序段int k=5; do k=k-1; while(k=0);则下面描述中正确的是___

A、while循环执行5次

B、循环是无限循环

C、循环体语句一次也不执行

D、循环体语句执行一次

32、有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf("%d",s);则

A、运行程序段后输出0

B、运行程序段后输出1

C、程序段中的控制表达式是非法的

D、程序段执行无限次

33、下面程序段的运行结果是 int a,b,c; a=1;b= 2;c=2; while(--b,c--,a--) printf("%d,%d,%d",a,b,c);

A、1,2,0

B、2,1,0

C、1,2,1

D、0,1,1

34、下面程序段的运行结果是: x=y=0; while(x<15) y++,x+=++y; printf("%d,%d",y,x);

A、20,7

B、6,12

C、20,8

D、8,20

35、下面程序段的运行结果是 int n=0; while(n++<=2);printf("%d",n);

A、2

B、3

C、4

D、有语法错

36、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循 环,请选择填空: int a,b,t; scanf("%d%d",&a,&b); while( ___ ) { if(a>b) {t=a;a=b;b=t;} printf("%d,%d",a,b); scanf("%d%d",&a,&b); }

A、!a=b

B、a!=b

C、a==b

D、a=b

37、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n, 并输出m、n中的较大者,请选择填空: int m=0,n=0; char c; while((__)!='\n') { if(c>='A'&& c<='Z') m++ ; if(c>='a'&& c<='z') n++; } printf("%d\n",m)

A、scanf("%d",c)

B、getchar()

C、c=getchar()

D、scanf("%c",c)

38、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z 变成B. 请选择填空 char c; while((c=getchar())!='\n') { if(c>= 'a'&&c<='z') c-= 30; if(c>'z'&&c<='z'+ 2) ___ ; printf("%c",c); }

A、c='B'

B、c='A'

C、c-=26

D、c=c+26

39、以下描述中正确的是__

A、由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B、do一while循环由do开始,用while结束,在while(表达式)后面不能写分号

C、在do一while循环体中,一定要有能使while后表达式值变为零("假")的操作

D、do一while循环中,根据情况可以省略while

40、若有如下语句 int x=3; do { printf("%d\n",x -=2);} while(!(--x)); 则上面程序段__

A、输出的是1

B、输出的是1和-2

C、输出的是3和0

D、是死循环

41、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include main() { int n,sum=0; n=2345; do { sum=sum+(n%10)*(n%10); n=__; }while(n); printf("sum=%d",sum);}

A、n/1000

B、n/100

C、n/10

D、n%10

42、下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。 main() { 1ong int num; scanf("%ld",&num); do { if(__) printf("%ld",num); scanf("%ld",&num); }while(!num==0); }

A、num%100/10==3

B、num/100%10==3

C、num%10/10==3

D、num/10%10==3

43、下面程序的运行结果是__ main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); }

A、-1

B、1

C、8

D、0

44、下面有关for循环的正确描述是__

A、for循环只能用于循环次数已经确定的情况

B、for循环是先执行循环体语句,后判断表达式

C、在for循环中,不能用break语句跳出循环体

D、for循环的循环体语句中, 可以包含多条语句,但必须用花括号括起来

45、若i为整型变量,则以下循环执行次数是__ for (i=2;i==0;) printf("%d",i-- );

A、无限次

B、0次

C、1次

D、2次

46、以下不是无限循环的语句为:

A、for (y=0,x=1;x > ++y;x =i++) i=x ;

B、for (;; x++=i);

C、while(1){x ++;}

D、for(i=10; ;i--) sum+=i;

47、下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空. main() { int i,sum= 0; for(i=1;i<=50;i++) if(__) sum+=i; printf("%d",sum); }

A、(int)(i/7)==i/7

B、(int)i/7==i/7

C、i%7= 0

D、i%7==0

48、下面程序的功能是计算 1至10之间的奇数之和及偶数之和。请选择填空; main() { int a,b,c,i; a=c=0; for(i=0;i<=10;i+=2) { a+=i; ___; c+=b; } printf("偶数之和=%d\n",a); printf("奇数之和=%d\n",c-11); }

A、b=i--

B、=i+1

C、b=i++

D、b=i-1

49、下面程序段: for(t=1;t<=100;t++) { scanf("%d",&x); if(x<0) continue; printf("%3d",t); }

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

B、x>=0时什么也不输出

C、printf函数永远也不执行

D、最多允许输出100个非负整数

50、下面程序段: x=3; do { y=x--; if(!y) { printf("x"); continue; } printf("#"); }while (1<=x<=2);

A、将输出##

B、将输出##*

C、是死循环

D、含有不合法的控制表达式

51、与下面程序段等价的是: for(n=100;n<= 200; n++) { if (n%3==0) continue; printf("%4d",n);}

A、for(n=100;(n%3)&& n<=200;n++) printf("%4d",n);

B、for(n=100;(n%3)|| n<=200;n++) printf("%4d",n);

C、for(n=100;n<=200;n++)if(n%3!=0)printf("%4d",n)

D、for(n=100;n<=200; n++) {if(n%3) printf("%4d",n); else continue; break;}

52、下面程序的运行结果是: main() { int i,j,a=0; for (i=0;i<2;i++) { for (j=0;j<=4;j++) { if(j%2) break; a++; } a++; } printf("%d\n",a); }

A、4

B、5

C、6

D、7

53、下列运算符中优先级最高的是:

A、=

B、+

C、--

D、<

54、下列运算符中优先级最低的是:

A、+=

B、+

C、++

D、>

55、下列运算符中结合方向与其他不同的是:

A、+=

B、+

C、<=

D、>

56、下列运算符中优先级最高的是:

A、=

B、+

C、!

D、&&

57、下列运算符中优先级最低的是:

A、==

B、+

C、++

D、+=

58、下列符合c语法的if语句是:

A、if 3>5 then printf("Ok!");

B、if 3>5 printf("Ok!")

C、if (3>5) then printf("Ok!");

D、if (3>5) printf("Ok!");

59、下列运算符中优先级最低的是:

A、==

B、+

C、++

D、? :

60、下列运算符中结合方向与其他不同的是:

A、? :

B、+

C、&&

D、||

61、下列运算符中,结合方向是从右至左的是:

A、? :

B、/

C、&&

D、>=

62、以下代码输出结果是: if(5>3>1)printf("ok"); else printf("no");

A、ok

B、no

C、不确定

D、代码错误,不能输出

63、以下代码输出结果是: int x=0,y=20,z=30; if(x||(y=50)>z)printf("y=%d",y); else printf("y=%d",y);

A、y=20

B、y=50

C、不确定

D、代码错误,不能输出

64、以下代码输出结果是: char x='G'; if('Z'>x>'A')printf("ok"); else printf("no");

A、ok

B、no

C、不确定

D、代码错误,不能输出

65、以下代码输出结果是: int x=0,y=20,z=30 if(x||(y=50)>z)printf("y=%d",y); else printf("y=%d",y);

A、y=20

B、y=50

C、不确定

D、代码错误,不能执行

66、C语言中循环语句有__。

A、while语句

B、do-while语句

C、for语句

D、loop语句

67、for(表达式1;表达式2;表达式3)中的3个表达式可被省略的是__。

A、其中1个

B、其中2个

C、3个都可以

D、表达式1和表达式3,表达式2不能省略

68、循环条件表达式可以是__。

A、关系表达式

B、逻辑表达式

C、赋值表达式

D、逗号表达式

69、若int x=2;以下__表达式作为循环条件表达式时表示条件为真。

A、x+2

B、x-2

C、x/2

D、x%2

70、若int x=2;以下__表达式作为循环条件表达式时表示条件为假。

A、x+2

B、x-2

C、x/2

D、x%2

71、以下说法正确的是__。

A、while循环可与do-while循环可相互改写

B、while循环不能改写为for循环

C、while、do-while和for可相互改写

D、以上说法都不对

72、循环体语句可以是__。

A、关系表达式语句

B、空语句

C、赋值表达式语句

D、逗号表达式语句

73、以下说法正确的是__。

A、while语句与do-while语句执行的过程相同。

B、do-while语句的循环体,可能一次也不被执行。

C、while语句的循环体,可能一次也不被执行。

D、do-while语句的循环体,至少执行一次。

74、若int i;while(i%3)中,使循环条件成立的是__

A、i=0

B、i=1

C、i=2

D、i=3

75、在c语言中,叙述正确的是:

A、if后面小括号里可以是任意类型的表达式

B、if语句必须要有else

C、if后面小括号里可以加分号;

D、if语句不一定要有else

76、在c语言中,叙述正确的是:

A、switch语句可以没有default分支

B、switch语句必须有default分支

C、switch语句每个分支必须执行

D、case与冒号之间可以是整型常量

77、循环条件表达式不仅限于关系表达式和逻辑表达式,可以是任意类型的表达式。

78、while语句的循环体,可能一次也不被执行。

79、若某do-while的循环体由3条语句组成,这3条语句不必用大括号“{}”括起来。

80、while语句与do-while语句执行的过程相同。

81、do-while语句的循环体,可能一次也不被执行。

82、for(表达式1;表达式2;表达式3)中的3个表达式都可以省略,但用于分割3个表达式的两个分号“;”不能省略。

83、while、do-while和for三种循环可以互相嵌套。

84、双重循环的执行过程是外层循环的循环体执行一次,内层循环执行一遍。

85、百鸡百钱问题。有一百只鸡,价值一百文钱,其中公鸡五文钱一只,母鸡三文钱一只,三只鸡雏一文钱,问公鸡、母鸡和鸡雏各多少只?现用枚举法求解,假设公鸡有x只、母鸡有y只,鸡雏有z只,程序如下: #include int main( ) { int x,y,z,k=0; for(x=0;x<100;x++) for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(x+y+z==100&&x*5+y*3+z/3==100) { k++; printf("Plan %d is x:%-3d y:%-3d z:%-3d\n",k,x,y,z); } return 0; } 此程序可以求出正确的解。

86、百鸡百钱问题。现用枚举法求解,假设公鸡有x只、母鸡有y只,鸡雏有z只,程序如下: #include #include int main( ) { int x,y,z,k=0; for(x=0;x<100;x++) for(y=0;y<=100;y++) { z=100-x-y; if(z>=0&&z%3==0) { if(fabs(x*5+y*3+z/3-100)<1e-3) { k++; printf("Plan %d is x:%-3d y:%-3d z:%-3d\n",k,x,y,z); } } } return 0; } 此程序可以求出正确的解。

87、case与冒号之间可以是逻辑表达式,进行选择

88、switch语句的分支有可能一个都不执行

89、如果循环条件表达式的值__,表示条件为真;如果表达式的值为___,表示条件为假。

90、当循环体包含一条以上的语句时,必须用__括起来,组成复合语句。

91、本程序执行时出现__ int main() { int k=1,sum=0; while(k<=10) sum=sum+k; k++; printf("%d\n",sum); return 0; }

92、下列程序段中的循环执行__次 int x=10; while(x) x=x/2;

93、下列程序段的输出结果是__ k=100; while(k--) printf("%3d\n");

94、下列程序段的输出结果是__ int a=3,b=15; do { a+=b;b=b/2; }while(b>1); printf("%d\n",a);

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

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

97、下列程序的输出结果是__ int main() { int m; for(m=6;m<10;m++,m++) printf("**%d",m); return 0; }

98、以下代码段的输出是__ int i,b,k=0; for(i=1;i<=5;i++ ) { b=i%2; do k++; while(b-->=0) ; } printf("%d%d", k,b);

99、下列程序的输出结果是__ int a,b,m; m=0; for(a=5;a>=1;a--) { for(b=a;b<=5;b++) m=m+a*b; } printf("%d\n",m);

100、下面代码段的输出是__ int k,m; for(k=0;k<10;k++ ) { m=k*k;; if(m>50) break; } printf("%d%d\n",k,m);

101、下面代码段的输出是__ int k,m; for(k=0;k<10;k++ ) { if(m>50) continue; m=k*k; } printf("%d%d\n",k,m);

102、在逻辑运算符!,&&,||中,优先级最高的是 。

103、在下列运算符+,+=,++中,优先级最低的是 。

第7周 同类型数据的处理——数组(一)

7.2 一维数组的定义和引用随堂测验

1、1、以下对一维数组a的定义中正确的是()。

A、char a(10);

B、int a[0..100];

C、int a[5];

D、int k=10;int a[k];

2、2、以下对一维数组的定义中不正确的是()。

A、int y[3]={3,5,7,9};

B、char ch2[ ]={'\x10', '\xa', '\x8'};

C、char ch1[ ]={'1', '2', '3', '4', '5'};

D、double x[5]={6.5,4.0,6.4,8.66,10.0};

3、3、在vc++6.0中,假定一个int型变量占用两个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是()。

A、6

B、9

C、12

D、15

4、4、完善以下程序,填写括号内容: 已有一个已排好序的整型数组,今输入一个整数,要求按原来排序的规律将它插入数组中。例如:原来数组的元素依次为4、6、8、41、56、77、102。若将42插入数组中,则插入后数组元素依次为4、6、8、41、42、56、77、89、102。 #include int main() { int a[8]={ 4,6,8,41,56,77,102}; int number,i,j; scanf("%d",&number); if(number>a[6]) a[7]=number; else { for(i=0;i<8;i++) if(a[i]>number) break; for(j=7;j();j--) a[j]=a[j-1]; a[i]=number; } for(i=0;i<8;i++) printf("%6d",a[i]); return 0; }

A、>=i

B、>i

C、>i+1

D、>=i+1

5、5、一般地,一维数组各元素分配在连续地内存单元之中。

7.3 一维数组的应用随堂测验

1、1、以下程序的输出结果是()。 #include int main() { int m[]={1,4,7}; int i; for(i=0;i<3;i++) { printf("%d",m[i]);} return 0; }

A、741

B、471

C、147

D、417

2、2、以下程序输出结果为741,那么循环控制变量i的下限是()。 #include int main() { int m[]={1,4,7}; int i; for(i=2;i>( );i--) printf("%d",m[i]); return 0; }

A、0

B、1

C、-1

D、-2

3、3、以下程序的输出结果是()。 #include int main() { int m[]={1,4,7}; int i; for(i=1;i<=2;i++) printf("%d",m[i]); return 0; }

A、14

B、47

C、41

D、74

4、4、以下程序的输出结果是()。 #include int main() { int m[] = { 1,4,7 }; int i; m[0] = m[1] + 34; for (i = 0; i <= 2; i++) { m[i] = m[i] / 3; printf("%d", m[i]); } return 0; }

A、1112

B、1212

C、1313

D、1312

5、5、阅读程序选结果 #include int main() { int i, temp; int a[5] = { 9,6,5,2,1 }; for (i = 0; i<5 / 2; i++) { temp = a[i]; a[i] = a[5 - i - 1]; a[5 - i - 1] = temp; } for (i = 0; i<5; i++) printf("%d", a[i]); return 0; }

A、15269

B、12569

C、96521

D、16952

7.4 二维数组定义和引用随堂测验

1、1、以下对二维数组的定义中正确的是()

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

B、int a[][3];

C、int a[][3]= {1,5,6,3,7,8,2};

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

2、2、下列各语句定义了数组,其中哪一个是不正确的()

A、char a[3][10]={"China","American","Asia"};

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

C、float x[2][ ]={1,2,4,6,8,10};

D、int m[][3]={1,2,3,4,5,6,7};

3、3、按照下题选出正确的输出结果 如果有如下定义: int a[3][4]={{1, 2, 3, 4}, {5, 6, 7, 8},{9, 10, 11, 12}};,那么a[1][6]元素的结果是()?

A、12

B、11

C、10

D、9

4、4、c程序如下,写出输出结果 #include int 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、1 4 7

B、2 5 8

C、3 6 9

D、7 8 9

5、5、c语言中,一维数组某一个数组元素等价于一个同数据类型的变量。

7.5 二维数组的应用随堂测验

1、1、完善以下程序达到要求的功能: 先从键盘上输入一个3行3列整型数组的各个元素的值,然后输出主对角线和次对角线元素之和。 #include int main() { int a[3][3], sum = 0, sum1 = 0; int i, j; printf("Enter data:\n"); for (i = 0; i<3; i++) for (j = 0; j<3; j++) scanf("%d", &a[i][j]); for (i = 0; i<3; i++) { sum = sum + a[i][i]; sum1 = sum1 + a[i][()]; } printf("\nsum=%5d,sum1=%5d\n", sum, sum1); return 0; }

A、2-i

B、2-1

C、i

D、1-i

2、2、输出如下程序的结果: #include int main() { int a[3][3] = { 1,3,5,7,9,2,4,6 }; int sum = a[0][0], i,j,x, y; for (i = 0; i<3; i++) { for (j = 0; j<3; j++) { if (sum

A、a[1][0]=9

B、a[1][1]=9

C、a[1][2]=2

D、a[0][0]=1

3、3、输出如下程序的结果: #include int main() { int a[3][3] = { { 98,97,99 },{ 100,67,89 },{ 78,89,79 } }; int i, j; float sum1 = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { sum1 = sum1 + a[i][j]; } } printf("%f",sum1/9); return 0; }

A、87.333334

B、87.444443

C、88.333334

D、88.444443

4、4、c语言中,当二维数组越界时,会有错误提示。

5、5、c语言中,二维数组某一个数组元素等价于一个同数据类型的变量。

7.6 数组下标越界访问问题随堂测验

1、1、c程序如下,写出输出结果 #include int main() { int m[][3] = { 1,4,7,2,5,8,3,6,9 }; int i, j, k = 1; for (i = 0; i<4; i++) { printf("%d", m[k][i]); } return 0; }

A、2583

B、4725

C、8369

D、5836

2、2、c程序如下,写出输出结果 #include int main() { int m[][3] = { 1,4,7,2,5,8,3,6,9 }; int i, j, k = 0; for (i = 0; i<5; i++) { printf("%d", m[k][i]+2); } return 0; }

A、14725

B、25836

C、36947

D、47958

3、3、c程序如下,写出输出结果 #include int main() { int m[][3] = { 1,4,7,2,5,8,3,6,9 }; int i, j, k = 0; for (i = 0; i<6; i++) { printf("%d", m[k][i]/2+3); } return 0; }

A、259435

B、356556

C、356557

D、356457

4、4、输出如下程序的结果: #include int main() { int a[3][3] = { { 98,97,99 },{ 100,67,89 },{ 78,89,79 } }; int i, j=0; float sum = 0; for (i = 0; i < 5; i++) sum = sum + a[j][i]; printf("%f", sum / 5); return 0; }

A、93.199997

B、92.29997

C、92.19997

D、94.199997

5、5、c语言中,二维数组下标越界时,会有错误提示。

第8周 同类型数据的处理——数组(二)

7.7 字符数组定义及输入输出随堂测验

1、下面是对数组s的初始化操作,其中不正确的是()

A、char s[5]={"a"};

B、char s[5]={‘a’};

C、char s[5]= " ";

D、char s[5]= "abcdef";

2、如下的数组中,数组array占用的内存空间是( )个字节。 char array[]={'c','h','i','n','a'};

A、1

B、5

C、6

D、不确定

3、字符数组中的数据存储时必须以'\0'结尾。

7.8 字符串处理函数随堂测验

1、下面是有关C语言字符数组的描述,其中错误的是()

A、不可以用赋值语句给字符数组名赋字符串

B、可以用输入语句把字符串整体输入给字符数组

C、字符数组中的内容不一定是字符串

D、字符数组只能存放字符串

2、对字符串进行输入输出操作时,只能对字符串整体进行输入输出。

3、如果在程序中调用了strcpy函数,则需要预处理命令 。

7.9 字符数组应用举例随堂测验

1、下面程序段的输出结果是() int i; char c[5]={'1','2','\0','3','\0'}; for(i=0;i<5;i++) printf("%c",c[i]);

A、'1''2'

B、12

C、12 3

D、123

2、字符数组中只能有一个'\0'。

3、有定义:char a[]="";则a数组的长度是 。

第2次单元测验

1、下列描述中不正确的是()

A、字符型数组中能存放字符串。

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

C、字符串函数声明在ctype.h中。

D、字符串的结束符是'\0'。

2、下列程序的输出结果是() char a[10]="abcd", b[ ]="ABCD", str[50]="xyz"; strcpy(str,strcat(a,b)); printf("%s",str);

A、xyabcAB

B、abcABz

C、ABabcz

D、abcdABCD

3、下面是有关C语言字符数组的描述,其中错误的是()

A、不可以用赋值语句给字符数组名赋字符串

B、可以用输入语句把字符串整体输入给字符数组

C、字符数组中的内容不一定是字符串

D、字符数组只能存放字符串

4、下面是对数组s的初始化操作,其中不正确的是()

A、char s[5]={"a"};

B、char s[5]={'a'};

C、char s[5]= " ";

D、char s[5]= "abcdef";

5、有两个字符数组s1,s2,则以下正确的输入语句是()

A、gets(s1,s2);

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

C、scanf("%s%s",&s1,&s2);

D、gets("s1"),gets("s2");

6、判断字符串s1是否大于s2,应当使用()

A、if (s1>s2)

B、if (strcmp(s1,s2))

C、if (strcmp(s2,s1)>0)

D、if (strcmp(s1,s2)>0)

7、下面叙述正确的是()

A、两个字符串所包含的字符个数不相同时,才能进行大小比较。

B、字符个数多的字符串比字符个数少的字符串大。

C、字符串"123 "与"123"相等。

D、字符串"123"小于字符串"2"。

8、下面程序段的输出结果是() char c[ ]=”\a\b\\\0c\n”; printf(“%d”,strlen(c));

A、14

B、3

C、9

D、6

9、下面程序段的输出结果是() int i; char c[5]={'1','2','\0','3','\0'}; for(i=0;i<5;i++) printf("%c",c[i]);

A、'1''2'

B、12

C、12 3

D、123

10、下面程序段的输出结果是() char a[7]=“123456”; char b[4]=”ABC”; strcpy(a,b); printf(“%c”,a[5]);

A、

B、\0

C、5

D、6

11、以下对一维整型数组a的正确说明是__。

A、int a(10);

B、int n= 10, a[n];

C、int n; scanf("%",&n); int a[n];

D、#define SIZE 10; int a[SIZE];

12、以下能对一维数组a进行正确初始化的语句是__。

A、int a[10]=(0,0,0,0,0) ;

B、int a[10]={};

C、int a[]={0};

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

13、以下对二维数组a的正确说明是__。

A、int a[3][];

B、floatf a(3,4);

C、double a[1][4];

D、float a(3)(4);

14、以下能对二维数组a进行正确初始化的语句是__。

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

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

C、int a [2][4]={{1,2,3},{4,5},{6}};

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

15、若有说明: int a[3][4]={0};则下面正确的叙述是__。

A、只有元素a[0][0]可得到初值0。

B、此说明语句不正确。

C、数组a中各元素都可得到初值,但其值不一定为0。

D、数组a中每个元素均可得到初值0 。

16、以下各组选项中,均能正确定义二维实型数组a的选项是

A、float a[3][4]; float a[][4]; float a[3][]={{1},{0}};

B、float a(3,4); float a[3][4]; float a[][]={{0},{0}};

C、float a[3][4]; static float a[][4]={{0},{0}}; auto float a[][4]={{0},{0},{0}};

D、float a[3][4]; float a[3][]; float a[][4];

17、下面程序段的运行结果是( )。 int m[]={5,8,7,6,9,2},i=1; do{ m[i]+=2; } while(m[++i]>5); for(i=0;i<6;i++) printf("%d ",m[i]);

A、7 10 9 8 11 4

B、7 10 9 8 11 2

C、5 10 9 8 11 2

D、5 10 9 8 11 4

18、下面程序段的运行结果是( )。 int m[]={5,8,7,6,9,2},i=1; for(i=0;i<6;i++) { if(i % 2 !=0) m[i]+=10; } for(i=0;i<6;i++) printf("%d ",m[i]);

A、5 18 7 16 9 12

B、15 18 17 16 19 12

C、15 8 17 6 19 2

D、5 8 7 6 9 2

19、以下程序段的运行结果是( )。 int a[]={1,2,3,4},i,j; j=1; for(i=3;i>=0;i--) { a[i]=a[i]*j; j=j*3; } for(i=0;i<4;i++) printf("%d ",a[i]);

A、3 6 9 12

B、18 12 9 4

C、27 18 9 4

D、54 18 9 4

20、以下程序段执行后输出的结果是( )。 int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf("%d\n",a[1][5]);

A、编译有错误。

B、4

C、10

D、11

21、以下程序段执行后p的值是( )。 int a[3][3]={3,2,1,3,2,1,3,2,1}; int j,k,p=1; for(j=0;j<2;j++) for(k=j;k<4;k++) p*=a[j][k];

A、108

B、18

C、12

D、2

22、以下程序段运行后sum的值为( )。 int k=0,sum=0; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; for(;k<3;k++) sum+=a[k][k+1];

A、9

B、18

C、19

D、21

23、以下程序段的运行结果是( )。 char str[3][2]={ 'a','b','c','\0','e','f'}; printf("%s",str[0]);

A、a

B、abcef

C、abc\0ef

D、abc

24、以下程序段的输出结果是( )。 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、输出值不定

25、以下程序段的输出结果是( )。 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

26、以下程序段的输出结果是( )。 int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0; 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

27、若有如下定义,则值为4的表达式是( )。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g;

A、a[g-c]

B、a[4]

C、a[‘d’-‘c’]

D、a[‘d’-c]

28、对两个数组m和n进行下列初始化: char m[]="12345"; char n[]={’1’,’2’,’3’,’4’,’5’}; 则下列叙述正确的是(  )。

A、数组m与数组n不完全相同

B、数组m与数组n长度相同

C、数组m比数组n长1

D、数组m与数组n中都存放字符串

29、字符数组中的数据存储时必须以'\0'结尾。

30、对字符串进行输入输出操作时,只能对字符串整体进行输入输出。

31、数组是一种构造型数据,即是若干相同类型的数据的集合。

32、在C语言中,二维数组元素在内存中的存放顺序可以随意调整变化。

33、C语言中,二维数组中元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。

34、若有说明:int a[][4]={0,0};则表示二维数组a的第一维大小为1。

35、若有说明:int a[10]={6,7,8,9,10};则该语句不正确,因为数组长度与初值个数不相同。

36、字符数组中存放的字符串是以 为结束标志的。

37、有定义:char a[]="";则a数组的长度是 。

38、有定义:char a[]="1";则a数组的长度是 。

39、以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填空使程序完整。 #include "stdio.h" int main ( ) { char a[40]="Hello you!", b[ ]="World!"; int i=0,j=0; while (a[i]!='\0') 1 ; while ( b[j] ) { a[i]=b[j] ; i++ ; j++ ; } a[i]='\0'; printf("%s\n",a); }

40、若有定义语句“int a[5]={1,2,5};”则printf("%d",++a[3])的输出值是( )。

41、若有定义语句”int a[3][4]={{1,2},{0},{6,4,7,10}};”则初始化后,a[1][2]的值为( ).

第9周 模块化程序设计——函数(一)

8.1 概述随堂测验

1、C语言程序的基本单位是?

A、函数

B、过程

C、子程序

D、源程序文件

2、关于C语言程序,以下说法正确的是?

A、一个C语言程序执行时,可以从该程序中任意一个函数开始执行。

B、一个C语言程序中可以包含多个源代码文件,每个源代码文件中只能包含一个main函数。

C、一个C语言程序中包含多个函数,main函数可以调用其它函数,其它函数不能调用main函数。

D、一个C语言程序中包含多个函数,这些函数之间可以相互调用。

8.2 函数定义与调用随堂测验

1、在下列关于C函数定义的叙述中,正确的是?

A、函数可以嵌套定义,但不可以嵌套调用;

B、函数不可以嵌套定义,但可以嵌套调用;

C、函数不可以嵌套定义,也不可以嵌套调用;

D、函数可以嵌套定义,也可以嵌套调用;

2、C语言中函数返回值的类型是由以下哪个选项决定的?

A、函数定义时指定的类型;

B、return语句中的表达式类型;

C、调用该函数时的实参的数据类型;

D、形参的数据类型;

3、下面函数调用语句含有实参的个数为? func((exp1,exp2),(exp3,exp4,exp5));

A、1

B、2

C、4

D、5

4、以下叙述中错误的是?

A、用户定义的函数中可以没有return语句;

B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值;

C、用户定义的函数中若没有return语句,则应当定义函数为void类型;

D、函数的return语句中可以没有表达式;

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

A、float fadd(float a,b);

B、float fadd(float b, float a) ;

C、float fadd(float, float) ;

D、float fadd(float a, float b) ;

8.3 函数的参数传递随堂测验

1、以下描述错误的是?

A、调用函数时,实参可以是表达式;

B、调用函数时,实参与形参可以共用内存单元;

C、调用函数时,将为形参分配内存单元;

D、调用函数时,实参与形参的类型应该一致;

2、C程序中各函数之间可通过多种方式传递数据,下列不能实现数据传递的方式是?

A、参数的形实结合;

B、函数返回值;

C、全局变量;

D、同名的局部变量;

3、以下关于函数叙述中,错误的是?

A、函数未被调用时,系统将不为形参分配内存单元;

B、实参与形参的个数必须相等,且实参与形参的类型必须对应一致;

C、当形参是变量时,实参可以是常量、变量或表达式;

D、如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间;

4、若函数调用时参数为基本数据类型的变量,以下叙述正确的是?

A、实参与其对应的形参共享内存存储单元;

B、只有当实参与其对应的形参同名时才共享内存存储单元;

C、实参与对应的形参分别占用不同的内存存储单元;

D、实参将数据传递给形参后,立即释放原先占用的内存存储单元;

8.4 数组作为函数参数随堂测验

1、函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?

A、实参将地址传递给形参,并释放原先占用的存储单元;

B、实参将地址传递给形参,调用结束时形参再将此地址回传给实参;

C、实参将值传递给形参,调用结束时形参再将其值回传给实参;

D、实参将值传递给形参,调用结束时形参并不将其值回传给实参;

2、若用数组名作为函数调用的实参,则传递给形参的是?

A、数组第一个元素的地址;

B、数组的第一个元素的值;

C、数组中所有元素的值;

D、数组元素的个数;

3、已有以下数组定义和f函数调用语句, int a[3][4]; f(a); 则在f函数的说明中,对形参数组array的错误定义方式为:

A、f(int array[][6]);

B、f(int array[3][]);

C、f(int array[][4]);

D、f(int array[2][5]);

4、以下程序的输出结果是_______? f(int b[],int m,int n) { int i,s=0; for(i=m;i

第10周 模块化程序设计——函数(二)

8.5 函数的嵌套调用与递归调用随堂测验

1、C语言规定了程序中各函数之间调用关系,以下说法正确的是?

A、既允许直接递归调用也允许间接递归调用;

B、不允许直接递归调用也不允许间接递归调用;

C、允许直接递归调用不允许间接递归调用;

D、不允许直接递归调用允许间接递归调用;

2、以下程序运行后的输出结果是? int f (int x, int y) { if(x>y) return x; else return y; } void main() { int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf("%d\n",r); }

A、3

B、6

C、8

D、12

3、递归函数f(n)=f(n-1)+n (n>1)的递归体是?

A、f(1)=0;

B、f(0)=1;

C、f(n)=f(n-1)+n;

D、f(n)=n;

4、在函数调用过程中,如果函数fun A调用了函数fun B,函数fun B又调用了函数fun A,则()。

A、称为函数的直接递归调用

B、称为函数的间接递归调用

C、称为函数的循环调用

D、C语言中不允许这样的递归调用

5、以下程序的功能是用递归方法计算工资,已知第一位员工工资最少,为3100元,其余员工工资一个比一个多500元,求第5位员工的工资。请填空。 int salary(int n) { int s; if(n==1) s=3100; else s=salary(n-1)+500; return s; } void main() { int n=5; printf(“salary:%d\n”,______); }

8.6 变量的作用域随堂测验

1、以下程序输出的temp的值是? #define N 5 main() { int i; int a[N]={1,2,3,4,5}; for(i=0;i

A、2

B、3

C、随机数

D、编译出错,变量未定义

2、以下程序的运行结果是? int a=8,b=9; int f(int a,int b) { int c; c=a>b?a:b; return(c); } void main() { int a=10; printf("%d",f(a,b)); }

A、8

B、9

C、10

D、随机数

3、在C语言中,关于变量的作用域,下列描述中错误的是().

A、局部变量只在整个函数的运行周期中有效

B、全局变量的作用域为整个程序的运行周期

C、当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量

D、全局变量会覆盖掉所有与它重名的局部变量

4、以下程序的运行结果是:______________。 int n; void main() { void prt(); for(n=0;n<5;n++) prt(); } void prt() { for(n=0;n<5;n++) printf(“%c”,’*’); printf(“\n”); }

8.7变量的存储类别随堂测验

1、关于C语言中的全局变量与局部变量,下列描述中正确的是()

A、全局变量的生存期一定比static局部变量的时间长

B、局部变量的生存周期只是它所在的函数

C、未在定义语句中赋初值的auto变量和static变量的初值都是随机值

D、static类别变量的生存周期贯穿于整个程序的运行期间

2、在C语言中,声明外部函数需要添加的关键字是()

A、extern

B、static

C、this

D、auto

3、以下程序的输出结果是__________。 int fun(int x[],int n) { static int sum=0,i; for(i=0;i

第12周 C语言的灵魂——指针(二)

9.4 指针和字符串随堂测验

1、下面程序段的运行结果是______ 。 char str[ ]="ABC" , *p=str ; printf ("%d\n",*(p+2));

A、0

B、字符'C'的ASCII码

C、字符'C'的地址

D、字符'C'

2、下面判断正确的是 。

A、char *a="china"; 等价于 char *a; *a="china";

B、char str[10]={“china”};等价于 char str[10]; str[ ]={“china”};

C、char *s="china"; 等价于 char *s; s="china";

D、char c[4]="abc", d[4]="abc"; 等价于 char c[4]=d[4]="abc"

3、下列程序段的输出结果为: int arr[]={6,7,8,9,10}; int * ptr; ptr=arr; * (ptr+2)+=2; printf ("%d,%d\n",*ptr,*(ptr+2));

A、8,10

B、6,8

C、7,9

D、6,10

4、有以下定义: char a[10],*b=a;不能给a数组输入字符串的语句是________。

A、gets(a);

B、gets(a[0]);

C、gets(&a[0]);

D、gets(b);

5、设有程序段: char s[ ]="program"; char *p;p=s; 表示数组的第一个元素s[0]和指针p相等。

9.5 指针与函数随堂测验

1、在说明语句:int *f();中,标识符f代表的是________。

A、一个用于指向整型数据的指针变量。

B、一个用于指向一维数组的行指针。

C、一个用于指向函数的指针变量。

D、一个返回值为指针型的函数名。

2、函数名是1个地址常量,表示函数的入口地址。

3、一个指向函数的指针变量p,可以进行p++运算。

4、定义一个指向函数的指针变量p,该函数没有参数并返回一个整型数,其定义形式为:

9.6 指针数组和指向指针的指针变量随堂测验

1、若有定义和语句: int **pp,*p,a=100,b=200; pp=&p; p=&b; printf("%d,%d\n",*p,**pp); 则输出结果是________。

A、100,200

B、100,100

C、200,100

D、200,200

2、若有如下语句: int c[4][5],(*p)[5]; p=c; 则能正确引用c数组元素的是________。

A、p+1

B、*(p+3)

C、*(p+1)+3

D、*(p[0]+2)

3、设有以下定义:char *c[2]={"12","34"}; 表示c数组的两个元素中各自存放了字符串"12"和"34"的首地址。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值