2022年秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx
精选学习资料 - - - - - - - - - 卷2005 2006 学年其次学期程序设计语言 C试卷 参考答案和评分标准专业班级题号姓名软件工程系总分学号开课系室考试日期 2006年 7 月 3 日一二三得 分阅卷人名师归纳总结 - - - - - - -第 1 页,共 14 页精选学习资料 - - - - - - - - - 程序设计语言 C 试卷( A卷)答题卡说明: 1挑选题和判定题必需填在答题卡上才有效,综述题写在指定位置; 2本试卷连同封面共13 页,不得拆开;得分一、单项挑选题(正确的答案涂黑或画圈, 每题 1 分,共 20 分)D 1 A C D 11 A C 2 A C D 12 A C D 3 A B D 13 A B D 4 A C D 14 A B C D 5 A C D 15 B C 6 A C D 16 A C D 7 A B D 17 B C D 8 A C D 18 A C D 9 A B D 19 A C D 10 A B C 20 A B C 得分二、读程序填空题(在空格处填写正确答案,每空 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 .feoffp 或 ch.=EOF 1 fp 1 一、单项挑选题(每题 1 分, 20 分)1. 现有程序完成 a、b 两个值的交换,空白处正确的答案应当是 _ ;main int a,b,t;1 / 14 名师归纳总结 - - - - - - -第 2 页,共 14 页精选学习资料 - - - - - - - - - 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;就下方程序段运行结果是 _;switchx 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. 32768L5. 设 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 2 / 14 名师归纳总结 - - - - - - -第 3 页,共 14 页精选学习资料 - - - - - - - - - char a1,a2,a3,a4,a5,a6; scanf“%c%c%c%c” ,&a1,&a2,&a3,&a4; a5=getchar;a6=getchar; putchara1;putchara2; printf“ %c%cn” ,a5,a6; 如: 123 回车 45678回车结果是 _;D. 1245 A. 1267B. 1256 C.1278 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. 下面程序段执行结果是_;无限循环 ; 就程序段执行后*p+3 的值为int y=25; whiley-; printf“ y=%d” ,y ;A. 0 B. -1 C. 1 D. 13. 不正确的字符串赋值或赋初值方式是 _ ;A. char *str; str= "string";, 0B. char str7= 's', 't', 'r', 'i' , 'n', 'g'C. char str110; str1= "string"; D. char str1= "string", str2= "12345678"14. 对于int a =1,2,3,4,5,6, *p; p=a ; *p+3+ = 2_; 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.ap a C. *a + i D.pi 16. 以下选项中不能正确把 c1 定义成结构体变量的是A. struct color B. struct color cl 3 / 14 名师归纳总结 - - - - - - -第 4 页,共 14 页精选学习资料 - - - - - - - - - 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 a32 = 1, 2, 3; 元素 a11 的值为 _;A.0 B. 1 C. 3 D. 不能确定18. 设x和y均为 int 型变量,就执行下面的循环后,y的值为 _; fory=1,x=1;y<=20;y+ ifx=8 break ; ifx%2=1 x+=5 ;continue ; x-=3; A2 B4 C6 D8 19. 假定全部变量均已正确定义,就以下程序段运行后 a=0; b=0; c=0;x=35;if.ax=x-1;else ifb x=x+1 ;ifcx=3; else x=4;x 的值是 _;A34 B4C35 D3 20. 现有一个文本文件,想以追加方式打开,以下方式正确选项 _;4 / 14 名师归纳总结 - - - - - - -第 5 页,共 14 页精选学习资料 - - - - - - - - - iffp=fopen"fname.dat","_"=NULL printf"can not open file!n",num ;exit0;A. w B.ab C.b D.a 二、读程序填空(每空 2 分,共 20 分)1判定一个字符串是否回文(顺读和逆读相同 , 如字符串“abcba” 就是回文) /* 该函数返回值为 1 代表是回文,返回 0 代表不是回文 */int versechar *p char *q=p;while*q.=0 q+; whilep<q if*p+.=*q- return 0; return 1; 2以下函数的功能是运算s=1+1 + 21 + + 31 的值,请填空;ndouble funint n double s=0.0,fac=1.0; int i;fori=1;i<=n ; i+ s=s+ ;return ; 3下面的程序用来统计文本文件fname.dat中的字符数,将程序补充完整;#include "stdio.h" void main FILE *fp; long num=0 ;char ch ;iffp=fopen"fname.dat","r"=NULL ch=fgetcfpprintf"can not open file! n",num ;exit0; ;while num+; ch=fgetcfp ; ; printf"num=%dn",num; fclose5 / 14 名师归纳总结 - - - - - - -第 6 页,共 14 页精选学习资料 - - - - - - - - - 4. 设 fun 是用户自定义函数,其功能是求一个数的肯定值 , 请填空; #include <stdio.h> #include "math.h" int funint x if ; returnx else ; main int a;scanf"%d",&a; printf" 肯定值是 %dn", fun a ; 5. 将数组 a 中的 n 个整数按相反次序存放;void invint x , int n int t,k,j;fork=0 ;k< ;k+ t=xn-1-k; xn-1-k=xk;xk=t void main int i,a6=3,7,9,11,0,6; inva,6; fori=0; i<6 ;i+ printf"%d,",ai printf"n"; 6. 以下程序段运行后输出的结果是 a= ,b= ;int x=0,a=0,b=0;switchx case 0: b+;6 / 14 名师归纳总结 - - - - - - -第 7 页,共 14 页精选学习资料 - - - - - - - - - case 1: a+;break ;case 2: a+;b+;printf“ a=%d,b=%dn” ,a,b ;60 分,在下面的空白处编写程得分三、编程题(序)1、编程运算下面函数的值,其中x 为实数,由键盘输入;(12 分) - 1 x-5 y= x-12 -5<x<5 1 x x5参考答案:#include <stdio.h> main float x,y;x:"; printf"请输入实数scanf"%f",&x;ifx<=-5 y=-1;else ifx<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 , 编写一个完整的程序实现从小到大排序;7 / 14 名师归纳总结 - - - - - - -第 8 页,共 14 页精选学习资料 - - - - - - - - - (12 分)参考答案:#include <stdio.h> main int a10=12,32,23,45,44,65,67,9,100,80; int i,j,t fori=0; i<9 ; i+ forj=i+1; j<10 ;j+ ifai>aj t=ai; ai=aj; aj=t fori=0;i<10 ;i+ printf"%4d",ai; 评分标准 :头文件、程序框架占2 分;数组a 定义及初始化占2 分;外层循环占2 分;内层循环占 2 分;元素交换部分占4 分;hello ”,s2 中存放“world ” ,3. 编程将字符串s2 的内容连接到字符串s1 后,如 s1 中存放“8 / 14 名师归纳总结 - - - - - - -第 9 页,共 14 页精选学习资料 - - - - - - - - - 连 接 后s1的 内 容 为 “helloworld”( 不 能 使 用strcat函 数 , 字 符 串 结 束 标 志为0 );(10 分)参考答案:#include <string.h> #include <stdio.h> main char str180,str280; int i=0,j=0; printf" 输入两个字符串 :" ; getsstr1; getsstr2; i=strlenstr1; whilestr1i+=str2j+.='0'; printf" 连接之后的字符串 为:%s", str1 ; 评分标准 :头文件、程序框架占2 分;字符数组str1 、str2初始化占3 分;求出str1长度占 2 分; str2内容赋值到str1中占 3 分;9 / 14 名师归纳总结 - - - - - - -第 10 页,共 14 页精选学习资料 - - - - - - - - - 4. 编一个名为average 的函数,其功能是求形参数组的平均值;调用average 的主函数部分源代码如下;(10 分)float averagefloat score,int n int i; floar ave=0; fori=0;i<n ;i+ ave+=scorei; return ave/n; main float score10, aver ;int i;printf"input 10 scores:n" ; fori0;i<10 ; i+ scanf"%f", &score i ;printf"n";aver averagescore,10;printf"average score is %5.2f",aver ; 评分标准 :函数头正确定义占4 分; ave 初始化及返回值占 2 分;循环求累加和占4 分;10 / 14 名师归纳总结 - - - - - - -第 11 页,共 14 页精选学习资料 - - - - - - - - - 5. 编写一个函数fun ,其功能是:将一个字符串str1 (元素起始下标为0)中的全部偶数位上的小写字母复制成为一个新字符串str2 ;如 str1串为“abCDefgh123” ,就新串str2 为“aeg” ;主函数部分源代码如下;(10 分 #include<stdio.h> #include<string.h> funchar str1, char str2 /* 请填写函数主体内容 */ int i=0,j=0;whilestr1i .='0' ifstr1i>='a'&&str1i<='z' str2j+=str1i; i+=2; str2j='0'; main char str120,str210; printf"input a stringn" getsstr1; funstr1,str2; putsstr2; 评分标准 : 变量 i 、 j 定义及初始化部分占1 分; str1终止条件判定占2 分;偶数位及小写字母判定占4 分; str2赋字符串终止标记占1 分; str2中符合条件的字符赋值到str1中占 2 分;11 / 14 名师归纳总结 - - - - - - -第 12 页,共 14 页精选学习资料 - - - - - - - - - 6. 编写一个函数,函数的功能是:为一个偶数查找两个素数,这两个素数之和等于该偶数 , 求满意这样要求的素数的组数;(6 分)0 代表 m不是素数 */ /* isp是求素数的函数,返回1 代表 m是素数,返回ispint m int i;fori=2;i<m;i+ ifm%i=0 break;ifi=m return 1;else return 0; funint n,int count /* n是偶数, count 是符合条件的组数 */ int i;count=0 fori=2;i<n/2 ;i+ ifispi&&ispn-i count+; 评分标准 : count 初始化占 1 分;循环掌握占 n 部分占 2 分;符合条件的数统计占 1 分;2 分,函数调用判定是否为素数及两个素数的和为12 / 14 名师归纳总结 - - - - - - -第 13 页,共 14 页精选学习资料 - - - - - - - - - 13 / 14 名师归纳总结 - - - - - - -第 14 页,共 14 页