您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 南昌航空大学C语言期末考试试卷
第1页共20页一、单项选择题(每题3分,共30分,注意:答案写在后面的答题卡内,否则0分)1、若有定义:inta=8,b=5,c;执行语句c=a/b+0.4;后,c的值为()。A)1.4B)1C)2.0D)22、以下程序中,while循环的次数是()。#includestdio.hvoidmain(void){inti=0;while(i10){if(i1)continue;if(i==5)break;i++;}}A)1B)死循环,不能确定次数C)6D)103、以下程序的输出结果是()。#includestdio.hvoidmain(void){inta=0,i;for(i=1;i5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(“%d\n”,a);}A)31B)13C)10D)204、以下程序的输出结果是()。#includestdio.hvoidmain(void){inta=5,b=4,c=6,d;printf(“%d\n”,d=ab?(ac?a:c):b);}A)5B)4C)6D)不确定5、执行以下程序后的输出结果是()#includestdio.hvoidmain(void){chara[]=”abc\0abc”;printf(“%s”,a);}A)abc\0abcB)abc\C)abc\0D)abc6、当调用函数时,实参是一个数组名,则向函数传送的是()。A)数组的长度B)数组的首地址C)数组每一个元素的地址D)数组每个元素中的值7、执行以下程序后,a的值为()。评阅人得分第2页共20页int*p,a=10,b=1;p=&a;a=*p+b;A)12B)编译出错C)10D)118、以下正确的叙述是()。A)在C语言中,main函数必须位于文件的开头B)C语言每行中只能写一条语句C)C语言本身没有输入、输出语句D)对一个C语言进行编译预处理时,可检查宏定义的语法错误9、以下程序的输出结果是()。voidmain(void){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf(“%d\n”,d);}A)1B)0C)非0的数D)–110、执行以下程序段后,变量y的值是()。intx,y;x=1;y=(++x*5);A)5B)10C)15D)20单项选择题答题卡12345678BBACDBDC910AB评分标准:每题选对满分,选错0分。二、分析结果题(20分)1、(9分)#includestdio.hvoidf(intc){inta=0;staticintb=0;a++;b++;printf(%d:a=%d,b=%d\n,c,a,b);}voidmain(void){inti;for(i=1;i=3;i++)f(i);}运行结果为:1:a=1,b=1评阅人得分第3页共20页2:a=1,b=23:a=1,b=32、(11分)#includestdio.hvoidmain(void){intnum,c;num=2004;do{c=num%10;printf(%d,c);}while((num/=10)0);printf(\n);}运行结果为:4002三、程序填空题(每空4分,共20分)1、求1!+2!+3!+。。。+10!#includestdio.hvoidmain(void){floats=0,t=1;intn;for(n=1;n=10;n++){t=t*n;s=s+t;}printf(“1!+2!+3!+。。。+10!=%f”,s);}2、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。voidexchange(int*x,int*y){intt;t=*y;*y=*x;*x=t;}四、程序设计题(30分)(1)sum=2+5+8+11+14----,输入正整数n,求sum的前n项和。(10分)voidmain()评阅人得分评阅人得分第4页共20页{intn,i,t,sum=0;//1分scanf(%d,&n);//1分t=2;//1分for(i=1;i=n;i++)//2分{sum=sum+t;//2分t=t+3;//2分}printf(sum=%d,sum);//1分}(2)今有100块砖,需100人来搬,男搬4,女搬3,两个小孩搬一砖。问男、女、小孩各几何?(8分)#includestdio.hvoidmain(){intman,woman,child;//1分for(man=0;man=100;man++)//1分for(woman=0;woman=100;woman++)//1分for(child=0;child=100;child++)//1分{if(8*man+6*woman+child==200&&man+woman+child==100)//2分printf(%d%d%d\n,man,woman,child);//2分}}(3)求一个矩阵外围元素之和。(12分)#includestdio.h#defineN4#defineM5doublematrix_sum(doublematrix[][M]){doublesum=0;intk;for(k=0;kN;k++){sum=sum+matrix[k][0];sum=sum+matrix[k][M-1];//3分}for(k=1;kM-1;k++){sum=sum+matrix[0][k];sum=sum+matrix[N-1][k];//3分}returnsum;//1分}voidmain(){inti,j;doublematrix_source[N][M];doublet;doubleresult;for(i=0;iN;i++)第5页共20页for(j=0;jM;j++){scanf(%lf,&t);//1分matrix_source[i][j]=t;//2分}result=matrix_sum(matrix_source);//2分printf(%lf\n,result);}二、单项选择题(每题2分,共30分,注意:答案写在后面的答题卡内,否则0分)1、下面哪一个是正确的标识符()Aqbc?Bbc$C_bcD2bc2、设有inta[6]={1,2,3,4,5,6},*p=a;则*(p+3)与(*a+3)的值为()A1,3B3,3C4,4D4,63、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=ab)&&(n=cd)运算后,n的值为()A0B1C2D34、t为int类型,进入下面的循环之前,t的值为0while(t=l){……}则以下叙述中正确的是()A循环控制表达式的值为0B循环控制表达式的值为1C循环控制表达式不合法D以上说法都不对5、设inti=4,j=8,k;则表达式k=(i++,++i,j++)的值为()A4B8C9D106、有宏定义#defineMULT1(a,b)a*b#defineMULT2(a,b)(a)*(b)宏引用Y=MULT1(3+2,5+8);Z=MULT2(3+2,5+8)后,则Y和Z的值是()。AY=65,Z=65BY=21,Z=65CY=65,Z=21DY=21,Z=217、若定义a为int型变量,则对指针变量p的正确初始化是()。Aint*p=a;Bint*p=*a;Cintp=&a;Dint*p=&a;8、以下程序的输出结果是()main(){inta=3;printf(%d\n,(a+a-=a*a));}A-6B12C0D-129、在一个源文件中定义的全局变量的作用域为()。A本文件的全部范围B本程序的全部范围评阅人得分第6页共20页C本函数的全部范围D从定义该变量的位置开始至本文件结束10、设有intI;I=7/2;printf(“%d”,I);则执行结果为()A3.5B3.50C3D3.011、在C语言中,合法的长整型常数是()A0LB4962710C324562&D216D12、以下选项中合法的字符常量是()ABB'\010'C68DD13、假定x和y为double型,则表达式x=2,y=x+3/2的值是()A3.500000B3C2.000000D3.00000014、设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是()printf(%d,%d\n,x--,--y);A10,3B9,3C9,2D10,215、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()AINPUTx、y、z;Bscanf(%d%d%d,&x,&y,&z);Cscanf(%d%d%d,x,y,z);Dread(%d%d%d,&x,&y,&z);单项选择题答题卡12345678CCCBBBDD9101112131415DCABDDB评分标准:选对得满分,否则0分。二、分析结果题(23分)1、(6分)#include“stdio.h”voidmain(){intI=6,x,y;x=I++;y=++I;printf(“%d,%d”,x,y);}运行结果为:6,8评分标准:写对一个数字得3分,全写对得6分。2、(5分)#include“stdio.h”voidmain(){inta[3][3]={1,2,3,4,5,6,7,8,9};printf(“%d”,*(a[1]+2));}运行结果为:6评分标准:写对得5分,否则0分。3、(6分)评阅人得分第7页共20页#include“stdio.h”voidsub(ints,intt){intw;w=s;s=t;t=w;}voidmain(){inta,b;a=100;b=200;sub(a,b);printf(“%d,%d”,a,b);}运行结果为:100,200评分标准:写对一个数字得3分,全写对得6分。4、(6分)#include“stdio.h”voidmain(){intn;for(n=1;n=20;n++){if(n%3!=0)continue;printf(“%3d”,n);}}运行结果为:369121518评分标准:写对一个数字得1分,全写对得6分。三、程序填空题(每空2分,共16分)1.本程序能实现将若干个数按逆序存放,然后输出,请在横线上填写正确内容完成程序。例如:原顺序为6,8,4,5,1逆序后为1,5,4,8,6#defineN5voidmain(){inti,t;staticinta[N]={6,8,4,5,1};for(i=0;iN/2;i++){t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;}printf(“\n”);for(i=0;iN;i++)printf(“%4d”,a[i]);}评分标准:写对一个空得2分,全写对得8分。2.以下程序实现:输入三个整数,按从大到小的顺序输出,请在横线上填写正确内容完成程序。voidmain(){intx,y,z,c;scanf(“%d%d%d”,&x,&y,&z);if(yz)第8页共20页{c=y;y=z;z=c;}if(xz){c=x;x=z;z=c;}if(xy){c=x;x=y;y=c;}printf(“%d,%d,%d”,x,y,z);}评分标准:写对一个空得2分,全写对得8分。四、程序设计题(31分)1.如果某个3位数的各位数字的立方之和等于该数本身,则这个3位数就是一个“水仙花”数,如153=13+33+53。编程打印所有的“水仙花”数。(10分)#includestdio.hvoidmain(){intge,shi,bai,x;//1分for(ge=0;ge=9;ge++)//1分for(shi=0;shi=9;shi++)//1分for(bai=1;bai=9;bai++)//1分{x=ge+10*shi+100*bai;//2分if(x==ge*ge*ge+
本文标题:南昌航空大学C语言期末考试试卷
链接地址:https://www.777doc.com/doc-5188037 .html