高级程序设计单元测试(二)试题及答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2-4
正确答案:B 16. 对下Ⅰ,Ⅱ两个语句描述正确的是 Ⅰ.while(1)Ⅱ.for(;;) A)都是无限循环 B)Ⅰ是无限循环,Ⅱ错误 C)Ⅰ循环一次,Ⅱ错误 D)以上答案都错 正确答案:A 17. 下列说法中错误的是 A)只能在循环体内使用break语句 B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环 C)在while和do…while循环中,continue语句并没有使整个循环终止 D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再 一次进行循环判断 正确答案:A 18. 定义如下变量和数组: int k; int a[3][3]={9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是 for(k=0;k<3;k++)printf("%d",a[k][k]); A)7 5 3 B)9 5 1 C)9 6 3 D)7 4 1 正确答案:B 19. 下列程序执行后的输出结果是 main() { char arr[2][4]; strcpy(arr,"you"); strcpy(arr[1],"me"); arr[0][3]=′&′; printf("%s\n",arr); } A)you&me B)you C)me D)err 正确答案:A
25 阅读如下程序段,则程序在先后输入love和china后,输出结果是 #include <stdio.h> #include <string.h> main()
2-6
{ char a[30],b[30]; int k; gets(a); gets(b); k=strcmp(a,b); if(k>0) puts(a); else if(k<0) puts(b); } A) love B)china C)lovechina D)没有输出结果 正确答案:A 二.填空题(请将每一个空的正确答案写在括号中。每小题2分,共20分) 1.设y是int型,请写出y为奇数的关系表达式 【(y%2)==1 或 (y%2)!=0 2 以下程序输出的结果是【 main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 0 】。 】 。
20. 以下不正确的定义语句是 A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9};
2-5
C)char c1[]={′1′,′2′,′3′,′4′,′5′}; D)char c2[]={′\x10′,′\xa′,′\x8′}; 正确答案:B 21. 有以下程序 main() { char a[]={ ′a′, ′b′, ′c′,′d′, ′e′, ′f′, ′g′,′h′,′\0′}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\b",i,j); } 程序运行后的输出结果是 A)9,9 B)8,9 C)1,8 D)9,8 正确答案:D 22. 以下不能对二维数组a进行正确初始化的语句是 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6}; 正确答案:B 23. 已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china 赋给数组a的正确语句是 A)a="I love china"; B)strcpy(b,a); C)a=b; D)strcpy(a,b); 正确答案:D 24.已知:char a[20]= "abc",b[20]= "defghi";则执行下列语句后的输出结果为 printf("%d",strlen(strcpy(a,b))); A)11 B)6 C)5 D)以上答案都不正确 正确答案:B
2-3
正确答案:D 13. 下列程序的输出结果是 #include "stdio.h" main() {int i,a=0,b=0; for(i=1;i<10;i++) { if(i%2= =0) { a++; continue; } b++; } printf("a=%d,b=%d",a,b);} A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 正确答案:B
C)(′a′<=c)and(′z′>=c) D)(c>=′a′)&&(c<=′z′) 正确答案:D 5.设int x=1,y=1;表达式(!x||y- -)的值是 A)0 B)1 C)2 D)-1 正确答案:B 6. 以下程序的输出结果是 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 正确答案:A 7.若运行时给变量x输入12,则以下程序的运行结果是 main() {int x,y; scanf("%d",&x); y=x>12?x+10:x-12; printf("%d\n",y); } A)0 B)22 C)12 D)10 正确答案:A 8.若执行下述程序时,若从键盘输入6和8时,结果为 main() {int a,b,s; scanf("%d%d",&a,&b); s=a; if(a<b) s=b; s*=s; printf("%d",s); } A)36 B)64 C)48 D)以上都不对 正确答案:B 9.有如下程序
2-8
9 下面程序的功能是输出数组s中最大元素的下标,请填空。 main() { int k, p,s[]={1, -9, 7, 2, -10, 3}; for(p =0, k =p; p< 6; p++) if(s[p]>s[k])【 k=p 】 printf("%d\n", k); } 10 下面程序是求出数组arr的两条对角线上元素之和,请填空。 #include "stdio.h" main() { int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if( 【 i==j 】) a=a+arr[i][j]; for(i=0;i<3;i++) for( 【 j=2 】 ;j>=0;j--) if( 【 i+j==2 】) b=b+ arr[i][j]; printf("%d,%d\n",a,b); } 三.用switch结构编程实现给出一百分制成绩,要求输出成绩等级 'A','B','C','D','E'。90 分以上为'A',80~89分为'B',70~79分为'C',60~69分为’D',60分以下为'E。 (12分) #include <stdio.h> int main() { float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while (score>100||score<0) {printf("\n 输入有误,请重输"); scanf("%f",&score); } switch((int)(score/10)) {case 10:
2-7
2,2
】 。
main() { int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b)if(b!=15)if(!ok1)x=1; else if(ok2)x=10; else x=-1; printf("%d\n", x);} 6 下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请 填空。 main() {int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++) if【 (x%i= =0) 】{ y=0; break;} printf("%d\n", y); } 7 以下程序的输出结果是【 852 】。 main() { int y=9; for(; y>0; y- -) if (y%3= =0) { printf("%d", - -y); continue; } } 8. 下列程序的输出的结果是 【 -850 】 , 【2,0 】 。 main() { int i,j row,colum,m; static int array[3][3]={{100,200,300},{28,72,-30}{-850,2,6}}; m=array[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(array[i][j]<m) { m=array[i][j]; colum=j; row=i; } printf("%d,%d,%d\n",m,row,colum); }
3 若从键盘输入58,则以下程序输出的结果是 【585858 】 。 main() {int a; scanf("%d",&a); if(a>50)printf("%d",a); if(a>40)printf("%d",a); if(a>30)printf("%d",a); } 4 阅读下面程序,则在执行时候的输出为 【 #include "stdio.h" main() {int x=1,y=2,z=0; if(x=2)z=x,x=y,y=z; printf("%d,%d\n",x,y);} 5 以下程序的输出结果是【 -1 】。
卷号:
学 号 总分
姓
名
核分人
2010—2011 学年第一学期考试
级程序设计单元测试(二)试题
(2010 计算机网络专业用)
所在年级、班级
来自百度文库
高 密
注意
四�试卷印刷不清楚�可举手向监考教师询问� 三�考生在答题前应先将姓名�学号�年级和班级填写在指定的方框内� 二�姓名�准考证号不许涂改�否则试卷无效� 一�密封线内不准答题� 封 1. 在C程序中,判逻辑值时,用“非0”表示逻辑值“真”, 又用“0”表示逻辑 值“假”。 在求逻辑值时,用( )表示逻辑表达式值为“真”,又用( )表 示逻辑表达式值为“假”。 A)1 0 B)0 1 C)非0 非0 D)1 1 正确答案:A 2. 已知int x=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为 A)0 B)1 C)4 D)5 正确答案:B 3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是 A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 正确答案:D 4. 若变量c为char类型,能正确判断出c为小写字母的表达式是 A)′a′<=c<=′z′ B)(c>=′a′)||(c<=′z′)
2-1
题号 题分 得分
一 25
二 20
三 12
四 12
五 15
六 16
七
八
九
十
注意:学号、姓名和所在年级班级不写、不写全或写在密封线外者,试卷作废。
, 一、 选择题(在下列各题的四个选项中,只有一个选项是正确的 选择题(在下列各题的四个选项中,只有一个选项是正确的, 请将正确选 项打钩。每小题 1分,共 25 分) 分,共25 25分)
2-2
main() {float x=2.0,y; if(x<0.0)y=0.0; else if(x<10.0)y=1.0/x; else y=1.0; printf("%f\n",y);} 该程序的输出结果是 A)0.000000 B)0.250000 C)0.500000 D)1.000000 正确答案:C 10.若int k=8;则执行下列程序后,变量k的正确结果是 main() {int k=8; switch(k) {case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1;} printf("%d\n",k);} A)12 B)11 C)10 D)9 正确答案:D 11. 若int i,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是 A)9 B)8 C)3 D)2 正确答案:C 12.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分 成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零 件总数,请选择填空。 #include <stdio.h> main() { int i; for(i=100;i<200;i++) if((i-2)%4==0) if(!((i-3)%7)) if(_______) printf("%d",i); } A)i%9=5 B)i%9!=5 C)(i-5)%9!=0 D)(i-5)%9==0
14 .下面程序的运行结果是 #include "stdio.h" main() { int j,i,k=0; for(j=50;j<=60;j++) { if(!(k%10)) printf("\n"); for(i=2;i<j;i++) if(!(j%i)) break; if(i>=j-1) { printf("%d",j); k++; } } } A)5359 B)5953 C)3595 D)9535 正确答案:A 15. 设有以下程序段 int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次
正确答案:B 16. 对下Ⅰ,Ⅱ两个语句描述正确的是 Ⅰ.while(1)Ⅱ.for(;;) A)都是无限循环 B)Ⅰ是无限循环,Ⅱ错误 C)Ⅰ循环一次,Ⅱ错误 D)以上答案都错 正确答案:A 17. 下列说法中错误的是 A)只能在循环体内使用break语句 B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环 C)在while和do…while循环中,continue语句并没有使整个循环终止 D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再 一次进行循环判断 正确答案:A 18. 定义如下变量和数组: int k; int a[3][3]={9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是 for(k=0;k<3;k++)printf("%d",a[k][k]); A)7 5 3 B)9 5 1 C)9 6 3 D)7 4 1 正确答案:B 19. 下列程序执行后的输出结果是 main() { char arr[2][4]; strcpy(arr,"you"); strcpy(arr[1],"me"); arr[0][3]=′&′; printf("%s\n",arr); } A)you&me B)you C)me D)err 正确答案:A
25 阅读如下程序段,则程序在先后输入love和china后,输出结果是 #include <stdio.h> #include <string.h> main()
2-6
{ char a[30],b[30]; int k; gets(a); gets(b); k=strcmp(a,b); if(k>0) puts(a); else if(k<0) puts(b); } A) love B)china C)lovechina D)没有输出结果 正确答案:A 二.填空题(请将每一个空的正确答案写在括号中。每小题2分,共20分) 1.设y是int型,请写出y为奇数的关系表达式 【(y%2)==1 或 (y%2)!=0 2 以下程序输出的结果是【 main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 0 】。 】 。
20. 以下不正确的定义语句是 A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9};
2-5
C)char c1[]={′1′,′2′,′3′,′4′,′5′}; D)char c2[]={′\x10′,′\xa′,′\x8′}; 正确答案:B 21. 有以下程序 main() { char a[]={ ′a′, ′b′, ′c′,′d′, ′e′, ′f′, ′g′,′h′,′\0′}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\b",i,j); } 程序运行后的输出结果是 A)9,9 B)8,9 C)1,8 D)9,8 正确答案:D 22. 以下不能对二维数组a进行正确初始化的语句是 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6}; 正确答案:B 23. 已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china 赋给数组a的正确语句是 A)a="I love china"; B)strcpy(b,a); C)a=b; D)strcpy(a,b); 正确答案:D 24.已知:char a[20]= "abc",b[20]= "defghi";则执行下列语句后的输出结果为 printf("%d",strlen(strcpy(a,b))); A)11 B)6 C)5 D)以上答案都不正确 正确答案:B
2-3
正确答案:D 13. 下列程序的输出结果是 #include "stdio.h" main() {int i,a=0,b=0; for(i=1;i<10;i++) { if(i%2= =0) { a++; continue; } b++; } printf("a=%d,b=%d",a,b);} A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 正确答案:B
C)(′a′<=c)and(′z′>=c) D)(c>=′a′)&&(c<=′z′) 正确答案:D 5.设int x=1,y=1;表达式(!x||y- -)的值是 A)0 B)1 C)2 D)-1 正确答案:B 6. 以下程序的输出结果是 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 正确答案:A 7.若运行时给变量x输入12,则以下程序的运行结果是 main() {int x,y; scanf("%d",&x); y=x>12?x+10:x-12; printf("%d\n",y); } A)0 B)22 C)12 D)10 正确答案:A 8.若执行下述程序时,若从键盘输入6和8时,结果为 main() {int a,b,s; scanf("%d%d",&a,&b); s=a; if(a<b) s=b; s*=s; printf("%d",s); } A)36 B)64 C)48 D)以上都不对 正确答案:B 9.有如下程序
2-8
9 下面程序的功能是输出数组s中最大元素的下标,请填空。 main() { int k, p,s[]={1, -9, 7, 2, -10, 3}; for(p =0, k =p; p< 6; p++) if(s[p]>s[k])【 k=p 】 printf("%d\n", k); } 10 下面程序是求出数组arr的两条对角线上元素之和,请填空。 #include "stdio.h" main() { int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if( 【 i==j 】) a=a+arr[i][j]; for(i=0;i<3;i++) for( 【 j=2 】 ;j>=0;j--) if( 【 i+j==2 】) b=b+ arr[i][j]; printf("%d,%d\n",a,b); } 三.用switch结构编程实现给出一百分制成绩,要求输出成绩等级 'A','B','C','D','E'。90 分以上为'A',80~89分为'B',70~79分为'C',60~69分为’D',60分以下为'E。 (12分) #include <stdio.h> int main() { float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while (score>100||score<0) {printf("\n 输入有误,请重输"); scanf("%f",&score); } switch((int)(score/10)) {case 10:
2-7
2,2
】 。
main() { int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b)if(b!=15)if(!ok1)x=1; else if(ok2)x=10; else x=-1; printf("%d\n", x);} 6 下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请 填空。 main() {int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++) if【 (x%i= =0) 】{ y=0; break;} printf("%d\n", y); } 7 以下程序的输出结果是【 852 】。 main() { int y=9; for(; y>0; y- -) if (y%3= =0) { printf("%d", - -y); continue; } } 8. 下列程序的输出的结果是 【 -850 】 , 【2,0 】 。 main() { int i,j row,colum,m; static int array[3][3]={{100,200,300},{28,72,-30}{-850,2,6}}; m=array[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(array[i][j]<m) { m=array[i][j]; colum=j; row=i; } printf("%d,%d,%d\n",m,row,colum); }
3 若从键盘输入58,则以下程序输出的结果是 【585858 】 。 main() {int a; scanf("%d",&a); if(a>50)printf("%d",a); if(a>40)printf("%d",a); if(a>30)printf("%d",a); } 4 阅读下面程序,则在执行时候的输出为 【 #include "stdio.h" main() {int x=1,y=2,z=0; if(x=2)z=x,x=y,y=z; printf("%d,%d\n",x,y);} 5 以下程序的输出结果是【 -1 】。
卷号:
学 号 总分
姓
名
核分人
2010—2011 学年第一学期考试
级程序设计单元测试(二)试题
(2010 计算机网络专业用)
所在年级、班级
来自百度文库
高 密
注意
四�试卷印刷不清楚�可举手向监考教师询问� 三�考生在答题前应先将姓名�学号�年级和班级填写在指定的方框内� 二�姓名�准考证号不许涂改�否则试卷无效� 一�密封线内不准答题� 封 1. 在C程序中,判逻辑值时,用“非0”表示逻辑值“真”, 又用“0”表示逻辑 值“假”。 在求逻辑值时,用( )表示逻辑表达式值为“真”,又用( )表 示逻辑表达式值为“假”。 A)1 0 B)0 1 C)非0 非0 D)1 1 正确答案:A 2. 已知int x=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为 A)0 B)1 C)4 D)5 正确答案:B 3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是 A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 正确答案:D 4. 若变量c为char类型,能正确判断出c为小写字母的表达式是 A)′a′<=c<=′z′ B)(c>=′a′)||(c<=′z′)
2-1
题号 题分 得分
一 25
二 20
三 12
四 12
五 15
六 16
七
八
九
十
注意:学号、姓名和所在年级班级不写、不写全或写在密封线外者,试卷作废。
, 一、 选择题(在下列各题的四个选项中,只有一个选项是正确的 选择题(在下列各题的四个选项中,只有一个选项是正确的, 请将正确选 项打钩。每小题 1分,共 25 分) 分,共25 25分)
2-2
main() {float x=2.0,y; if(x<0.0)y=0.0; else if(x<10.0)y=1.0/x; else y=1.0; printf("%f\n",y);} 该程序的输出结果是 A)0.000000 B)0.250000 C)0.500000 D)1.000000 正确答案:C 10.若int k=8;则执行下列程序后,变量k的正确结果是 main() {int k=8; switch(k) {case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1;} printf("%d\n",k);} A)12 B)11 C)10 D)9 正确答案:D 11. 若int i,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是 A)9 B)8 C)3 D)2 正确答案:C 12.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分 成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零 件总数,请选择填空。 #include <stdio.h> main() { int i; for(i=100;i<200;i++) if((i-2)%4==0) if(!((i-3)%7)) if(_______) printf("%d",i); } A)i%9=5 B)i%9!=5 C)(i-5)%9!=0 D)(i-5)%9==0
14 .下面程序的运行结果是 #include "stdio.h" main() { int j,i,k=0; for(j=50;j<=60;j++) { if(!(k%10)) printf("\n"); for(i=2;i<j;i++) if(!(j%i)) break; if(i>=j-1) { printf("%d",j); k++; } } } A)5359 B)5953 C)3595 D)9535 正确答案:A 15. 设有以下程序段 int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次