一、选择题 (1)有以下程序段 int n,t=1,s=0; scanf("%d",&n); do{ s=s+t; t=t-2; }while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是 A)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数
(2)设变量已正确定义,则以下能正确计算f = n!的程序段是 A) f=0; B) f=1; for(i=1;i<=n;i++) f*=i; for(i=1;i<n;i++) f*=i; C) f=1; D) f=1; for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--) f*=i;
(3)有以下程序 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
(4)有以下程序 main() { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue;} a-=3; } printf("%d\n",b); } 程序运行后的输出结果是 A)3 B)4 C)5 D)6 (5) 有以下程序 main () { int s=0,a=1,n; scanf("%d",&n); do { s+=1; a=a-2; } while(a!=n); printf("%d\n",s); } 若要使程序的输出值为2,则应该从键盘给n输入的值是 A) -1 B) -3 C) -5 D) 0
(6) 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是 A) s=a+b; B) s=a+c; C) s=s+c; D) s=b+c;
(7) 有以下程序 main() { int k=4,n=4; for( ; n<k ;) { n++; if(n%3!=0) continue; k--; } printf("%d,%d\n",k,n); } 程序运行后的输出结果是 A) 1,1 B) 2,2 C) 3,3 D) 4,4
(8) 要求以下程序的功能是计算: main () { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; print("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是 A) s=1.0; B) for(n=10;n>1;n--) C) s=s+1/n; D) printf("%6.4f/n",s);
(9)有以下程序 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
(10)有以下程序 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
(11) 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下: main() { int n,k; float score ,sum,ave; sum=0.0; for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf(“%f”,&score); sum+=score;} ave=sum/4.0; printf(“NO%d:%f\n”,n,ave); } } 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是 A) sum=0.0; B) sum+=score; C) ave=sun/4.0; D) printf(“NO%d:%f\n”,n,ave);
(12) 有以下程序段 int n=0,p; do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3); 此处do—while循环的结束条件是 A) P的值不等于12345并且n的值小于3 B) P的值等于12345并且n的值大于等于3 C) P的值不等于12345或者n的值小于3 D) P的值等于12345或者n的值大于等于3
(13) 以下程序中,while循环的循环次数是 main() { int i=0; while(i<10) { if(i<1) continue; if(I==5) break; i++; } ...... } A) 1 B) 10 C) 6 D) 死循环,不能确定次数
(14) 以下程序的输出结果是 main() { int a=0,i; for(i=;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf("%d\n",a); } A) 31 B) 13 C) 10 D) 20
(15) 以下程序的输出结果是 #include <stdio.h> main() { int i=0,a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printh("%d\n",a); } A) 21 B) 32 C) 33 D) 11
(16) t为int类型,进人下面的循环之前,t的值为0 while( t=l ) { …… } 则以下叙述中正确的是 A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对
(17) 以下程序的输出结果是 main() { int num= 0; while(num<=2) { num++; printf(“%d\n”,num); } A) 1 B) 1 C)1 D) l 2 2 2 3 3 4 (18) 以下程序的输出结果是 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
(19) 有以下程序段 int k=0 while(k=1)k++; while 循环执行的次数是 A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次
(20) 以下程序执行后sum的值是 A)15 B)14 C) 不确定 D)0 min() { int i , sum; for(i=1;i<6;i++) sum+=i; printf(“%d\n”,sum); }
(21) 有以下程序段 int x=3 do { printf(“%d”,x-=2); } while (!(--x)); 其输出结果是 A)中 1 B) 3 0 C) 1 -2 D) 死循环
(22) 有如下程序 main0 { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf(“%d\n”,sum); } 该程序的执行结果是 A) 6 B) 3 C) 死循环 D) 0
(23) 有如下程序 main0 { int x=23; do { printf(“%d”,x--);} while(!x); } 该程序的执行结果是 A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环
(24) 有如下程序 main0 { int n=9; while(n>6) {n--;printf(“%d”,n);} } 该程序段的输出结果是 A) 987 B) 876 C) 8765 D) 9876
(25) 以下循环体的执行次数是 A) 3 B) 2 C) 1 D) 0 main() { int i,j; for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i); }
(26) 以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。 C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。
(27) 以下程序段的执行结果是 A) a=12 y=12 B) a=12 y=12 a=14 y=16 a=16 y=28 a=16 y=20 a=18 y=24 C) a=12 y=12 D) a=12 y=12 a=14 y=26 a=14 y=44 int a, y; a=10; y=0; do { a+=2; y+=a; printf("a=%d y=%d\n",a,y); if(y>20) break; { while(a=14);
(28) 以下程序的输出结果是 A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1
main( ) { int x=10,y=10,I; for(i=0;x>8;y=++i) printf("%d,%d ",x--,y); }
(29) 以下程序的输出结果是 A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0 main( ) { int n=4; while(n--)printf("%d ",--n); }
(30) 以下程序的输出结果是 A) #*#*# B) ##### C) ***** D) *#*#* main( ) { int i; for(i=1;i<6;i++) { if(i%2){printf("#");continue;} printf("*"); } printf("\n"); }
(31) 执行以下程序段时 A) 循环体将执行一次 B) 循环体将执行两次 C) 循环体将执行无限次 D) 系统将提示有语法错误 X=-1; do {x=x*x; } while(! x);
(32) 执行以下程序后,输出的结果是 A) -1 B) 1 C) 8 D) 0 main () { int y=10; do { y - -;} while(- - y); printf("%d\n",y - -); }
(33) 在下列选项中,没有构成死循环的程序段是 A) int i=100 B) for( ; ;); while(1) { i=i%100+1; if(i>100)break; } C) int k=1000; D) int s=36; do{++k;} while(k>=10000); while(s);--s;
(34) 执行语句: for(i=l:i++<4:);后,变量i的值是 A) 3 B) 4 C) 5 D) 不定
(35) 以下程序的输出结果是 A) x=4 B) x=8 C) x=6 D) x=12 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); }
(36) 运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为: A) m=3 B) m=2 C) m=1 D) m=1 main() { int m, n; printf("Enter m,n;"); scanf("%d%d", &m,&n): while (m!=n) { while (m>n)m-=n; while (n>m)n-=m; } printf("m=%d\n",m); }
(37) 设x和y均为int型变量,则执行下的循环后,y值为 for(y=1,x=1;y<=50;y++) { if(x>=10))break; if (x%2==1) { x+=5; continue;} x-=3; } A) 2 B) 4 C) 6 D) 8
(38) 假定a和b为int型变量,则执行以下语句后b的值为 a=1; b=10; do { b-=a; a++; } while (b--<0) ; A) 9 B) -2 C) -1 D) 8
(39) 设j为int型变量,则下面for循环语句的执行结果是 for( j=10;j>3;j--) { if(j%3)j--; --j; --j; printf("%d ",j); } A) 6 3 B) 7 4 C) 6 2 D) 7 3
(40) 若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for(j=0;j<4;j++){...} A)20 B)25 C)24 D)30
(41) 执行下面的程序后,a的值为 main() { int a,b; for (a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3; continue; } b-=5; } } A) 7 B) 8 C) 9 D) 10
(42) 以下程序段的输出结果是 int x=3; do { printf("%3d",x-=2);} while(!(--x)); A) 1 B) 3 0 C) 1-2 D) 死循环
(43) 定义如下变量: int n=10; 则下列循环的输出结果是 while(n>7) { n--; printf("%d\n",n); } A) 10 B) 9 C) 10 D) 9 9 8 9 8 8 7 8 7 7 6
(44) 下面的程序 A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环 main() { int x=3; do { printf("%d\n",X-=2); }while(!(--x));}
(45) 下面程序的输出是 A) 741 B) 852 C) 963 D) 875421 main() { int y=9; for( ; y>0; y--) { if(y%3==0) { printf("%d", --y);continue;} }. }
(46) 若x是int型变量,且有下面的程序片段: for(x=3; x<6; x++) printf((x%2)?("**%d"):("##%d\n"),x); 上面程序片段的输出结果是 A) **3 B) ##3 C) ##3 D) **3##4 ##4 **4 **4##5 **5 **5 ##5
(47) 请读程序片段: #include<stdio.h> main() { int a, b; for(a=1;b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3; continue; } b-=5; } printf("%d\n",a); } 上面程序的输出结果是 A) 7 B) 8 C) 9 D) 10
(48) 请读程序: #include<stdio.h> main() { int mun=0; while(num<=2) { num++; printf("%d\n",num);} } 上面程序的输出结果是 A) 1 B) 1 C) 1 D) 1 2 2 2 3 3 4
(49) 请读程序: #include<math.h> #include<stdio.h> main() { float x,y,z; scan("%f%f",&x,&y); z=x/y; while(1) { if(fabs(z)>1.0) { x=y; y=z; z=x/y; } else break } printf("%f\n",y); } 若运行时从键盘上输入3.6 2.4<CR>(<CR>表示回车),则输出的结果是 A) 1.500000 B) 1.600000 C) 2.000000 D) 2.400000
(50) 执行下面程序片段的结果是 int x=23; do { printf("%2d",x--);} while(!x); A) 打印出321 B) 打印出23 C) 不打印任何内容 D) 陷入死循环
(51) 语句while(!E);中的条件!E等价于 。 A)E = = 0 B)E!=1 C)E!=0 D)~E
(52)C语言中 。 A)不能使用do-while语句构成的循环 B)do-while语句构成的循环必须用break语句才能退出 C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
(53)以下程序的输出结果是 。 # include <stdio.h> main() { int i; for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*"); else continue; printf("#");} printf("$\n"); } A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$ 二、填空题: (1)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。 main() { int t=0,s=0,i; for( i=1; i<=5; i++) { t=i+ 【1】 ; s=s+t; } printf("s=%d\n",s); }
(2)以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空。 main() { int i,j,x; for(j=4; j 【2】 ; j--) { for(i=1; i<=4; i++) { x=(j-1)*4 + 【3】 ; printf("%4d",x); } printf("\n"); } }
(3) 以下程序运行后的输出结果是 【4】 。 main() { int i,m=0, n=0, k=0; for (i=9; i<=11; i++) switch(i/10) { case 0 : m++; n++; break; case 10: n++;break; default: k++;n++; } printf("%d %d %d\n",m,n,k); }
(4) 以下程序运行后的输出结果是 [5] 。 main() { int x=15; while(x>10 && x<50) { x++; if(x/3){x++;break;} else continue; } printf(“%d\n”,x); }
(5) 以下函数的功能是计算s=1+ + +……+ ,请填空。 double fun(int n) { double s=0.0,fac=1.0; int i; for(i=1,i<=n;i++) { fac=fac [6] ; s=s+fac; } return s; }
(6) 以下程序的输出结果是【7】 。 main() {int s,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\n",s); }
(7)以下程序运行后的输出结果是 【8】 。 main() { int i=10, j=0; do { j=j+i; i-; while(i>2); printf(“%d\n”,j); }
(8) 设有以下程序: main() { int n1,n2; scanf(“%d”,&n2); while(n2!=0) { n1=n2%10; n2=n2/10; printf(“%d”,n1); } } 程序运行后,如果从键盘上输入1298;则输出结果为 【9】 。
(9) 下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。 #include <stdio.h> main() { int a, b, c, i; a=c=0; for(i=0;i<10;i+=2) { a+=i; [10] ; c+=b; } printf("偶数之和=%d\n",a); printf("奇数之和=%d\n",c-11); }
(10) 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。 #include <stdio.h> main() { int i, j; for(i=0; [11] ; i++) { j=i*10+6; if( [12] ) continue; printf("%d",j); } }
(11) 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【13】 。 for(i=0,j=10;i<=j;i++,j--) k=i+j;
(12) 以下程序的功能是:人键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空. main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while(【14】) { if(x>amax) amax=x; if(【15】) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } (13) 下面程序的输出是 【16】 。 main() { int x=2; while(x--); printf("%d\n", x);}
(14) 设有如下程序段: int i=0, sum=1; do { sum+=i++;} while(i<6); printf("%d\n", sum); 上述程序段的输出结果是 【17】 。
答案: 一、选择题 01) D 02) D 03) D 04) B 05) B 06) B 07) C 08) C 09) A 10) A
11) A 12) D 13) D 14) A 15) B 16) B 17) B 18) D 19) A 20) C
21) C 22) C 23) B 24) B 25) C 26) D 27) B 28) D 29) A 30) A
31) A 32) D 33) C 34) C 35) B 36) C 37) C 38) D 39) B 40) A
41) B 42) C 43) B 44) B 45) B 46) D 47) B 48) C 49) B 50) B
51) A 52) D 53) A
二、填空题
(1) t*10
(2) >0
(3) i
(4) 1 3 2
(5) 17
(6) /i
(7) 5
(8) 52
(9) 8921
(10) B=i+1
(11) I<10
(12) i%3!=0
(13) 10
(14) x>=0.0
(15) amin>=x
(16) -1
(17) 16
|