《南昌大学C语言05~06第二学期试卷A及答案(共12页).doc》由会员分享,可在线阅读,更多相关《南昌大学C语言05~06第二学期试卷A及答案(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上试卷编号: ( A )卷课程编号: 课程名称: C程序设计 考试形式: 闭卷 适用班级: 全校理工科 姓名: 学号: 班级: 学院: 专业: 考试日期: 题号一二三四总分累分人 签名题分50182012100得分考生注意事项:1、本试卷共9页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。一、 单项选择题(每空 2 分,共 50 分) (请将各小题正确答案的字母序号填到相应小题的下划线上)得分评阅人 1. C语言的运算符按运算对象的数目可以分为 。A)单目运算一种 B)单目和双目运算符C)单目、双目和
2、三目运算符 D)单目、双目、三目运算和四目运算符2. C语言表达式2/5*10的值是 。A) 0.04 B)4 C)4.0 D)03. 已知变量f和i的类型说明如下:float f=12.34; int i;则以下符合C语言语法的表达式是 。A) i=(int)f%5B) i=int(f)%5C) i=f%5D) i=(int f)%54. 能正确表示数学式1x5的C语言表达式是 。A)1 =x =1)&(x=1 )&(x=5) D)(1 =x)5. 设变量c的数据类型是char,i的数据类型是int,f的数据类型是float,则C语言表达式c*i+c*f-i+100值的数据类型为 。A)in
3、t B) float C) char D)不确定南昌大学 20052006学年第二学期期末考试试卷6. 在下列选项中,合法的C语言用户标识符的是 。A) int B)sin C)if D)i+j7. C程序的执行从 开始。A)程序中的第个语句 B)程序中的第个函数C)名为main 的函数 D)包含文件的第个函数8. 凡在C语言函数中未指定存储类别的变量,其隐含的存储类别为 。A)自动(auto) B)静态(static) C)字符串 D)字符或字符型变量值9. 以下程序运行时要求输入10和20分别存放在变量x和y中,能正确输入数据的是 。main()int x,y; scanf(x=%d,y=
4、%d,&x,&y); printf(x+y=%d,x+y);(说明:用表示换行符,用表示空格符)A)1020 B)x=10,y=20C)10 D)x=10 20 y=2010. 下面程序的运行结果是 。main() int a,b; a=32767; b=a+1; printf(a=%d,b=%dn,a,b);A)a=32767,b=-32768 B)a=32767,b=32768 C)a=32767,b=1 D)运行出错11. 在C语言中,以下错误的描述是 。A)break语句不能用于循环语句和switch语句外的任何其它语句B)在switch语句中使用break语句或continue语句的
5、作用相同C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环12. 在C语言中,数组作为函数的形参,函数调用时,若用数组名作为函数的实参,则实际上传递给形参的是 。A)数组首地址 B)数组的第一个元素值C)数组中全部元素的值 D)数组元素的个数13. C语言编译系统对宏命令是 。A)在程序运行时进行替换处理B)在程序连接时进行处理C)和源程序中其它C语句同时进行编译D)在对源程序中其它成份正式编译之前进行处理14. 设 x、y为整型变量且已赋值,将其中较大的值输出的、正确的 if 语句是 。A) i
6、f ( x y ) printf ( “ %d ” , x ); B) if ( x y ) printf ( “ %d ” , x );printf ( “ %d ” , y );C) if ( x y ) ; printf ( “ %d ” , x ); else printf ( “ %d ” , y ); D) if ( x y ) printf ( “ %d ” , x ); else printf ( “ %d ” , y ); 15. 对以下程序段描述正确的是 。x=10;while(x) x=x/4;A) 不执行循环体 B) 循环体执行一次 C) 循环体执行二次 D) 死循环1
7、6. 在C语言中,引用数组元素时,对数组下标的数据类型以下说法错误的是 。A) 数组下标可以用整型常量 B) 数组下标可以用整型变量 C) 数组下标可以用任意类型的表达式 D) 数组下标可以用整型表达式17. 以下C函数的功能是 。int fun(int x,int y) int z=0; z=xy?x:y; return z; A) 求x 和y二者中的最大值 B) 求x 和y二者中的最小值C) 返回一个不确定的值 D) 返回函数值为“0”18. 定义数组:int s10;则数组元素下标的取值 。A) 最小值为1,最大值为10 B) 最小值为0,最大值为10 C) 最小值为0,最大值为9 D)
8、 最小值为1,最大值为919. 已知 int i,s45;不能表示数组第3行第3列元素值的是 。A) * ( * ( x) )+ 3 B) x 3 3 C) * ( * ( x + 3 ) + 3 ) D) * ( x 3 + 3 ) 20. 以下C函数的类型是 。fun (float f ) printf ( “ %f n ” , f ) ; A) int B) float C) void D) 无法确定 21. 设char *s1,s2255=“programing” ;以下操作正确的是 。A) *s1 = “function”; B) s2=“function”;s1=s2; C) s1
9、 = “function”;s2=s1; D) *s2=P;s1 =s2 ; 22. 设有说明语句:struct student int num,age; ;struct student stu3=6001,20,6003,21,6005,19;struct student *p=stu; 则下面的C语言表达式中,值为6003的是 。A) +(p-num) B) (p+)-numC) (*p+).num D) (*+p).num23. 已有定义 int ( * p ) ( ) ; 则指针 p 可以 。A) 代表函数的返回值 B) 指向函数的入口地址C) 代表函数的类型 D) 代表函数返回值的类
10、型24. 若用下列语句输出26个大写英文字母:(1)for(a=A;a=A;a-) printf(%c,a);(3)for(a=A;a=Z;) printf(%c,a+);(4)for(a=A;a+=Z;) printf(%c,a);以下说法正确的是 。A)全都能输出 B)只有前三个语句可以输出C)只有前两个语句可以输出 D)只有第一个语句可以输出25. 设以下程序用来求三个元素的数组中,第1个元素与第3个元素之和(程序每行前面的数字表示行号)。1 main()2 int a3=3*0,i;3 for(i=1;i3;i+) scanf(%d,ai);4 for(i=1;i3;i+) a0=a0
11、+ai+1; 5 printf(%d,a0); 则下述说法正确的是 。A)第2行有语法错误 B)第3行有错误,程序得不到预期结果C)编译时第4行出现语法错误 D)可以得到正确结果二、 程序阅读题 (每小题 3分,共18分) (写出以下程序运行的结果) 得分评阅人 1.#includemain() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(a+u=%d,b+u=%dn,c,d); 程序运行结果为:2.#include main() int a=10,b=0; if (a!=0) a=a+1;b=b+1; else
12、a=a+2;b=b+2; printf(“%d,%dn,a,b); 程序运行结果为:3.#define V(s) s*s*s#include main() int volume; volume=V(1);printf(%dt,volume); volume=V(2);printf(%dt,volume); volume=V(1+2);printf(%dn,volume); 程序运行结果为:4.#include main() char s=12345; void sub_s1(char s,int n) ; void sub_s2(char s ,int n); sub_s1(s,5);sub_
13、s2(s,6); void sub_s1(char s,int n) int i,j; for(i=0;in;i+) for(j=0;ji;j+) printf(%c,sj%5); printf(n); void sub_s2(char s ,int n) int i,j; for(i=0;in;i+) for( j=i;jn;j+) printf(%c,sj%5); printf(n); 程序运行结果为:5.#include main() int i,a;int fun(int m); for(i=0;i2;i+) a=fun(4+i);printf(%dn,a); int fun(int
14、m) static int n=0; m/=2;m=m*2; if(m) n=n*m; return (fun(m-2); else return(n+);程序运行结果为:6.#include main() int i,k=0,s10=1,2,3,4,5,6,7,8,9,10; for(i=0;i=0;i-) if(i%5= =0) printf(“%dt”,si); printf(“%dn”,k);程序运行结果为:三、 填空题 (每空 2 分,共 20 分) (请在下划线上填入合适的内容,完成程序或程序段所要求的功能)得分评阅人 1. 以下程序运行时从键盘输入字符串ABCDE按回车键结束输入
15、,要求在下划线上填入合适的内容,使输入字符串中的A和B转换为字符#输出,其它字符输出为*。# include main ( ) char c ; while( ( c = getchar ( ) ) !=_ ) switch ( c ) case A: case B: putchar(#) ; _; default : putchar( * ) ; 2. 以下程序从键盘输入20个整数存入数组,统计输入非负数的个数,并计算输入的非负整数之和。请填空完成。# include main ( ) int i , a20,s,n; s=n=0; for ( i = 0 ;i20;i + ) _; for
16、(i=0;i20;i+) if (ai0) _; s+=ai;n+; printf(s=%dt,n=%dn,s,n);3. 以下函数的功能是删除字符串s中所出现的与变量c相同的字符,请填空完成。void fun(char s,char c)int i,j; for(i=j=0; ;i+) if(si!=c) _; sj=0;4. 以下程序输出1+2+3+10的和,请填空完成。#include main() _; i=1; do s=s+i; i+; while_; printf(%dn,s);5. 设fp为文件型指针变量,ch为字符变量,以下程序段从键盘输入字符,然后存入磁盘文件,直到输入一个
17、#为止,请填空完成。(注:#不存入文件中)ch=getchar();while(_) _; ch=getchar(); fclose(fp);四、 程序设计题 (第1小题 4 分,第2小题8分,共 12 分) 得分评阅人 1. 编制一个自定义函数,函数的形参为字符数组s1和s2,函数功能是将字符串s1中的所有数字字符取出,存入另一字符数组s2中,使s2成为一个新的字符串,并在函数中将字符串s2输出。 (请按题目要求只需用自定义函数完成全部功能)2. 已知某数列前两项分别为2和3,其后继项根据数列最后两项的乘积,按下列规则生成:(1)若乘积为一位数,则该乘积即为数列的后继项;(2)若乘积为二位数
18、,则该乘积的十位数字和个位数字依次作为数列的两个后继项。编制程序计算数列前20 项之和并输出数列中的各项(要求将数列前20项保存在数组中且不可多存)。(例如,数列前10项为:2,3,6,1,8,8,6,4,2,4)05-06学年第二学期C语言程序设计期终试卷答案及评分细则一、单项选择题(每空 2 分,共 50 分1. C2. D3. A4. C5. B6. B7. C8. A9. B10. A11. B12. A13. D14. D15. C16. C17. A18. C19. A20. A21. D22. D23. B24. B25. B二、程序阅读题(每小题 3分,共18分)题号答案:备注
19、:1a+u=22,b+u=-14数值2分(1个1分)、格式1分211,1每个1.5分31 8 7每个1分41121231234234513451451511格式正确且数据正确30左右给1分、数据正确60左右给2分;数据正确但格式不正确给2分;数据60正确,但格式不正确给1分508每个1.5分66 1 30每个1分三、填空题(每空2分,共20分)题号答案:备注:1n0给1分break;2scanf(%d,&ai)或scanf(%d,a+i)用scanf函数,但没写&运算符给1分continue3si!=0或si!=0或siistrlen(s) 也正确给2分sj+=si或sj=si, j+sj=s
20、i, j+ 各1分4int i,s=0或int s=0,i没有赋初值给1分;只定义i或s给1分(i11) 或(i=0&s1i=9) 1分 s2j+=s1i; 1分 s2j=0; 1分 puts(s2); 输出0.5分(可用循环语句)2共8分# include 1分main ( )int x20,i,t,s=0,k=0; x0=2;x1=3;k=2; s=x0+x1; 求出前2项之和为一位数存入数组2分 while (k20) 循环控制正确1分 t=xk-1*xk-2; if(t10) s+=t; xk+=t; 求出前2项之和为两位数存入数组3分,没有考虑超过20项的情况应扣分 else xk+=t/10;s+=t/10; if(k20) xk+=t%10;s+=t%10; i=0;1分 while(ik) printf(%3d,xi);i+; printf(n%dn,s);专心-专注-专业