您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 2006年秋季《C语言程序设计》期末考试题A卷答案答案--修改后
2005—2006学年第二学期《程序设计语言(C)》试卷参考答案和评分标准专业班级姓名学号开课系室软件工程系考试日期2006年7月3日题号一二三总分得分阅卷人A卷1程序设计语言(C)试卷(A卷)答题卡说明:1.选择题和判断题必须填在答题卡上才有效,综述题写在指定位置。2.本试卷连同封面共13页,不得拆开。一、单项选择题(正确的答案涂黑或画圈,每题1分,共20分)1ACD11ACD2ACD12ACD3ABD13ABD4ACD14ABC5ACD15BCD6ACD16ACD7ABD17BCD8ACD18ACD9ABD19ACD10ABC20ABC二、读程序填空题(在空格处填写正确答案,每空2分,共20分)⑴q—或q=q-1或--q⑹x=0或x0⑵fac/i或1.0/i⑺return(-x)或return-x⑶s⑻n/2或(n+1)/2⑷!feof(fp)或ch!=EOF⑼1⑸fp⑽1得分得分2一、单项选择题(每题1分,20分)1.现有程序完成a、b两个值的交换,空白处正确的答案应该是_______。main(){inta,b,t;t=b;b=a;________;}A.a=bB.a=tC.b=tD.t=a2.如果程序中用到标准库函数log(),那么该程序应含下面哪条语句_________。A.#include”stdio.h”B.#include”math.h“C.#include”string.h”D.#include”stdlib.h”3.intx=6;则下方程序段运行结果是_________。switch(x){case1:printf(“apple“);break;case2:printf(“hello“);break;case3:printf(“world“);default:printf(“thankyou“);}A.appleB.helloC.thankyouD.worldthankyou4.在C语言中,不合法的int型常量是_________。A.32767B.0578C.0XAACD.32768L5.设x,y,z和k都是int型变量,则执行表达式:x=(y=2,z=15,k=30)后,x的值为________。A.52B.30C.15D.26.设x为int型变量,则执行以下语句后,x的值为________。x=10;x+=x-=x-x;A.30B.20C.10D.407.在下列运算符中,优先级最高的运算符是()A.==B.!=C.%D.||8.设x,y,t均为int型变量,则执行语句:x=y=3;t=++x||--y;后y的值为________。A.4B.3C.2D.19.语句printf(“%%%%\n”);的输出为________。A.####B.%%%%\nC.%%D.%%%%310.#includestdio.hmain(){chara1,a2,a3,a4,a5,a6;scanf(“%c%c%c%c”,&a1,&a2,&a3,&a4);a5=getchar();a6=getchar();putchar(a1);putchar(a2);printf(“%c%c\n”,a5,a6);}如:123回车45678回车结果是_________。A.1267B.1256C.1278D.124511.若有intx,y,z;scanf(%d%d%d,&x,&y,&z);则运行时输入方式错误的是________。A.456B.4,5,6C.4D.4556612.下面程序段执行结果是________。inty=25;while(y--);printf(“y=%d”,y);A.0B.-1C.1D.无限循环13.不正确的字符串赋值或赋初值方式是________。A.char*str;str=string;B.charstr[7]={'s','t','r','i','n','g',‘\0’}C.charstr1[10];str1=string;D.charstr1[]=string,str2[]=12345678;14.对于inta[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;则程序段执行后*(p+3)的值为_________。A.5B.3C.4D.615.若有说明语句:inta[]={1,2,3,4,5,6,7,8},*p=a;且0≤i≤7,则________是对数组元素的错误表示。A.p+iB.a[p-a]C.*(a+i)D.p[i]416.以下选项中不能正确把c1定义成结构体变量的是A.structcolorB.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;};};structcolorc1;C.structcolorD.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;17.对于inta[3][2]={1,2,3};元素a[1][1]的值为_________。A.0B.1C.3D.不能确定18.设x和y均为int型变量,则执行下面的循环后,y的值为______。for(y=1,x=1;y=20;y++){if(x==8)break;if(x%2==1){x+=5;continue;}x-=3;}A.2B.4C.6D.819.假定所有变量均已正确定义,则下列程序段运行后x的值是_________。a=0;b=0;c=0;x=35;if(!a)x=x-1;elseif(b)x=x+1;if(c)x=3;elsex=4;5A.34B.4C.35D.320.现有一个文本文件,想以追加方式打开,下列方式正确的是__________。if((fp=fopen(fname.dat,____))==NULL){printf(cannotopenfile!\n,num);exit(0);}A.wB.abC.bD.a二、读程序填空(每空2分,共20分)1.判断一个字符串是否回文(顺读和逆读相同,如字符串“abcba”就是回文)/*该函数返回值为1代表是回文,返回0代表不是回文*/intverse(char*p){char*q=p;while(*q!=’\0)q++;⑴;while(pq)if(*p++!=*q--)return0;return1;}2.以下函数的功能是计算s=1+21+31+……+n1的值,请填空。doublefun(intn){doubles=0.0,fac=1.0;inti;for(i=1;i=n;i++)s=s+⑵;return⑶;}3.下面的程序用来统计文本文件fname.dat中的字符数,将程序补充完整。#includestdio.hvoidmain(){FILE*fp;longnum=0;charch;if((fp=fopen(fname.dat,r))==NULL){printf(cannotopenfile!\n,num);exit(0);}ch=fgetc(fp);while(⑷)6{num++;ch=fgetc(fp);}printf(num=%d\n,num);fclose(⑸);}4.设fun()是用户自定义函数,其功能是求一个数的绝对值,请填空。#includestdio.h#includemath.hintfun(intx){if⑹;return(x)else⑺;}main(){inta;scanf(%d,&a);printf(绝对值是%d\n,fun(a));}5.将数组a中的n个整数按相反顺序存放。voidinv(intx[],intn){intt,k,j;for(k=0;k⑻;k++){t=x[n-1-k];x[n-1-k]=x[k];x[k]=t;}}voidmain(){inti,a[6]={3,7,9,11,0,6};inv(a,6);for(i=0;i6;i++)printf(%d,,a[i]);printf(\n);}6.下列程序段运行后输出的结果是a=⑼,b=⑽。intx=0,a=0,b=0;7switch(x){case0:b++;case1:a++;break;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);三、编程题(60分,在下面的空白处编写程序)1、编程计算下面函数的值,其中x为实数,由键盘输入。(12分)-1x≤-5y=(x-1)2-5x5x1x≥5参考答案:#includestdio.hmain(){floatx,y;printf(请输入实数x:);scanf(%f,&x);if(x=-5)y=-1;elseif(x5)y=(x-1)*(x-1);elsey=1/x;printf(y=%f,y);}[评分标准]:头文件、程序框架占2分;读入x值占1分;每个分支语句各占3分,共9分。得分82.设有一组数{12,32,23,45,44,65,67,9,100,80},编写一个完整的程序实现从小到大排序。(12分)参考答案:#includestdio.hmain(){inta[10]={12,32,23,45,44,65,67,9,100,80};inti,j,t;for(i=0;i9;i++)for(j=i+1;j10;j++)if(a[i]a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i10;i++)printf(%4d,a[i]);}[评分标准]:头文件、程序框架占2分;数组a定义及初始化占2分;外层循环占2分;内层循环占2分;元素交换部分占4分。93.编程将字符串s2的内容连接到字符串s1后,如s1中存放“hello”,s2中存放“world”,连接后s1的内容为“helloworld”(不能使用strcat函数,字符串结束标志为’\0’)。(10分)参考答案:#includestring.h#includestdio.hmain(){charstr1[80],str2[80];inti=0,j=0;printf(输入两个字符串:);gets(str1);gets(str2);i=strlen(str1);while(str1[i++]=str2[j++]!='\0');printf(连接之后的字符串为:%s,str1);}[评分标准]:头文件、程序框架占2分;字符数组str1、str2初始化占3分;求出str1长度占2分;str2内容赋值到str1中占3分。104.编一个名为average的函数,其功能是求形参数组的平均值。调用average的主函数部分源代码如下。(10分)floataverage(floatscore[],intn){inti;floarave=0;for(i=0;in;i++)ave+=score[i];returnave/n;}main(){floatscore[10],aver;inti;printf(input10scores:\n);for(i=0;i10;i++)scanf(%f,&score[i]);printf(\n);aver=average(score,10);printf(averagescoreis%5.2f,aver);}[评分标准]:函数头正确定义占4分;ave初始化及返回值占2分;循环求累加和占4分。115.编写一个函数fun,其功能是:将一个字符串str1(元素起始下标为0)中的所有偶数位上的小写字母复制成为一个新字符串str2。如str1串为“abCDefgh123”,则新串str2为“aeg”。主函数部分源代码如下。(10分)#includestdio.h#includestring.hfun(charstr1[],charstr2[]){/*请填写函数主体内容*/inti=0,j=0;while(str1[i]!='\0'){if(str1[i]
本文标题:2006年秋季《C语言程序设计》期末考试题A卷答案答案--修改后
链接地址:https://www.777doc.com/doc-3077210 .html