南昌大学学年C程序设计A卷试题及答案.docx
- 文档编号:24439482
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:17
- 大小:34.63KB
南昌大学学年C程序设计A卷试题及答案.docx
《南昌大学学年C程序设计A卷试题及答案.docx》由会员分享,可在线阅读,更多相关《南昌大学学年C程序设计A卷试题及答案.docx(17页珍藏版)》请在冰豆网上搜索。
南昌大学学年C程序设计A卷试题及答案
试卷编号:
(A)卷
课程编号:
H61050001课程名称:
C程序设计考试形式:
闭卷
适用班级:
全校理工科姓名:
学号:
班级:
学院:
专业:
考试日期:
2006、06、23
题号
一
二
三
四
总分
累分人签名
题分
50
18
20
12
100
得分
考生注意事项:
1、本试卷共9页,请查看试卷中是否有缺页或破损。
如有立即举手报告以便更换。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
一、单项选择题(每空2分,共50分)
(请将各小题正确答案的字母序号填到相应小题的下划线上)
得分
评阅人
1.C语言的运算符按运算对象的数目可以分为。
A)单目运算一种B)单目和双目运算符
C)单目、双目和三目运算符D)单目、双目、三目运算和四目运算符
2.C语言表达式2/5*10的值是。
A)0.04B)4C)4.0D)0
3.已知变量f和i的类型说明如下:
floatf=12.34;inti;
则以下符合C语言语法的表达式是。
A)i=(int)f%5B)i=int(f)%5
C)i=f%5D)i=(intf)%5
4.能正确表示数学式1≤x≤5的C语言表达式是。
A)1<=x<=5B)(x>=1)&(x<=5)
C)(x>=1)&&(x<=5)D)(1<=x)||(5>=x)
5.设变量c的数据类型是char,i的数据类型是int,f的数据类型是float,则C语言表达式c*i+c*f-i+100值的数据类型为。
A)intB)floatC)charD)不确定
南昌大学2005~2006学年第二学期期末考试试卷
6.在下列选项中,合法的C语言用户标识符的是。
A)intB)sinC)ifD)i+j
7.C程序的执行从开始。
A)程序中的第1个语句B)程序中的第1个函数
C)名为main的函数D)包含文件的第1个函数
8.凡在C语言函数中未指定存储类别的变量,其隐含的存储类别为。
A)自动(auto)B)静态(static)C)字符串D)字符或字符型变量值
9.以下程序运行时要求输入10和20分别存放在变量x和y中,能正确输入数据的是。
main()
{intx,y;
scanf("x=%d,y=%d",&x,&y);
printf("x+y=%d",x+y);
}
(说明:
用
A)10_20
C)10
20
10.下面程序的运行结果是。
main()
{
inta,b;
a=32767;
b=a+1;
printf("a=%d,b=%d\n",a,b);
}
A)a=32767,b=-32768B)a=32767,b=32768
C)a=32767,b=1D)运行出错
11.在C语言中,以下错误的描述是。
A)break语句不能用于循环语句和switch语句外的任何其它语句
B)在switch语句中使用break语句或continue语句的作用相同
C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环
D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
12.在C语言中,数组作为函数的形参,函数调用时,若用数组名作为函数的实参,则实际上传递给形参的是。
A)数组首地址B)数组的第一个元素值
C)数组中全部元素的值D)数组元素的个数
13.C语言编译系统对宏命令是。
A)在程序运行时进行替换处理
B)在程序连接时进行处理
C)和源程序中其它C语句同时进行编译
D)在对源程序中其它成份正式编译之前进行处理
14.设x、y为整型变量且已赋值,将其中较大的值输出的、正确的if语句是。
A)if(x>y)printf(“%d”,x);
B)if(x>y)printf(“%d”,x);printf(“%d”,y);
C)if(x>y);printf(“%d”,x);elseprintf(“%d”,y);
D)if(x>y)printf(“%d”,x);elseprintf(“%d”,y);
15.对以下程序段描述正确的是。
x=10;
while(x)x=x/4;
A)不执行循环体B)循环体执行一次C)循环体执行二次D)死循环
16.在C语言中,引用数组元素时,对数组下标的数据类型以下说法错误的是。
A)数组下标可以用整型常量B)数组下标可以用整型变量
C)数组下标可以用任意类型的表达式D)数组下标可以用整型表达式
17.以下C函数的功能是。
intfun(intx,inty)
{intz=0;
z=x>y?
x:
y;
returnz;}
A)求x和y二者中的最大值B)求x和y二者中的最小值
C)返回一个不确定的值D)返回函数值为“0”
18.定义数组:
ints[10];则数组元素下标的取值。
A)最小值为1,最大值为10B)最小值为0,最大值为10
C)最小值为0,最大值为9D)最小值为1,最大值为9
19.已知inti,s[4][5];不能表示数组第3行第3列元素值的是。
A)*(*(x))+3B)x[3][3]
C)*(*(x+3)+3)D)*(x[3]+3)
20.以下C函数的类型是。
fun(floatf)
{printf(“%f\n”,f);}
A)intB)floatC)voidD)无法确定
21.设char*s1,s2[255]=“programing”;以下操作正确的是。
A)*s1=“function”;B)s2=“function”;s1=s2;
C)s1=“function”;s2=s1;D)*s2='P';s1=s2;
22.设有说明语句:
structstudent
{intnum,age;};
structstudentstu[3]={{6001,20},{6003,21},{6005,19}};
structstudent*p=stu;
则下面的C语言表达式中,值为6003的是。
A)++(p->num)B)(p++)->num
C)(*p++).numD)(*++p).num
23.已有定义int(*p)();则指针p可以。
A)代表函数的返回值B)指向函数的入口地址
C)代表函数的类型D)代表函数返回值的类型
24.若用下列语句输出26个大写英文字母:
(1)for(a='A';a<='Z';a++)printf("%c",a);
(2)for(a='Z';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个元素之和(程序每行前面的数字表示行号)。
1main()
2{inta[3]={3*0},i;
3for(i=1;i<3;i++)scanf("%d",a[i]);
4for(i=1;i<3;i++)a[0]=a[0]+a[i+1];
5printf("%d",a[0]);}
则下述说法正确的是。
A)第2行有语法错误B)第3行有错误,程序得不到预期结果
C)编译时第4行出现语法错误D)可以得到正确结果
二、程序阅读题(每小题3分,共18分)
(写出以下程序运行的结果)
得分
评阅人
26.
#include
main()
{inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);}
程序运行结果为:
27.
#include
main()
{inta=10,b=0;
if(a!
=0)
{a=a+1;b=b+1;}
else
{a=a+2;b=b+2;}
printf(“%d,%d\n",a,b);}
程序运行结果为:
28.
#defineV(s)s*s*s
#include
main()
{intvolume;
volume=V
(1);printf("%d\t",volume);
volume=V
(2);printf("%d\t",volume);
volume=V(1+2);printf("%d\n",volume);
}
程序运行结果为:
29.
#include
main()
{chars[]={"12345"};
voidsub_s1(chars[],intn);
voidsub_s2(chars[],intn);
sub_s1(s,5);sub_s2(s,6);
}
voidsub_s1(chars[],intn)
{inti,j;
for(i=0;i {for(j=0;j printf("\n"); } } voidsub_s2(chars[],intn) {inti,j; for(i=0;i {for(j=i;j printf("\n"); } } 程序运行结果为: 30. #include main() {inti,a;intfun(intm); for(i=0;i<2;i++) {a=fun(4+i);printf("%d\n",a);} } intfun(intm) {staticintn=0; m/=2;m=m*2; if(m) {n=n*m;return(fun(m-2));} elsereturn(n++); } 程序运行结果为: 31. #include main() {inti,k=0,s[10]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<10;i++) if(i%2)k+=s[i]; for(i=i-1;i>=0;i--) if(i%5==0)printf(“%d\t”,s[i]); printf(“%d\n”,k); } 程序运行结果为: 三、填空题(每空2分,共20分) (请在下划线上填入合适的内容,完成程序或程序段所要求的功能) 得分 评阅人 32.以下程序运行时从键盘输入字符串ABCDE按回车键结束输入,要求在下划线上填入合适的内容,使输入字符串中的‘A’和‘B’转换为字符‘#’输出,其它字符输出为‘*’。 #include main() {charc; while((c=getchar())! =________________) {switch(c) {case'A': case'B': putchar('#');___________________; default: putchar('*'); } } } 33.以下程序从键盘输入20个整数存入数组,统计输入非负数的个数,并计算输入的非负整数之和。 请填空完成。 #include main() {inti,a[20],s,n; s=n=0; for(i=0;i<20;i++)____________; for(i=0;i<20;i++) {if(a[i]<0) __________________; s+=a[i];n++; } printf("s=%d\t,n=%d\n",s,n); } 34.以下函数的功能是删除字符串s中所出现的与变量c相同的字符,请填空完成。 voidfun(chars[],charc) {inti,j; for(i=j=0;;i++) if(s[i]! =c)___________________; s[j]='\0';} 35.以下程序输出1+2+3+……+10的和,请填空完成。 #include main() {_______________; i=1; do {s=s+i; i++; }while___________________; printf("%d\n",s);} 36.设fp为文件型指针变量,ch为字符变量,以下程序段从键盘输入字符,然后存入磁盘文件,直到输入一个‘#’为止,请填空完成。 (注: ‘#’不存入文件中) ch=getchar(); while(__________) {_____________; ch=getchar(); } fclose(fp); 四、程序设计题(第1小题4分,第2小题8分,共12分) 得分 评阅人 37.编制一个自定义函数,函数的形参为字符数组s1和s2,函数功能是将字符串s1中的所有数字字符取出,存入另一字符数组s2中,使s2成为一个新的字符串,并在函数中将字符串s2输出。 (请按题目要求只需用自定义函数完成全部功能) 38.已知某数列前两项分别为2和3,其后继项根据数列最后两项的乘积,按下列规则生成: (1)若乘积为一位数,则该乘积即为数列的后继项; (2)若乘积为二位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。 编制程序计算数列前20项之和并输出数列中的各项(要求将数列前20项保存在数组中且不可多存)。 (例如,数列前10项为: 2,3,6,1,8,8,6,4,2,4) 南昌大学05--06学年第二学期C语言程序设计期终试卷答案及评分细则 一、单项选择题(每空2分,共50分 1.C 2.D 3.A 4.C 5.B 6.B 7.C 8.A 9.B 10.A 11.B 12.A 13.D 14.D 15.C 16.C 17.A 18.C 19.A 20.A 21.D 22.D 23.B 24.B 25.B 二、程序阅读题(每小题3分,共18分) 题号 答案: 备注: 1 a+u=22,b+u=-14 数值2分(1个1分)、格式1分 2 11,1 每个1.5分 3 187 每个1分 4 1 12 123 1234 123451 23451 3451 451 51 1 ①格式正确且数据正确30%左右给1分、数据正确60%左右给2分; ②数据正确但格式不正确给2分; ③数据60%正确,但格式不正确给1分 5 0 8 每个1.5分 6 6130 每个1分 三、填空题(每空2分,共20分) 题号 答案: 备注: 1 '\n' '\0'给1分 break; 2 scanf("%d",&a[i]) 或scanf("%d",a+i) 用scanf函数,但没写&运算符给1分 continue 3 s[i]! ='\0' 或s[i]! =0或s[i] i s[j++]=s[i] 或s[j]=s[i],j++ s[j]=s[i],j++各1分 4 inti,s=0 或ints=0,i ①没有赋初值给1分; ②只定义i或s给1分 (i<11)或(i<=10) 5 ch! ='#' ch! =#给1分 fputc(ch,fp) 函数正确,但参数不正确给1分 四、编程题(第1小题4分,第2小题8分,共12分) 1.共4分(本题考自定义函数的应用,用主函数完成题目的功能不给分) voidfun(chars1[],chars2[]) {inti,j=0; for(i=0;s1[i];i++)0.5分 if(s1[i]>='0'&&s1[i]<='9')1分 s2[j++]=s1[i];1分 s2[j]='\0';1分 puts(s2);输出0.5分(可用循环语句) } 2.共8分 #include main() {intx[20],i,t,s=0,k=0; x[0]=2;x[1]=3;k=2; s=x[0]+x[1]; while(k<20)循环控制正确1分 {t=x[k-1]*x[k-2]; if(t<10) {s+=t; x[k++]=t; } else {x[k++]=t/10;s+=t/10; if(k<20) {x[k++]=t%10;s+=t%10;} } } i=0; while(i { printf("%3d",x[i]);i++; } printf("\n%d\n",s); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 学年 程序设计 试题 答案