1C语言期末考试A.docx
- 文档编号:10755096
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:20
- 大小:41.53KB
1C语言期末考试A.docx
《1C语言期末考试A.docx》由会员分享,可在线阅读,更多相关《1C语言期末考试A.docx(20页珍藏版)》请在冰点文库上搜索。
1C语言期末考试A
第1页共10页
扬州大学试题纸
(2013-2014学年第1学期)
全校非计算机专业统考课程C及C++语言程序设计(闭)卷
注意:
1.请用答题纸答题,将答案填于相应的题号内。
否则不给分。
2.请认真填写并仔细核对答题纸上的学院、系科、班级、学号及姓名等。
3.请将试卷和答题纸分开上交。
一、单选题(每小题2分,共30分)
1.以下叙述中,正确的是
(1)。
A.main函数必须放在程序的开始
B.main函数必须放在程序的最后
C.在一个函数体内可以定义另外一个函数
D.程序的执行总是从main函数开始,一般回到main函数结束
2.下列声明变量的语句中,错误的是
(2)。
A.int_5;B.doubleint_C.charForD.floatUS$
3.若有声明“charc='\72';”,则变量c(3)。
A.包含1个字符B.包含2个字符
C.包含3个字符D.声明明不合法
4.判断char型变量c1是否为小写字母的正确表达式为(4)。
A.'a'<=c1<='z'B.(c1>=a)&&(c1<=z)
C.('a'>=c1)||('z'<=c1)D.(c1>='a')&&(c1<='z')
5.下列语句中,能正确进行字符串赋值操作的语句是(5)。
A.chars1[5][]={"ABCDE"};B.chars2[]={'A','B','C','D','E'};
C.chars3[][10]={"ABCDE"};D.chars4[5]={'A','B','C','D','E'};
6.以下关于break和continue语句的叙述中,正确的是(6)。
A.break和continue语句都可以出现在switch语句中
B.break和continue语句都可以出现在循环体中
C.在循环语句和switch语句之外允许出现break和continue语句
D.执行循环语句中的break或continue语句都将立即终止循环
7.设有声明“inta=1,b=2,c=3,d=4,x;”,则执行下列程序段后,x的值为(7)。
if(a
if(c elseif(a x=2; elsex=3; elsex=6; A.1B.2C.3D.6 裁剪框 学院___________系____________班级_____________学号____________姓名_____________ ------------------------------------------------装---------------------------------------订-------------------------------------------线----------------------------------------------- 8.sizeof(float)是(8)。 A.一种函数调用B.一个不合法的表达式 C.一个整型表达式D.一个浮点表达式 9.下列数组声明中,错误的是(9)。 A.inta[][3]={1}; B.inta[2][3]={{1,2},{3,4},{5,6}}; C.inta[][3]={{1,2,3},{4,5,6}}; D.inta[2][3]={1,2,3,4,5,6}; 10.若有声明: inta[10]={1,2,3,4,5,6,7,8},*p=&a[3];,则p[0]的值是(10)。 A.1B.2C.3D.4 11.下列程序段运行时的输出结果是(11)。 chars[]="China"; printf("%s",s+2); A.ChinaB.C C.字符'i'的地址D.ina 12.若有程序: #defineSUB(x,y)x*y main() { inta=1,b=2; a=SUB(a+1,b+1); printf(“%d”,a); } 则执行该程序后,a的值为(12)。 A.4B.5C.6D.7 13.下列不是死循环的是(13)。 A.inti=100;while (1){i=i%100+1;if(i>100)break;} B.for(;;); C.intk=0;do{++k;}while(k>=0); D.ints=36;while(s);--s; 14.C语言规定,函数返回值的类型是由(14)。 A.return语句中的表达式类型所决定 B.调用该函数时的主调函数类型所决定 C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数类型所决定 15.若有结构定义及结构变量声明如下: structpupil {charname[20]; intage; charsex; }pup[5],*p; p=pup; 则下列scanf函数调用语句中,对结构变量成员引用错误的是(15)。 A.scanf(“%s”,pup[0].name);B.scanf(“%d”,pup[0].age); C.scnaf(“%c”,&(p->sex));D.scanf(“%d”,&(*p).age); 第2页共10页 裁剪框 第3页共10页 二、填空题(每空1分,共20分) 1.除goto语句外,C语言中的转移语句还有return, (1), (2)。 2.设有变量声明如下: inta=9;floaty=3.5; 则表达式a%5和7/4+y的值分别为(3)、(4)。 3.在C语言中,分别用(5)和(6)表示逻辑“真”值和逻辑“假”值。 4.把数学表达式 改写成C语言表达式为(7),计算这类表达式时通常要包含头文件(8)。 5.在C语言中,根据生存期的不同,可将变量分为静态存储类别和动态存储类别。 具体有extern、register、(9)和(10)。 6.C语言中有! 、&&、||三个逻辑运算符,其中优先级高于算术运算符的是(11),三个运算符中,优先级最低的是(12)。 7.设有声明“intx,a=5,b=8;”,则执行语句“x=7;x+=x-=x+x;”后,x的值为 (13)。 而程序段“a+=b;b=a-b;a-=b;”的功能是(14)。 8.若有声明语句如下: inta[3][4]={{1,2,3},{4,5},{6,7,8}}; 则执行该语句后,a[1][2]=(15),a[2][1]=(16)。 9.若有声明“chars[10]="China";”,则表达式sizeof(s)的值为(17);表达式strlen(s)的值为(18)。 10.在C语言源程序中,以“#”开头的命令被称为(19)命令,它们是在 (20)被处理的。 裁剪框 第3页共8页 第4页共10页 三、阅读程序写出结果(每小题4分,共20分) 1.运行以下程序,若输入数据为: 2014↙,则输出结果为。 注: 用↙表示回车。 main() {inta,t=0; scanf("%d",&a); while(a) {t=t*10+a%10; a/=10; } printf("%d",t); } 2.以下程序运行时的输出结果是。 #include voidmain() { inti=4; while(i>0) {switch(i%2) {case0: i--; case1: i--;break; } i--; } printf("%d",i); } 3.以下程序运行时的输出结果是。 #include voidfun(int*x,inty) { *x=*x+y; y=5; } voidmain(void) {inta[2]={1,2}; fun(&a[0],a[1]); printf("%3d%3d\n",a[0],a[1]); } 裁剪框 第4页 4.下列程序运行时的输出结果是。 #include voidmain() { chara[20]="2013",b[10]="14"; inti=0,j=0; while(a[i])i++; while(b[j]) a[i++]=b[j++]; a[i]='\0'; printf("%s",a+2); } 5.下列程序运行时,若输入数据为10,则输出结果是。 #include voidmain() { intb[16],x,k,r,i; printf("inputx: "); scanf("%d",&x); k=-1;/*变量k用作b数组的下标*/ while(x! =0) { r=x%2; b[++k]=r; x/=2; } for(i=k;i>=0;i--) printf("%d",b[i]); } 四、完善程序题(每空1分,共30分) 1.下列程序的功能是输出100以内的个位数为6且能被6整除的所有整数。 #include voidmain() {inti,j; for(i=0; (1);i++) {j=i*10+6; if( (2))continue; printf("%d",j); } } 第5页共10页 裁剪框 2.以下程序中,函数fun的功能是实现N行N列方阵的转置,即实现a[i][j]与a[j][i]的交换。 算法提示: 以主对角线为界,上三角区域中的元素与下三角区域中的对应元素交换。 #include"stdio.h" #defineN3 voidfun(inta[][N]) {inti,j,t; for(i=0;i for(j=0;j(3);j++) { (4); a[i][j]=a[j][i]; (5); } } voidmain() {intb[N][N],i,j; for(i=0;i for(j=0;j scanf("%d",(6)); fun(b); for(i=0;i {for(j=0;j printf("%4d",b[i][j]); printf("\n"); } } 3.下列程序中,函数gcd的功能是用欧几里德算法求两个正整数的最大公约数。 #include"stdio.h" intgcd(intm,intn) { intr; while(n! =0) { r=(7); m=n; n=(8); } return(9); } voidmain() { inta,b,t; printf("Pleaseinputaandb: "); scanf("%d%d",&a,&b); if(a printf("result=%d\n",gcd((10))); } 第6页共10页 裁剪框 4.以下程序从键盘输入一个较大的整数n(n>=6),然后验证6到n之间的所有偶数都可以分解为两个素数之和。 #include"stdio.h" #include"math.h" intprime(intm) { intg,h=sqrt(m); for((11);g<=h;g++) if(m%g==0)return0; (12); } voidmain() {intk,j,n,limit; do {printf("Inputanumber>=6: "); scanf("%d",&limit); }while(limit<6); for(n=6;n<=limit;n+=2) for(k=3;k<=n/2;k+=2) if(prime(k)&&prime(j=(13))) {printf("%d=%d+%d\n",n,k,j); break; } } 5.用迭代法求 的近似值。 迭代公式为: 。 要求前后两次求出值的差的绝对值小于10-6时迭代中止。 #include #include floatsquare(floata) {floatx0,x1; x0=a/2; x1=0.5*(x0+a/x0); while(fabs((14))>=1.0e-6) {x0=x1; x1=(15); } returnx1; } voidmain() { floata; scanf("%f",&a); if(a<0)printf("\nxisanegative\n"); elseprintf("sqrt(%.1f)=%.3f\n",a,(16)); } 第7页共10页 裁剪框 第8页共10页 6.下列程序是利用插入排序法将n个数从大到小进行排序,插入排序的算法思想如下: 从一个空表开始,将待排序的数一个接一个插入到已排好序的有序表中(空表视为有序),从而得到一个新的、记录数增1的有序表。 例如: 当n=7时,待排序的数及每一趟有序表的变化情况如下: 趟数 有序表 剩余待排序数 初始状态 空 49 38 65 97 76 13 27 第1趟 49 38 65 97 76 13 27 第2趟 49 38 65 97 76 13 27 第3趟 65 49 38 97 76 13 27 第4趟 97 65 49 38 76 13 27 第5趟 97 76 65 49 38 13 27 第6趟 97 76 65 49 38 13 27 第7趟 97 76 65 49 38 27 13 空 请完善下列程序。 #include voidsort(inta[],intn) { inti,j,t; for(i=1;i<=n;i++) {t=a[i]; j=(17); while((j>=0)&&(t>a[j])) {(18); j--; } (19); } } voidmain() { inta[10],i; printf("\nEnter10number: "); for(i=0;i<=9;i++) scanf("%d",&a[i]); (20); for(i=0;i<10;i++) printf("%5d",a[i]); } 裁剪框 7.下列程序中,函数seln的功能是按下列要求产生随机数: (1)产生的随机数在[x,y]内; (2)产生的随机数的个数为n个; (3)这n个随机整数互不相同且不同于a指向的长度为m的数组中的任何一个; (4)把产生的符合条件的随机整数依次写入b指向的数组中。 请完善程序。 #include #include #defineN10 voidseln(int*a,intm,int*b,intn,intx,inty) { inti,j,k,t; srand(time(NULL));/*srand为随机数发生器的初始化函数*/ i=0; while(i {t=(rand()%(y-x))+(21); /*rand为随机数发生器,产生一个[x,y]内的随机整数*/ for(j=0;j if(t==a[j])break; if((22)) { for(k=0;k if(t==b[k])break; if(k==i) (23)=t; } } } main() { inta[6]={1,11,21,5,15,25},b[20],i; seln((24),b,N,1,30); for(i=0;i printf("(25)",b[i]); printf("\n"); } 第9页共10页 第10页共10页 8.下列程序中,函数fun的功能是: 统计str指向的一行以“.”结束的文本中单词的个数,并计算单词的平均长度(取整数),单词的个数存放于n所指向的变量中,函数返回单词的平均长度。 请完善程序。 #include #include intfun(charstr[],int*n) { inti,ave,flag=0,count; count=strlen(str)-1; for(i=0;str[i]! ='.';i++) if(str[i]=='') {(26); count--; } else if(flag==0) {(27); flag=1; } ave=(28); return(29); } voidmain() { charstr[80]="Mustpasstheexamination"; inti,n=0,aver; aver=fun((30)); printf("%d,%d\n",n,aver); getch(); } 裁剪框 一、单选题(根据题号依次填入,每小题2分,共30分。 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 二、填空题(每空1分,共20分) (1) (2)(3) (4)(5)(6) (7)(8)(9) (10)(11)(12) (13)(14)(15) (16)(17)(18) (19)(20) 三、阅读程序写出结果(每小题4分,共20分) 1.2. 3.4. 5. 四、完善程序题(每空1分,共30分) (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)(27) (28)(29)(30) 《C及C++语言程序设计》答题纸 学院___________班级_____________学号_____________姓名__________ 题目 一 二 三 四 总分 得分 合分人 阅卷人 复核人 核分人 《C及C++语言程序设计》 一、单选题(每小题2分,共30分) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 D D A D C B A C B D D A C D B 二、填空题(每空1分,共20分) (1)continue (2)break( (1) (2)可交换)(3)4 (4)4.5(5)1(6)0 (7)sqrt(x+y)/(a+b)(8)math.h(9)static (10)auto((9)(10)可交换)(11)! (12)|| (13)0(14)交换a,b的值(15)0 (16)7(17)10(18)5 (19)预处理(20)编译前 三、阅读程序写出结果(每小题4分,共20分) 1.41022.-1 3.3,24.1314 5.1010 四、完善程序题(每空1分,共30分) (1)i<10或i<=9 (2)j%6! =0或j%6(3)j (4)t=a[i][j](5)a[j][i]=t(6)&b[i][j] (7)m%n(8)r(9)m (10)a,b(11)g=2(12)return1 (13)n-k(14)x0-x1或x1-x0(15)0.5*(x0+a/x0) (16)square(a)(17)i-1(18)s[++i] (19)a[j+1]=t(20)sort(a,10)(21)x+1 (22)j==m(23)b[i++](24)a,6 (25)%5d(26)flag=0(27)(*n)++ (28)count/(*n)(29)ave(30)str,&n 答案
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末考试