华中科技大学09级《C语言程序设计》考试模拟试卷答案.pdf
华中科技大学文华学院 09 级C 语言程序设计考试模拟试卷 课程性质:必修 使用范围:本科 考试时间:年 月 日 考试方式:闭卷 学号_专业_班级_姓名_成绩_ 一、选择题(每小题 2 分,共 20 分)(A )(1)若 x、y、j 和 k 都是 int 型变量,则计算表达式 x=(k=32,j=6,i=4)后,x 的值为。A)4 B)16 C)32 D)52(B )(2)C 语言中标识符只能由字母、数字和下划线组成,且第一个字符。A)必须为字母 B)必须为字母或下划线 C)必须为下划线 D)可以是字母、数字和下划线中任一种字符(D )(3)下面四个选项中,均是正确的数值常量或字符常量的选项是。A)0.0 0f 8.9e&B)a 3.9e-2.5 1e1 C)3 011 0 xFF00 0a D)+001 0 xabcd 2e2 50(B )(4)已知各变量的类型说明如下:int i=8,k,a,b;unsigned long w5;double x=1.42,y=5.2;则以下符合 C 语言语法的表达式是。A)a=a*3=2 B)a+=a-=(b=4)*(a=3)C)x+y=-3*a D)y=float(i)(A )(5)若以下变量均是整型,且 num=sum=5;则计算表达式 num+,sum+,+num 后 num 的值为。A)7 B)8 C)9 D)10(B )(6)在 C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量 B)整型常量或整型表达式 C)整型表达式 D)任何类型的表达式(C)(7)以下能对一维数组 a 进行正确初始化的语句是。A)int a10=0,0,0,0,0 B)int a10=;C)int a=0;D)int a10=10*1;/*各元素值为 1*/(B)(8)下面程序(注:每行程序前面的数字表示行号)。1 main()2 static int a3=0;3 int i;4 for(i=0;i3;i+)scanf(%d,ai);5 for(i=0;i3;i+)printf(%dn,ai);A)第 3 行有错误 B)第 4 行有错误 C)第 5 行有错误 D)没有错误(C )(9)定义如下变量和数组 int k;int a33=1,2,3,4,5,6,7,8,9;for(k=0;k3;k+)printf(%d,akk);则上面语句输出的结果是。A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7(D )(10)下面是对字符型数组 s 的初始化,其中不正确的是。A)char s5=abc;B)char s5=a,b,c;C)char s5=;D)char s5=abcdef;二、阅读程序写出运行后的输出结果(每小题 3 分,共 15 分,专科生每小题 4 分,共 20 分)(1)main()结果:int i,j;float x,y;y=5.000000 i=4;j=8;x=4.0;y=1.0+i/j+x;printf(y=%f,y);(2)main()结果:int x,y,z;1,2,3 x=1;y=2;z=3;printf(%d,%d,%dn,x,y,z);(3)main()结果:int i=5,k=0;0 while(i-)k=k+k;printf(k=%dn,k);三、把下列数学表达式写成 C 语言表达式(每小题 2 分,共 10 分))()(csbsass 表达式:sqrt(s*(s-a)*(s-b)*(s-c)P(1+r)n 表达式:p*pow(1+r,n)212rmmg 表达式:g*m1*m2/(r*r)2r+r2+cos(b)表达式:2*3.14*r+3.14*r*r+cos(b)5ln)45(sin224e 表达式:2*pow(sin(45*3.14/180),4)/(exp(2)*log(5)(4)main()结果:9 int a,b=0;static int c5=1,2,3,4,5;for(a=0;ac?b+:c+);printf(%dn,bc?c+:b+);四、编程题(每小题 10 分,共 40 分)(1)从键盘输入一个学生某门课程的考试成绩,若低于 60 分,输出 no pass,反之输出 pass。#include void main()float x;printf(input a nuber:);scanf(%f,&x);if(x=0)if(x60)printf(no passn);else printf(passn);else printf(input error:n);(2)一个班有 30 学生,要求找出某门课程考试成绩的最高分和最低分。(不用数组结构)#include void main()int i,max,min,a;scanf(%d,&a);max=min=a;for(i=1;i30;i+)scanf(%d,&a);if(maxa)min=a;printf(Max=%d,Min=%dn,max,min);(3)用选择法编写一个程序,使存储在整型数组 a10中的各元素值按升序排列存放(要 求:程序中至多允许使用一个缓存单元)。#include void main()static int a10;int i,j,temp;printf(Input 10 numbers:);for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i9;i+)for(j=i+1;jaj)temp=aj;aj=ai;ai=temp;for(i=0;i10;i+)printf(%d,ai);printf(n);(4)编写已知半径求面积的函数,供主函数调用。要求在主函数中输入 10 个半径值,对于给 定的半径值,判别其否大于 0,若大于,则输出对应的面积。#include float ss(int r)float s;s=3.14*r*r;return s;void main()int r10,i;flaot s;printf(Input 10 r:);for(i=0;i0)s=ss(ri);printf(”%-4d%fn”,i,s)五、应用题(每小题 5 分,共 15 分,此题专科生不做)输入 10 个学生的 3 门课的成绩,分别用函数求:(1)每个学生的平均分。(2)按学生平均分降序排列输出学生信息。(3)编写一菜单主函数,菜单内容包括以上部分。#include#include#define N 3 void aver_stu(int aN4);void sort(int aN4);void main(void)int scN4;/sci0存放学生的序号 int i,j;char ch,answer;for(i=0;iN;i+)sci0=i+1;printf(请输入第%d 个学生的 3 门成绩:n,i+1);for(j=1;j=3;j+)printf(第%d 门课程:,j);scanf(%d,&scij);do fflush(stdin);/清空缓冲区 printf(n*n);printf(t1-求每个学生的平均成绩n);printf(t2-按学生平均分降序排列n);printf(*n);printf(n 请输入(12):);ch=getchar();getchar();switch(ch)case 1:aver_stu(sc);break;case 2:sort(sc);break;default:printf(选择错误,请重新选择!n);printf(n 输入 N 或 n 退出,其它键继续!n);answer=getch();/从键盘接收一个字符,但不回显 while(answer!=N&answer!=n);void aver_stu(int aN4)int i,sum=0;printf(n 学生序号-平均成绩n);for(i=0;iN;i+)printf(t%dt%.2fn,ai0,(float)(ai1+ai2+ai3)/3);void sort(int aN4)float averN2,t,k;int i,j;for(i=0;iN;i+)averi0=ai0;averi1=(float)(ai1+ai2+ai3)/3;for(j=0;jN-1;j+)for(i=0;iN-1-j;i+)if(averi1averi+11)t=averi1;averi1=averi+11;averi+11=t;k=averi0;averi0=averi+10;averi+10=k;printf(n 学生序号-平均成绩n);for(i=0;iN;i+)printf(t%.0ft%.2fn,averi0,averi1);六、判断题(每小题 1 分,共 10 分,此题仅专科生做)1.在命名标识符时,大小写字母是不加区分的。()2.构成数组的各个元素必须具有相同的数据类型和存储类型。()3.函数的形式参数是外部型的。()4.外部静态变量的作用域是整个源程序。()5.在多个函数体内使用同名的自动变量会发生冲突。()6.可以对数组名进行赋值运算。()7.内部静态变量与自动变量的作用域和生存期都是相同的。()8.一个函数可用 retrun 语句返回多个值。()9.假设 a=3,b=7,c=5,则表达式 abc 的结果等于 1。()10.break 语句只能在循环语句中使用。()