山东省潍坊市寿光市圣都职业高中2021-2022学年高三下学期考试《C语言程序与设计》试题及其答案

标签:
普通文字版答案
2024-11-01
| 18页
| 195人阅读
| 2人下载

内容正文:

一、 选择题(共40题) 1. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(  )‍ A.'x'&&'y' B.x<=y C.x||y+z&&y-z D.!((x 2. 下列表达式中值为真的是(  ) A.a=0 B.b=3>4 C.b=3+4==5 D.(float)1/2 3. 已知a=4,b=3,c=2;则表达式a>b>c的值为(  ) A.2 B.1 C.0 D.无法确定 4. (2020年春季高考试题)以下程序段的运行结果是(  ) int a=5,b=4,c=2,d=1; if(a>b>c)d=3: else d--; printf("%d ",d); A.0 B.1 C.2 D.3 5. 设有:int a=1,b = 2,c=3,d=4,m = 2,n=2;执行(m = a>b)&&(n=c>d)后n 的值为(  ) A.2 B.1 C.3 D.4 6. 执行语句"x=5>1 + 2&&2 || 2*4<4-! 0"后,x 的值为(  ) A.– 1 B.0 C.1 D.5 7. 以下程序的输出结果是(  ) main( ) { int a,b,d=241; a=d∕100%9; b=(-1)&&(-1). Printf("%d, %d” , a,b); } A.6,1 B.2,1 C.6,0 D.2,0 8. 以下程序的输出结果是(  ) main( ) { int a= -1,b=1,k; if((++ a<0) & & ! (b--<=0)) Printf("%d%d" ,a,b); else Printf("%d%d" ,b,a); } A.-1 1 B.0 1 C.1 0 D.0 0 9. 执行下面语句后x的值为(  )‍ int a=14, b=15, x; char c='A'; x=((a&&b)&&(c<'a')); A.TRUE B.FALSE C.0 D.1 10. 能正确表示“当x取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是(  )‍ A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)|(x>=200)||(x<=210) C.(x>=1)&&(x<=10)|(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210) 11. 下面的for语句是(  )‍ for (x=0, y=0; (y!=123)&&(x<4); x++); A.无限循环 B.循环次数不定 C.循环执行4次 D.循环执行3次 12. 循环语句for(i=0,x=0;!x&&i<=5; i++);的执行次数为(  )‍ A.5次 B.6次 C.1次 D.无限 13. 设有说明语句:int a=1,b=2,c=3,d=4,m=2,n=2;则执行(m=ad)后n的值为(  )‍ A.1 B.0 C.3 D.4 14. 逻辑运算符两侧运算对象的数据类型(  )‍ A.只能是0或1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 15. 设有说明语句:int a=1,b=2,c=3,d=4,m=2,n=2;则执行(m=a>b)&&(n=c>d)后n的值为(  )‍ A.1 B.2 C.3 D.4 16. 能正确表示“当x的取值在[-58,-40]和[40,58]范围内为真,否则为假”的表达式是(  )‍ A.(x>=-58)&&(x<=-40)&&(x>=40)&&(x<=58) B.(x>=-58)||(x<=-40)|1(x>=40)||(x<=58) C.(x>=-58)&&(x<=-40)||(x>=40)&&(x<=58) D.(x>=-58)||(x<=-40)&&(x>=40)||(x<=58) 17. 执行以下程序段后,w的值为(  )‍ int w='A', x=14,y=15; w=((x||y)&&(w<'a')); A.-1 B.Null C.1 D.0 18. 设x、y和z都是int类型变量,且x=3,y=4,z=5,则下面的表达式中,值为0的表达式为(  )‍ A.'x'&&'y' B.x<=y C.x||y+z&&y-z D.!(x 19. 设a为整型变量,不能正确表达数学关系10 A.10 B.a==11|a==12||a==13||a==14 C.a>10&&a<15 D.!(a<=10)&&!(a>=15) 20. 如果x大于1并且小于或等于10,则为真,否则为假,正确的表达式是(  )‍ A.1 B.x>1||x<=10 C.x>1&&x<=10 D.x>1&&x<10 21. 以下关于运算符优先顺序的描述中正确的是(  )‍ A.关系运算符 B.逻辑与运算符 C.赋值运算符 D.算术运算符 22. (2018年春季高考试题)以下程序段的运行结果是(  ) int x,y,z,d; x=2;y=3;z=5; d=z>y>x&&++y; printf("%d,%d ",d,y); A.0.4 B.1,4 C.0.3 D.1,3 23. 以下程序的输出结果是(  ) long fun( int n) { long s; if(n==1 || n= =2) s=2; else s= n-fun(n-1); return s; } main( ) { printf(" %1d", fun(3)); } A.1 B.2 C.3 D.4 24. 以下程序的输出结果是(  ) int w=3; main( ) { int fun(int k); int w= 10; Printf("%d” ,fun(5) * w); } int fun(int k) { if(k= =0) return w; return(fun(k-1) * k); } 输出的结果是 A.360 B.3600 C.1080 D.1200 25. while(!E)中的表达式!E等价于(  )‍ A.E==0 B.E!=1 C.E!=0 D.E==1 26. 以下程序的输出结果为(  ) main( ) { int a,b,c,x,y,z; a=10;b=2; c= ! (a%b); x= ! (a/b); y=(az= (a=0); printf(c= %d,x= %d,y= %d,z=%d",c,x,y,z); } A.c=0,x=1 ,y=1 ,z=0 B.c=5,x=0,y=1,z=0 C.c=1 ,x=0,y=0,z=1 D.c= 10, x=2 ,y=0 ,z= 1 27. 在以下程序中,判断i>j共执行了次(  ) A.4 B.7 C.5 D.6 28. 下列程序,运行后的结果为(  ) #include main( ){ int a[3][3]={1,2,3,4,5,6,7,8,9},sum=0; for(int i=0;i<3;i++) {for(int j=0;j<3;j++) {if(i==j) {sum=sum+a[i][j];} }} printf("%d",sum);} A.15 B.16 C.17 D.18 29. 程序段如下:则以下说法中不正确的是 (  ) # include main( ) { int k = 2 ; while(k≤7) { if(k%2) {k = k+3; printf("k= %d " ,k) ;continue;} k = k+l; printf("k= %d∖n" ,k); } } A.k=k+3;执行一次 B.k=k+1;执行2次 C.执行后k值为7 D.循环体只执行一次 30. 下面程序段的输出结果是(  ) x=3; do { y=x- - ; if( ! y) {printf( "* "; continue ;} printf(" # "); } while(x=2); A.# # 31. 以下程序的输出结果是(  ) main( ) { int y=10; for( ;y>0;y- -) if(y%3= =0) { printf(" %d" ,y) ;continue; } } A.741 B.852 C.963 D.875421 32. 下列程序的输出结果是 (  ) # include main(  ) int i; for(i = 4;i< = 10;i+ + ) { if(i%3 = =0) continue; printf( "%d" , i); } } A.45 B.457810 C.69 D.678910 33. 对下面程序段,描述正确的是(  ) for(t=1;t<=100;t++) { scanf("%d" , &x); if(x<0) continue; printf("%d∖t" ,x); } A.当x<0时,整个循环结束 B.当x>=0时,什么也不输出 C.printf函数永远也不执行 D.最多允许输出100个非负整数 34. 以下程序的输出结果是(  ) main( ) { int a,b; for(a=1 ,b= 1 ;a<= 100;a++) { if(b>=10) break; if (b%5== 1) { b+=5;continue; } } printf(" %d∖n" ,a); } A.101 B.6 C.4 D.3 35. 有以下程序: main( ) { int i=5; do { if(i%3== 1) if(i%5== 2) { printf(" * %d" ,i);break; } i+ + ; } while(i! =0); printf( " "); } 该程序的运行结果是(  ) 36. 若有说明语句:int w=1,x=2,y=3,z=4;则表达式w>x?w:z>y?z:x的值是(  )‍ A.4 B.3 C.2 D.1 37. 下面程序段的运行结果是(  )‍ for(x=3;x<6;x++) printf((x%2)?(“**%d”):(“%d”),x); A.**34**5 B.3**45 C.3**4**5 D.**345 38. 若有条件表达式(exp)?A++:b--,则以下表达式中能完全等价于表达式(exp)的是(  ) A.(exp==0) B.(exp==1) C.(exp!=0) D.(exp!=1) 39. 若运行以下程序段时输入:35/(回车),则程序的运行结果是(  )‍ float x, y; char a; double r; scanf("%f%f%c",&x,&y,&a); switch(a) { case'+'; r=x+y; break; case'-': r=x-y; break; case'*':r=x*y;break; case'/':r=x/y; break; printf("%f",r);} A.8.000000 B.-2.000000 C.15.000000 D.0.600000 40. 若a和b均是正整型变量,正确的switch语句是(  )‍ A.switch(pow(a,2)+pow(b,2)) case 1: case 3: y=a+d;break; case 0: case 5:y=a-b;} B.switch(a*a+b*b); { case 3: case 1:y=a+b;break; case 0:y=b-a; break;} C.switch a { default:x=a+b; case 10:y=a-b;break; case 11:x=a*b;break; D.switch(a+b) 二、 简答题(共2题) 41. 阅读下列程序,写出输出结果。 # include main( ) {float a=6,b=5,c=4,t; if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf(”%5.2f,%5.2f,%5.2f”,a,b,c); } 程序输出结果为: 42. 输入十个学生的成绩,先计算他们的总分,再输出他们的平均分。请将计算总分部分的程序填写完整。 # include main( ) { int i; float scoresElθ] , sum=0 ; printf(“输入10个学生的成绩:”);   printf("平均分=%.2f",sum/10); } 三、 案例分析题(共1题) 43. 以下程序的输出结果是( )。 main() { int a=100, x=10, y=20, ok1=5, ok2=0; if(xif(y!=10) if(!ok1)a=1; else if(ok2)a=10; a=-1; printf("%d ", a); } 四、 程序分析题(共5题) 44. 写出下列程序运行结果。 main() { int a, b,c; int s,w,t; s=w=t=0; a=-1;b=3;c=3; if(c>0)s=a+b; if(a<=0) { if(b>0)if(c<=0)w=a-b;} else if(c>0)w=a-b; else t=c; printf("%d%d%d",s,w,t);} 45. 以下程序用于判断某一年是否为闰年(判断闰年的方法为:能被4整除但不能被100整除或者能被400整除)。 main() { int year; print("请输入年数:"); scanf("%d", &year); if((year%4==0)&&___________) printf("%d年为闰年",year); else if(__________) printf("%d年为闰年",year); else printf("%d 为平年",year);} 46. 以下程序可实现从键盘输入两数a和b,并输出其中较大者的功能(不考虑相等的情况)。 main( ) { ___________ scanf("%d%d",&a,&b); if(___________) printf("最大值为%d",a); else printf("最大值为%d",b);} 47. 阅读下列程序写出程序的运行结果。 main() { int a=2,b=7,c=5; switch(a>0) { case 1:switch(b<0) { case 1: printf("@");break; case 2: printf("!");break;} case 0:switch(c==5) { case 0: printf("*"); break; case 1: printf("#");break; case 2: printf("$");break;} default: printf("&");} printf(" ");} 48. 写出下列程序的运行结果________ #include main() { int i=1,s=3; do{ s+=i++; if(s%7==0)continue; else ++i;}while(s<15); printf("i=%d", i);} 五、 编程题(共4题) 49. 从键盘输入三个整数,输出其中的较小者。 50. 有一个函数​编写程序,从键盘输入x,输出y值。 51. 输入三个整数x,y,z,请把这三个数由小到大输出。 52. 输入两个正整数m和n,求其最大公约数。 参考答案及解析 一、 选择题 1. 【答案】D 【解析】[!((x 2. 【答案】D 3. 【答案】C 4. 【答案】A 5. 【答案】A 6. 【答案】C 7. 【答案】B 8. 【答案】C 9. 【答案】D 【解析】[因为x后面是逻辑符号构成,所以它的值为1或0(若后面的式子逻辑和为真就是1,否则为0)。因为14与15都是非零的,非零的逻辑值均为1,所以(a&&b)是1。A的ascII码(ascII码就是电脑中字母转换为数字时的数值)是小于a的。所以(c<'a')是真,即是1。] 10. 【答案】C 11. 【答案】C 【解析】(y一直是0,所以y!=123一直成立,所以就看x,一共循环四次。) 12. 【答案】B 【解析】(!x&&i<=5,!x为真,只须i<=5为真,i取值为0,1,2,3,4,5。) 13. 【答案】B 【解析】 [(m=ad)进行处理,此题因为&&左边的表达式为真,所以会处理&&右边的(n=c>d)这个式子,由以上分析,(c>d)为假,其真值为0,所以n为0。] 14. 【答案】D 15. 【答案】B 【解析】 [m=a>b值为0,也即是&&左边的表达式为假,所以不在处理&&右边的(n=c>d)这个式子,n的值仍为2。] 16. 【答案】C 17. 【答案】C 【解析】 (x,y都不等于0,即x,y都为真,进行“或”运算“”时,有一个为真即为真所以x||y逻辑值为1;'a'=97,'A'=65,所以w<'a'为真。) 18. 【答案】D 19. 【答案】A 20. 【答案】C 【解析】 (条件同时满足用求与“&&”。) 21. 【答案】C 22. 【答案】C 23. 【答案】A 24. 【答案】B 25. 【答案】A 【解析】 (!E就是非E,当E==0的时候!E的值是真,所以while循环成立。B选项 E!=1 如果E==2的时候!E是0为假,明显不对;C选项E!=0 类似的道理,D选项E==1,!E是假。所以选A。) 26. 【答案】C 27. 【答案】D 28. 【答案】A 29. 【答案】D 30. 【答案】C 31. 【答案】B 32. 【答案】B 33. 【答案】D 34. 【答案】D 35. 【答案】D 36. 【答案】A 【解析】 [w>x?w:z>y?z:x条件表达式是从右向左结合,所以先执行z>y?z:x得4,在进行w>x?w:4运算得4。] 37. 【答案】A 【解析】 [printf((x%2)?(“**%d”):(“%d”),x);为条件语句。当循环执行x=3时,判断条件(x%2)为真,执行(“**%d”)(语句中没有 就不换行)。然后循环执行x=4时 判断后执行(“##%d ”)(并加换行),故选A。] 38. 【答案】C 39. 【答案】D 【解析】 [从键盘输入35/,a='/',则执行case/对应的语句 r=x/y;break;得r=0.6,输出默认6位小数。] 40. 【答案】D 【解析】 选项A中switch后一对圆括号中的表达式类型必须是整型,字符型,而在此表达式pow(a,2)+pow(b,2)中调用了求幂函数,此函数的运算结果是双精度型,因此不符合语法要求;将产生语法错误,选项B中在switch首行的最后多了一个分号,选项C中switch后的表达式必须在一对圆括号中。 二、 简答题 41. 【答案】4.00,5.00,6.00 42. 【答案】for(i=0;i<10;i+ + ) { Scanf(" % f" , &scores[i]); sum=sum+scores[i]; } 三、 案例分析题 43. 【答案】-1 四、 程序分析题 44. 【答案】200 45. 【答案】year%100!=0 year%400==0 46. 【答案】inta,b; a>b 47. 【答案】#? 48. 【答案】i=8 五、 编程题 49. 【答案】程序源代码: main() { int a, b, c, min; scanf(“%d%d%d”, &a, &b, &c); if(a>b)min=b; else min=a; if(min>c)min=c; printf(“%d”, min);} 50. 【答案】程序源代码: main() { float x; double y; scanf(“%f“,&x); if(x<=0)y=x*x; else if(x<10)y=2*x*x-3; else y=x*x+5; printf(“%.2f”,y);} 51. 【答案】程序源代码: main() int x, y, z,t; scanf("%d%d%d",&x,&y,&z); if(x>y) { t=x;x=y;y=t;} if(x>z) { t=z;z=x;x=t;} if(y>z) { t=y;y=z;z=t;} printf("small to big: %d%d%d ", x, y, z); } 52. 【答案】程序源代码: main() { int a, b, i, temp; printf("please input two numbers: "); scanf("%d, %d", &a, &b); if(afor(i=b;i<=2;i++) if(a%i=0&&b%i==0)break; printf("gongyueshu: %d ", i); } 学科网(北京)股份有限公司 $$

资源预览图

山东省潍坊市寿光市圣都职业高中2021-2022学年高三下学期考试《C语言程序与设计》试题及其答案
1
山东省潍坊市寿光市圣都职业高中2021-2022学年高三下学期考试《C语言程序与设计》试题及其答案
2
山东省潍坊市寿光市圣都职业高中2021-2022学年高三下学期考试《C语言程序与设计》试题及其答案
3
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。