20学年第二学期c语言期末考题及解答 4.docx
- 文档编号:6632314
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:15
- 大小:20.11KB
20学年第二学期c语言期末考题及解答 4.docx
《20学年第二学期c语言期末考题及解答 4.docx》由会员分享,可在线阅读,更多相关《20学年第二学期c语言期末考题及解答 4.docx(15页珍藏版)》请在冰点文库上搜索。
20学年第二学期c语言期末考题及解答4
xxxx大学
xxxx学年第二学期期末
《C语言程序设计》
考试A卷
班级______________学号_________
姓名______________成绩_________
班号学号姓名成绩
《C语言程序设计》期末考试卷
注意事项:
1、请将所有的答案和程序写在答题纸上,写在试卷纸上不得分!
2、考试时间120分钟
一、选择题(每题2分,共40分)
1、以下叙述正确的是______。
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
2、以下正确的描述是______。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
3有以下程序
voidmain()
{doubled=3.2;
intx,y;
x=1.2;
y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
程序的输出结果是____
A)3B)3.2C)0D)3.07
4、若变量已正确说明为float类型,要通过语句
scanf("%f%f%f",&a,&b,&c);
给a赋值10.0,给b赋值22.0,给c赋值33.0,不正确的输入形式是______。
A)10
B)10.0,22.0,33.0
C)10.0
D)1022
5、main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出是____
A)0,1,2,0B)0,0,0,3C)1,1,2,0D)编译有错
6、能正确表示“当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
7、若w=1,x=2,y=3,z=4,则条件表达式w w: y y: z的值是______。 A)4B)3C)2D)1 8、对字符数组s赋值,不合法的是______。 A)chars[]="Beijing"; B)chars[20]={"beijing"}; C)chars[20];s="Beijing"; D)chars[20]={'B','e','i','j','i','n','g'}; 9、若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是______。 A)a,point,*&aB)&*a,&a,*point C)*&point,*point,&aD)&a,&*point,point 10、以下程序的运行结果是______。 voidmain() { intm=5; if(m++>5) printf(“%d\n”,m); else; printf(“%d\n”,m--); } A)4B)5C)6D)7 11、下面程序的运行结果是______。 #include voidmain() {inty=10; do{ y--; }while(--y); printf("%d\n",y--); } A)-1B)1C)8D)0 12、已有以下数组定义和func函数调用语句,则func函数原形的正确声明为_______。 voidmain() {inta[3][4]; …… func(a); …… } A)func(intarray[][6]);B)func(intarray[3][]); C)func(intarray[][4]);D)func(intarray[2][5]); 13、已知: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则以下能够正确表示数组元素a[1][2]的表达式是______。 A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2]) 14、下面程序的输出结果是______。 main() {inti,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<-3;j++) { if(j%2)continue; x++; } x++; } printf("x=%d\n",x); } A)x=4B)x=8C)x=6D)x=12 15、下面程序的输出是____。 voidmain() {intx=1,y=0,a=0,b=0; switch(x) { case1: switch(y) {case0: a++;break; case1: b++;break;} case2: a++;b++;break; } printf("a=%d,b=%d\n",a,b); } A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2 16、已知: inta[]={1,2,3,4},y,*p=a;则执行语句 y=(*++p)--; 之后,数组a各元素的值变为_____。 A)0,1,3,4B)1,1,3,4C)1,2,2,4D)1,2,3,3 17、给出以下定义: charx[]="abcdefg"; chary[]={'a','b','c','d','e','f','g'}; 则正确的叙述为_____。 A)数组X和数组Y等价B)数组x和数组Y的长度相同 C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度 18已知函数的调用形式: fread(buffer,size,count,fp);其中buffer代表的是____ A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项 19以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____ main() {int*p,*q,a,b; p=&a; printf("inputa: "); scanf("%d",*p); } A)*p表示的是变量p的地址 B)*p表示的是变量a的值,不是变量a的地址 C)*p表示的是指针变量p的值 D)*p只能用来说明p是一个指针变量 20若有说明: char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则表达式*language[1]>*language[3]比较的是____ A)字符F和字符PB)字符串BAS1C和字符串JAVA C)字符B和字符JD)字符串FORTRAN和字符串PASCAL 二、填空题(每空2分,共30分) 1、若有定义: inte=1,f=4,g=2;floatm=10.5n=4.0k;则执行赋值表达式 k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_____。 2、下面程序的输出是_______。 main() {intx=3,y=2,z=0; if(x=y+z)printf("**"); elseprintf("##"); } 3、假设已有定义doubles,d;intk,n;。 有以下程序段: s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("%f\n",s); 填空完成下述程序,使之与上述程序的功能完全相同。 s=0.0; ①______; k=0; do{s=s+d; ②______; d=1.0/(k*(k+1)); }while(③______); printf("%f\n",s); 4、下面程序段的运行结果是______。 inti=1;s=3; do{s+=i++; if(s%7==0)continue; else++i; }while(s<15); printf("%d",i); 5、设定义语句“staticinta[3][4]={{1},{2},{3}};”则a[1][1]值为①____,a[2][1]的值为②____。 6、下面的函数是一个求阶乘的递归调用函数。 facto(intn) {if(n==1)①______________; elsereturn(②_____________); } 7、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。 例如,输入字符串: abc123edf456gh,执行程序后输出: 123456。 请填空。 #include voidmain() {chars[80],d[80]; inti,j; gets(s); for(i=j=0;s[i]! =‘\0’;i++) if() {d[j]=s[i]; j++;} d[j]=‘\0’; puts(d); } 8、下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。 voidinvent(char*str,intn) {chart; t=*str; *str=*(str+n-1); *(str+n-1)=t; if(n>2)invent(____________,n-2); } 9下面程序的功能是显示具有n个元素的数组s中的最大元素。 #defineN20 main() {inti,a[N]; for(i=0;i scanf("%d",&a[i]); printf("%d\n",①______________); } intfmax(ints[],intn) {intk,p; for(p=0,k=p;p if(s[p]>s[k])②_____________; return(k); } 10下面程序通过指向整型的指针将数组a[3][4]的内容按3行×4列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。 #include voidmain() {inti,j; inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a; for(i=0;i<3;i++) {for(j=0;j<4;j++) printf("%4d",____________); } } 三、程序编写题(30分,见答题纸) 答题纸 一、选择题(40分) 题号 1 2 3 4 5 6 7 8 9 10 答案 题号 11 12 13 14 15 16 17 18 19 20 答案 二、填空题(30分) 1. 2. 3.①②③ 4. 5.①② 6.①② 7. 8. 9.①② 10. 三、程序编写题(共30分) 1、求这样一个三位数,该三位数等于其每位数字的阶乘之和,即: abc=a! +b! +c! 。 编写函数intfac(intn),它的功能是求出n的阶乘,在主函数中调用该函数完成题目。 (15分) 2、编写函数voidfun(intx,int*pp,int*n)。 它的功能是: 求出整数x的偶数因子,并按照从小到大的顺序放在pp所指的整数数组aa[1000]中,这些因子的个数通过形参n返回。 在主函数中输入x,调用子函数fun,输出x的偶数因子和偶数因子个数。 (假如x为30,则有因子: 1,2,3,5,6,10,15,30,其中有4个数为偶数因子,它们是2,6,10,30)(15分) 输入范例: pleaseenteranintegernumber: 输出范例: Thefactorsareasfollowing: Thenumberoffactorsis: 2010-2011学年第二学期期末 《C语言程序设计》(A卷)标准答案和评分标准 一、选择题(每题2分,共40分) CBCBCCDCDCDCAAABCCBC 二、填空题(每空2分,共30分) 1.13.7 2.** 3.①d=1.0②k++③k<=n 4.7 5.①0②0 6.①return1②n*facto(n-1) 7.s[i]>=’0’&&s[i]<=’9’ 8.str+1 9.①a[fmax(a,N)]②k=p 10.*(p+4*i+j) 四、编程序题(共30分)(格式举例) 1、 #include voidmain() { inta[5],i,j,k; intf(intm); for(i=100;i<1000;i++) { for(j=0,k=1000;k>=10;j++) { a[j]=(i%k)/(k/10); k/=10; } if(f(a[0])+f(a[1])+f(a[2])==i) printf("Thenumberis: %d",i); } } intf(intm) { inti=0,t=1; while(++i<=m)t*=i; return(t); } 或者 #include intfac(int); voidmain() { inti,j,k,n=0,x[50]; for(i=1;i<10;i++) {for(j=0;j<10;j++) for(k=1;k<10;k++) {x[n]=i*100+j*10+k; if(fac(i)+fac(j)+fac(k)==x[n])n++; elsex[n]=0;} } if(n>0)for(i=0;i %d\n",x[i]); elseprintf("Thereisnosuchanumber! \n"); } intfac(intn) {if(n<1)return1; elsereturnn*fac(n-1); } 2、 #include voidfun(intx,intpp[],int*n) { inti,j=0; for(i=2;i<=x;i=i+2) {if(x%i==0)pp[j++]=i; *n=j; } } voidmain() { intx,aa[1000],n,i; printf("\npleaseenteranintegernumber: \n: "); scanf("%d",&x); fun(x,aa,&n); for(i=0;i printf("Thefactoris: %d\n",aa[i]); printf("\n"); printf("Thenumberoffactoris: %d",n); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20学年第二学期c语言期末考题及解答 20 学年 第二 学期 语言 期末 考题 解答