收藏 分销(赏)

秋季C语言程序设计期末考试题A卷答案答案.doc

上传人:w****g 文档编号:9266286 上传时间:2025-03-19 格式:DOC 页数:27 大小:346KB 下载积分:10 金币
下载 相关 举报
秋季C语言程序设计期末考试题A卷答案答案.doc_第1页
第1页 / 共27页
秋季C语言程序设计期末考试题A卷答案答案.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 A卷 — 第二学期 《程序设计语言(C)》试卷 参考答案和评分标准 专业班级 姓 名 学 号 开课系室 软件工程系 考试日期 7月3日 题 号 一 二 三 总分 得 分 阅卷人 程序设计语言(C)试卷( A卷) 答题卡 说明: 1.选择题和判断题必须填在答题卡上才有效, 综述题写在指定位置。 得分 2.本试卷连同封面共13页, 不得拆开。 一、 单项选择题( 正确的答案涂黑或画圈,每题1分, 共20分) 1 A g C D 11 A g C D 2 A g C D 12 A g C D 3 A B g D 13 A B g D 4 A g C D 14 A B C g 5 A g C D 15 g B C D 6 A g C D 16 A g C D 7 A B g D 17 g B C D 8 A g C D 18 A g C D 9 A B g D 19 A g C D 10 A B C g 20 A B C g 得分 二、 读程序填空题( 在空格处填写正确答案, 每空2分, 共20分) ⑴ q—或q=q-1或--q ⑹ x>=0或x>0 ⑵ fac/i或1.0/i ⑺ return ( -x) 或return -x ⑶ s ⑻ n/2或(n+1)/2 ⑷ !feof(fp)或ch!=EOF ⑼ 1 ⑸ fp ⑽ 1 一、 单项选择题( 每题1分, 20分) 1. 现有程序完成a、 b两个值的交换, 空白处正确的答案应该是 _______。 main() {int a,b,t; t=b ; b=a ; ________ ; } A. a=b B. a=t C. b=t D. t=a 2. 如果程序中用到标准库函数log(), 那么该程序应含下面哪条语句_________。 A. #include ”stdio.h” B. #include ”math.h ” C. #include ”string.h” D. #include ”stdlib.h” 3. int x=6;则下方程序段运行结果是_________。 switch(x) { case 1: printf(”apple”);break; case 2: printf(”hello”);break; case 3: printf(”world ”); default: printf(”thank you”); } A. apple B. hello C. thank you D. world thank you 4. 在C语言中, 不合法的int型常量是_________。 A. 32767 B. 0578 C. 0XAAC D. 32768L 5. 设x, y, z和k都是int型变量, 则执行表示式: x=(y=2, z=15, k=30)后, x的值为________。 A. 52 B. 30 C. 15 D. 2 6. 设x为int型变量, 则执行以下语句后, x的值为________。 x=10; x + = x - = x - x; A. 30 B. 20 C. 10 D. 40 7. 在下列运算符中, 优先级最高的运算符是( ) A.= = B.!= C.% D.|| 8. 设x, y, t均为int型变量, 则执行语句: x=y=3; t=++x||--y; 后y的值为________。 A. 4 B. 3 C. 2 D. 1 9. 语句 printf(”%%%%\n”); 的输出为________。 A. #### B. %%%%\n C. %% D. %%%% 10. #include<stdio.h> main() { char a1,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. 1267 B. 1256 C.1278 D. 1245 11.若有int x, y, z ; scanf("%d%d%d",&x,&y,&z); 则运行时输入方式错误的是________。 A.4 5 6 B. 4, 5, 6 C. 4 D. 4 5 5 6 6 12. 下面程序段执行结果是________。 int y=25; while(y--); printf(”y=%d”,y); A. 0 B. -1 C. 1 D. 无限循环 13. 不正确的字符串赋值或赋初值方式是 ________。 A. char *str; str= "string"; B. char str[7]={ 's', 't', 'r', 'i' , 'n', 'g', ‘\0’} C. char str1[10]; str1= "string"; D. char str1[]= "string", str2[]= "12345678"; 14. 对于int a[ ]={1,2,3,4,5,6}, *p; p=a; *(p+3)+ = 2; 则程序段执行后*(p+3)的值为_________。 A. 5 B. 3 C . 4 D. 6 15. 若有说明语句: int a[ ]= {1,2,3,4,5,6,7,8}, *p=a ; 且 0≤i≤7, 则________是对数组元素的错误表示。 A. p + i B.a[p-a] C. *(a + i) D.p[i] 16.以下选项中不能正确把c1定义成结构体变量的是 A. struct color B. struct color cl { int red; { int red; int green; int green; int blue; int blue; }; }; struct color c1; C. struct color D. struct { int red; { int red; int green; int green; int blue; int blue; } cl; } cl ; 17.对于int a[3][2] = {1, 2, 3}; 元素a[1][1]的值为_________。 A.0 B. 1 C. 3 D. 不能确定 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.2 B.4 C.6 D.8 19. 假定所有变量均已正确定义, 则下列程序段运行后x的值是_________。 a=0;b=0;c=0; x=35; if(!a) x=x-1; else if(b) x=x+1; if(c) x=3; else x=4; A.34 B.4 C.35 D.3 20. 现有一个文本文件, 想以追加方式打开, 下列方式正确的是__________。 if((fp=fopen("fname.dat","____"))==NULL) {printf("can not open file! \n",num); exit(0);} A. w B.ab C.b D.a 二、 读程序填空( 每空2分, 共20分) 1.判断一个字符串是否回文( 顺读和逆读相同,如字符串”abcba”就是回文) /* 该函数返回值为1代表是回文, 返回0代表不是回文 */ int verse(char *p) { char *q=p; while(*q!=’\0) q++; ⑴ ; while(p<q) if(*p++!=*q--) return 0; return 1; } 2.以下函数的功能是计算s=1+++……+的值, 请填空。 double fun(int n) { double s=0.0,fac=1.0; int i; for(i=1;i<=n;i++) s=s+ ⑵ ; return ⑶ ; } 3.下面的程序用来统计文本文件fname.dat中的字符数, 将程序补充完整。 #include "stdio.h" void main( ) { FILE *fp; long num=0; char ch; if((fp=fopen("fname.dat","r"))==NULL) {printf("can not open file! \n",num); exit(0);} ch=fgetc(fp); while( ⑷ ) { num++; ch=fgetc(fp) ; } printf("num=%d\n",num); fclose( ⑸ ); } 4. 设fun()是用户自定义函数, 其功能是求一个数的绝对值,请填空。 #include <stdio.h> #include "math.h" int fun(int x) { if ⑹ ; return(x) else ⑺ ; } main() { int a; scanf("%d",&a); printf("绝对值是%d\n", fun(a)) ; } 5.将数组a中的n个整数按相反顺序存放。 void inv(int x[ ], int n) { int t,k,j; for(k=0;k< ⑻ ;k++) { t=x[n-1-k]; x[n-1-k]=x[k]; x[k]=t; } } void main() { int i,a[6]={3,7,9,11,0,6}; inv(a,6); for(i=0;i<6;i++) printf("%d,",a[i]); printf("\n"); } 6.下列程序段运行后输出的结果是 a= ⑼ , b= ⑽ 。 int x=0,a=0,b=0; switch(x) {case 0: b++; case 1: a++;break; case 2: a++;b++; } printf(”a=%d,b=%d\n”,a,b); 得分 三、 编程题( 60分, 在下面的空白处编写程序) 1、 编程计算下面函数的值, 其中x为实数, 由键盘输入。( 12分) -1 x≤-5 y= ( x-1)2 -5<x<5 x≥5 参考答案: #include <stdio.h> main() { float x,y; printf("请输入实数x:"); scanf("%f",&x); if(x<=-5) y=-1; else if(x<5) y=(x-1)*(x-1); else y=1/x; printf("y=%f",y); } [评分标准]: 头文件、 程序框架占2分; 读入x值占1分; 每个分支语句各占3分, 共9分。 2.设有一组数{12,32,23,45,44,65,67,9,100,80}, 编写一个完整的程序实现从小到大排序。 ( 12分) 参考答案: #include <stdio.h> main() { int a[10]={12,32,23,45,44,65,67,9,100,80}; int i,j,t; for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i<10;i++) printf("%4d",a[i]); } [评分标准]: 头文件、 程序框架占2分; 数组a定义及初始化占2分; 外层循环占2分; 内层循环占2分; 元素交换部分占4分。 3.编程将字符串s2的内容连接到字符串s1后, 如s1中存放”hello”,s2中存放”world”,连接后s1的内容为”helloworld”( 不能使用strcat函数, 字符串结束标志为’\0’) 。 ( 10分) 参考答案: #include <string.h> #include <stdio.h> main() { char str1[80],str2[80]; int i=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分。 4.编一个名为average的函数, 其功能是求形参数组的平均值。调用average的主函数部分源代码如下。( 10分) float average(float score[],int n) { int i; floar ave=0; for(i=0;i<n;i++) ave+=score[i]; return ave/n; } main()   {float score[10], aver;    int i;    printf("input 10 scores: \n");     for(i=0; i<10; i++)   scanf("%f", &score[i]);    printf("\n");    aver=average(score,10);    printf("average score is %5.2f", aver);   } [评分标准]: 函数头正确定义占4分; ave初始化及返回值 占2分; 循环求累加和占4分。 5. 编写一个函数fun, 其功能是: 将一个字符串str1( 元素起始下标为0) 中的所有偶数位上的小写字母复制成为一个新字符串str2。如str1串为”abCDefgh123”, 则新串str2为”aeg”。主函数部分源代码如下。( 10分) #include<stdio.h> #include<string.h> fun(char str1[], char str2[]) { /*请填写函数主体内容*/ int i=0,j=0; while(str1[i]!='\0') { if(str1[i]>='a'&&str1[i]<='z') str2[j++]=str1[i]; i+=2; } str2[j]='\0'; } main() { char str1[20],str2[10]; printf("input a string\n"); gets(str1); fun(str1,str2); puts(str2); } [评分标准]: 变量i、 j定义及初始化部分占1分; str1结束条件判断占2分; 偶数位及小写字母判断占4分; str2赋字符串结束标记占1分; str2中符合条件的字符赋值到str1中占2分。 6.编写一个函数, 函数的功能是: 为一个偶数寻找两个素数, 这两个素数之和等于该偶数, 求满足这样要求的素数的组数。( 6分) /* isp是求素数的函数, 返回1代表m是素数, 返回0代表m不是素数 */ isp(int m) {int i; for(i=2;i<m;i++) if(m%i==0) break; if(i==m) return 1; else return 0; } fun(int n,int count) /* n是偶数, count是符合条件的组数 */ { int i; count=0 for(i=2;i<n/2;i++) if(isp(i)&&isp(n-i)) count++; } [评分标准]: count初始化占1分; 循环控制占2分, 函数调用判断是否为素数及两个素数的和为n部分占2分; 符合条件的数统计占1分。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服