《C语言》课程期中考试试卷一.在ABCD四个选项中,选择一个正确的答案填入括号内()1、用char定义的变量在IBMPC机中能表示的数的范围是:A)0~+255B)0~+65535C)-128~+127D)只能存字符,不能存数()2、设有intk=2;则执行printf(“%d”,k++);的输出为:A)0B)1C)2D)3()3、在while(!x)中,!x与______等价。A)x==0B)x!=0C)x==1D)x!=1()4、设有声明intvalue=’5’;,则执行下列选项的赋值语句后,value的值不等于5的是_____。A.)value=value-’0’;B)value=value-0x30;C)value=value-49;D)value=value-’\060’;()5、如intk=7;floatx=2.5,y=4.7;则表达式x+k%3*(int)(x+y)%2/4运算后的值是:A)0B)2C)2.5D)2.75()6、若有inta,b;则语句:printf(%d,(a=2)&&(b=-2);的输出结果是:A)无输出B)结果不确定C)-1D)1()7、设有inta=2;则执行printf(%d,5a1);的输出为:A)0B)1C)2D)3()8、执行语句c=(a=2,a+1,b=a++);后,a,b,c的值依次为:A)2,3,4B)3,3,3C)4,5,4D)3,2,2()9、以下程序的输出结果是A)20B)31C)321D)210main(){intn=4;while(n--)printf(%d,--n);}()10、给出以下定义:charx[]=abcdef;chary[]={'a','b','c','d','e','f'};22则正确的叙述为A)数组x和数组y等价B)数组x和数组y的长度相同C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度()11、若对一个函数调用在前,定义在后,C语言将视其返回值为__________类型。A)voidB)intC)floatD)不合法()12、如果用数组名作为函数调用的实参,传递给形参的是_________。A)数组的首地址B)数组元素的个数C)数组的第一个元素的值D)数组中全部元素的值二、填空题1.C语言中的标识符可以由三种字符组成,它们是___、__和__。2.关键字case和default只能在___语句中出现。3.若有说明inta[][4]={1,2,3,4,5,6,7,8,9};,则数组a第一维的大小是____。4.有声明:inta[3][4]={{1,2},{3},{6,7,8,8}};则a[1][2]的初值是____,a[2][1]的值是______。三、阅读程序,写出其输出结果1.设输入为:33↙(其中”↙”表示回车),则下面程序的输出是:______main(){intk,t,a,n;longs;scanf(“%d%d”,&a,&n);for(s=t=k=0;kn;k++){t=t*10+a;s+=t;}printf(“s=%ld”,s);}2.若以下程序输入为5,8↙,则输出为:___swap(intx,inty){intt;t=x;x=y;y=t;}main(){inta,b;33scanf(“%d,%d”,&a,&b);swap(a,b);printf(“a=%d,b=%d”,a,b);}3.设输入为:C++ProGramingLangUage↙(其中”↙”表示回车),下面C程序的输出是:___#includestdio.hmain(){intn1,n2,n3;charch;n1=n2=n3=0;while((c=getchar())!=’\n’)if(c=’A’&&c=’Z’)n1++;elseif(c=’a’&&c=’z’)n2++;elsen3++;printf(“n1=%d,n2=%d,n3=%d\n”,n1,n2,n3);}4.以下程序运行时,输出结果的第一行是,第二行是____。#includestdio.hvoidchange(intx,intm){charch[]={’0’,’l’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’},b[80];inti=0,r;while(x){r=x%m;x/=m;b[i++]=ch[r];}for(--i;i=0;i--)printf(“%c”,b[i]);}main(){inta,b;change(10,2);44printf(“\n”);change(10,8);}四、完善程序1、下面的程序读入数组元素值,然后以每行4个元素的形式输出。#defineN20main(){inta[N],i;for(i=0;iN;i++)scanf(“%d”,____);for(i=0;iN;i++){if(__)printf(“\n”);printf(“%8d”,a[i]);}printf(“\n”);}2.下面程序的功能是:使一个字符串按逆序存放,请填空#includestdio.hmain(){charm,str[60];inti,j;printf(“inputastring:”);gets(str);for(i=0,j=strlen(str)-1;i___;i++,j--){m=str[i];str[i]=_____;str[j]=m;}puts(str);}3.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差,如果两串相同,则返回0;例如:输入的两个字符串分别为abcdef和abceef,则输出为-1,请填空。#includestdio.hmain(){charstr1[100],str2[100],j;55ints;printf(\ninputstring1:\n);gets(str1);printf(\ninputstring2:\n);gets(str2);j=0;while((str1[j]==str2[j])&&(str1[j]!=___))j++;s=____;printf(%d\n,s);}4.以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如:输入的字符串为:556,则输出十进制整数366。请填空。#includestdio.hmain(){chars[6];inti=0,n;gets(s);n=0;while(s[i]!=0)____;printf(%d\n,n);}五、改错题下面的程序中,a是输入数组,b是输出数组;程序功能是找出数组a中所有素数,若a中某个元素为素数,则将输出数组相同位置处的元素置为’T’;否则置为’F’。如:若输入数组为:则输出数组为:621314FTTF16152567FFFT1751673TFFT81112119FTFT要求:改错时,可以修改语句中的一部分内容,调整语句次序,除了允许增加变量说明或编译预处理命令外,不允许增加整条语句,也不能删除整条语句。#includestdio.h#defineN4main(){inti,j,m,k,a[N][N];charb[][N];for(i=0;iN;i++)for(j=0;jN;j++)scanf(“%d”,a[i][j]);for(i=0;iN;i++)for(j=0;jN;j++)b[i][j]=’F’;for(i=0;iN;i++)66for(j=0;jN;j++){m=(int)sqrt(a[i][j];for(k=2;k=m;k++)if(a[i][j]%k=0)break;}if(km)b[i][j]=’T’;for(i=0;iN;i++){for(j=0;jN;j++)printf(“%5c”,b[i][j]);printf(“\n”);}}六、编制C语言程序(共26分)1、用递推法求1+1/2!+1/3!+1/4!+……的前30项之和。2、输入50个学生的某门课程成绩,计算出平均成绩(取两位小数),并统计出不及格(低于60分)的人数。3、求1~99之间的所有同构数。同构数是其值等于其右边数字平方数的整数。如25,36都是同构数(25=52,36=62)。要求程序中判断1个整数是否是同构数的功能用函数实现。77参考答案:一.选择题:1~5:CCACC6~10:DADAC11~12:B二.填空题:1、字母、下划线、数字字符;2、switch;3、3;4、0,7三.阅读程序,写出其输出结果:1、s=369;2、a=5,b=8;3、n1=5,n2=14,n3=4;4、100,12;四、完善程序:1、&a[i],i%4==0;2、j,str[j];3、’\0’,str1[j]-str2[j];4、n=n*8+s[i++]-‘0’;五、改错题:#includestdio.h#defineN4插入:#includemath.hmain(){inti,j,m,k,a[N][N];charb[][N];改:b[N][N]for(i=0;iN;i++)for(j=0;jN;j++)scanf(“%d”,a[i][j]);改:&a[i][j]for(i=0;iN;i++)for(j=0;jN;j++)b[i][j]=’F’;for(i=0;iN;i++)for(j=0;jN;j++){m=(int)sqrt(a[i][j];改:m=(int)sqrt(a[i][j]);for(k=2;k=m;k++)if(a[i][j]%k=0)break;改:a[i][j]%k==0}if(km)b[i][j]=’T’;改:if(km)b[i][j]=’T’;for(i=0;iN;i++){for(j=0;jN;j++)printf(“%5c”,b[i][j]);printf(“\n”);}}88六、编制C语言程序1、#includestdio.hmain(){intn=1,i;floatt=1,s=0;for(i=1;i=30;i++){s+=t;t=t/++n;}printf(“s=%f”,s);}2、#includestdio.hmain(){inta[50],n,i;floatav,s;n=0;s=0;for(i=0;i50;i++){scanf(“%d”,&a[i]);if(a[i]60)n++;s+=a[i];}printf(“平均数为:%.2f\n”,av);printf(“不及格人数=%d\n”,n);}3、#includestdio.hintistong(intm){intk;k=m%10;if(k*k==m)return(1);elsereturn(0);}99main(){inti;for(i=1;i100;i++)if(istong(i))printf(“%d,“,i);}