第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"的首地址。