C语言期末考试真题2.docx
- 文档编号:12902241
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:16
- 大小:24.76KB
C语言期末考试真题2.docx
《C语言期末考试真题2.docx》由会员分享,可在线阅读,更多相关《C语言期末考试真题2.docx(16页珍藏版)》请在冰豆网上搜索。
C语言期末考试真题2
2008-2009学年度第二学期
华中科技大学《C语言程序设计》试卷(B)
(考试时间:
150分钟考试方式:
闭卷)
所有答案必须写在答题纸上
一、选择题(每题1.5分,共39分)
1.以下叙述中正确的是()。
A.C语言比其他语言高级。
B.C语言可以不用编译就能被计算机识别执行。
C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式。
D.C语言出现的最晚,具有其他语言的一切优点.。
2.若有定义:
inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为( ).
A.1.4 B.1 C.2.0 D.2
3.若变量a是int类型,并执行了语句:
a='A'+1.6;,则正确的叙述是( ).
A.a的值是字符B B.a的值是字符C
C.不允许字符型和浮点型相加 D.a的值是字符‘A’的ASCII值加上1
4.以下程序的输出结果是( ).
#include
voidmain()
{inta=5,b=4,c=6, d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A.5 B.4 C.6 D.不确定
5.以下程序的输出结果是( ).
#include
voidmain()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A.1 B.0 C.非0的数 D.-1
6.以下选项中合法的实型常数是( ).
A.5E2.0 B.E-3 C..2E0 D.1.3E
7.若有以下程序:
#include
voidmain()
{intk=2,i=2,m;
m=(k+=i*=k);
printf("%d,%d\n",m,i);
}
执行后的输出结果是( ).
A.8,6B.8,3 C.6,4 D.7,4
8.以下选项中非法的表达式是( ).
A.0<=x<100 B.i=j==0
C.(char)(65+3) D.x+1=x+1
9.若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a
a:
c c: d的值是( ). A.1 B.2 C.3 D.4 10.请读程序: #include main() {inta;floatb,c; scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d,b=%f,c=%f\n",a,b,c); } 若运行时从键盘上输入9876543210 A.a=98,b=765,c=4321 B.a=10,b=432,c=8765 C.a=98,b=765.000000,c=4321.000000D.a=98,b=765.0,c=4321.0 11.有以下程序 main() {inta=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n",d); elseif((c-1>=d)==1) printf("%d\n",d+1); else printf("%d\n",d+2); } 执行后输出结果是_______。 A.2 B.3 C.4 D.编译时有错,无结果 12.有以下程序 main() {intk=4,n=4; for(;n {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 13.有以下程序: main() {inta=5,b=0,c=0; if(a=b+c) printf("****\n"); else printf("$$$$\n"); } 以上程序________。 A.有语法错不能通过编译。 B."可以通过编译但不能通过连接。 C"输出**** D.输出$$$$ 14.以下程序的运行结果是______。 main() {intm=5; if(m++>5)printf("%d\n",m++); elseprintf("%d\n",m--); } A.4 B.5 C.6 D.7 15.为了避免在嵌套的条件语句if--else中产生二义性,C语言规定: else子句总是与________匹对。 A.缩排位置相同的if B.其之前最近的if C.其之后最近的if D.同一行上的if 16.若i,j已定义为int型,则以下程序段中循环体的总的执行次数是。 For(i=0;i<5;i++) for(j=0; j<4; j++) {……} A.20 B.24 C.25 D.30 17.C语言程序的三种基本结构是( )。 A.顺序结构,选择结构,循环结构是 B.递归结构,循环结构,转移结构 C.嵌套结构,递归结构,顺序结构 D."循环结构,转移结构,顺序结构 18.以下关于do-while循环的不正确描述是( )。 A.do-while的循环体至少执行一次 B.do-while循环由do开始,用while结束,在while(表达式)后面必须有分号 C.在do-while循环体中,一定要有能使while后面表达式的值变为零(""假"")的操作D.do-while的循环体有可能执行0次 19.以下叙述正确的是( )。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 20.有定义语句: intb; charc[10];,则正确的输入语句是_____. A.scanf("%d%s",&b,&c); B.scanf("%d%s",&b,c); C.scanf("%d%s",b,c); D.scanf("%d%s",b,&c); 21.已有定义: chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是_____. A.数组a和b的长度相同 B.a数组长度小于b数组长度 C.a数组长度大于b数组长度 D.上述说法都不对 22.有以下程序 main() { intm[][3]={1,4,7,2,5,8,3,6,9}; inti,j,k=2; for(i=0;i<3;i++) { printf(""%d"",m[k][i]); } }执行后输出结果是______。 A.456 B.258 C.369 D.789 23.当执行下面的程序时,如果输入ABC,则输出结果是( ). #include"stdio.h" #include"string.h" main() {charss[10]="1,2,3,4,5"; gets(ss); strcat(ss,"6789"); printf("%s\n",ss); } A.ABC6789 B.ABC67 C.12345ABC6 D.ABC456789 24.下面程序的运行结果是() sub(intx,inty,int*z) {*z=y-x;} main() {inta,b,c; sub(10,5,&a); sub(7,a.&b); sub(a,b,&c); printf(“%4d,%4d,%4d\n”,a,b,c); } A.5,2,3B.-5,-12,-7 C.-5,-12-17 D.5,-2,-7 25.下面程序的运行结果是() main() {intk=4,m=1,p; p=func(k,m);printf(“%d,”,p); p=func(k,m);printf(“%d\n”,p); } func(inta,intb) {staticintm=0,i=2; i+=m+1; m=i+a+b; return(m); } A.8,17 B.8,16 C.8,20 D.8,8 26.有以下程序执行后输出结果是( ). main() {inta[][3]={{1,2,3},{4,5,0}},{*pa}[3],i; pa=a; for(i=0;i<3;i++) if(i<2)pa[1][i]=pa[1][i]-1; elsepa[1][i]=1; printf("%d\n",a[0][1]+a[1][1]+a[1][2]); } A.7B.6C.8D.无确定值 二、填空题(20分每空2分) 1.以下程序的输出的结果__________. intx=3; main() {inti; for(i=1;i } incre() {staticintx=1; x*=x+1; printf("%d\n",x); } 2.以下程序的输出的结果__________. #include"stdio.h" voidmain() {charstr[]="xyz",*ps=str; while(*ps)ps++; for(ps--;ps-str>=0;ps--)puts(ps); } 3.以下程序的输出的结果__________. #include"stdio.h" voidmain() {inta[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int*pa[3];int*p=a[0],i; for(i=0;i<3;i++) pa[i]=a[i]; for(i=0;i<3;i++) printf("%d--%d\n",p[i],*(pa[i]+1)); } 4.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串: yesyes! 否则函数返回字符串: no! 并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如: adgda.请填空. #include "string.h" 【1】 huiwen(char *str) { char*p1,*p2; int i,t=0; p1=str; p2=str+strlen(str)-1; for(i=0;i<=strlen(str)/2;i++) if(*p1++! =*p2--) { t=1; 【2】} if( 【3】 ) return("yes! "); else return("no! "); } main() { char str[50]; printf("Input: "); scanf("%s",str); printf("%s\n", 【4】 ); } 5.以下程序在数组a中查找与x值相同的元素的所在位置,请填空。 #include"stdio.h" voidmain() {inta[10],x,i; printf("Enter10integers,\n"); for(i=0;i<10;i++) scanf("%d",【1】); printf("Enterx: "); scanf("%d",&x); for(i=0;i<5;i++) if(x==a[i]) 【2】; if(【3】)printf("%5d'spositionis%4d\n",x,i); elseprintf("%dNotbeenfound! \n",x); } 三、改错题(共10分) (以下程序中******和*******位置处有错误,请改正,但不能增减程序行) 1.下面程序的功能是计算: s=1! +1/2! +1/3! +…+1/10! 。 #include voidmain() { doubles; intn; s=0; ************************* for(n=1;n<10;n++) s+=fact(n); ************************* printf("s=%lf\n",s); } doublefact(intn) { doublep; intk; p=1; *************************** for(k=1;k<=n;k++) p*=1/k; ************************** returnp; } 2.#defineNULL0 voidmain() {******************** int*p=NULL; *p=25; ********************* Printf(“%d\n”,*p);} 3.程序的功能是将数组x的元素倒序输出。 例如,输入12345,则输出为54321. #include #defineM20 main() { inti,x[M],n,m,*p,*k,*j; printf("\nEntern: "); scanf("%d",&n); printf("\nEnterarrayx[i](i=0~n): \n"); for(i=0;i scanf("%d",x+i); printf("\n"); m=n/2; ****************** k=x; j=x+n; p=x+m; ****************** for(;k<=p;k++,j--) {******************** intt=*k; k=j; *j=t; ******************** } printf("\nThearrayinverted: \n"); for(i=0;i printf("%d",x[i]); getchar(); } 四、编程题(共30分) 1.试编程序,找出1至99之间的全部同构数。 同构数是这样一组数,它出现在平方数的右边。 例如: 5是25右边的数,25是625右边的数,5和25都是同构数。 (9分) 2.编写程序: 实现将十进制数转换成相应十六进制数。 (10分) 3.有4名学生,每个学生考4门课程,要求编写input()函数输入学生的成绩,search()函数输入学生序号以后能输出该学生的全部成绩。 (12分) #include"stdio.h" #include"string.h" voidmain() {intscore[4][4]; charname[4][8]; charstr[8]; int*search(intscore[4][4],charname[4][8],charstr[8]); voidinput(intscore[4][4],charname[4][8]); int*p; inti,j; input(score,name); for(i=0;i<4;i++) for(j=0;j<4;j++) printf("%d\t",score[i][j]); printf("Enterthenameofstudent: "); scanf("%s",str); printf("Thescoreofthestudent%sare: \n",str); p=search(score,name,str); for(i=0;i<4;i++) printf("%d\t",*(p+i)); } voidinput(intscore[4][4],charname[4][8]) { } int*search(intscore[4][4],charname[4][8],charstr[8]) { } 《C语言程序设计》答题纸(2009年9月12日) 时间: 150分钟满分100分闭卷B 班级________学号________________姓名__________ 题目 一 二 三 四 总分 得分 一、选择题(用铅笔在正确的选项上涂黑,共39分) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 二、填空题(每空2分,共20分) 【1】_____________________ 【2】_____________________ 【3】_____________________ 【4】_____________________ 【5】_____________________ 【6】_____________________ 【7】_____________________ 【8】_____________________ 【9】_____________________ 【10】_____________________ 三、改错题(每处2分,共10分) 【1】_____________________ 【2】_____________________ 【3】_____________________ 【4】_____________________ 【5】_____________________ 四、编程题(31分)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末考试
![提示](https://static.bdocx.com/images/bang_tan.gif)