1华中科技大学文华学院09级《C语言程序设计》考试模拟试卷课程性质:必修使用范围:本科考试时间:年月日考试方式:闭卷学号______________专业_______班级____姓名___________成绩____一、选择题(每小题2分,共20分)(A)(1)若x、y、j和k都是int型变量,则计算表达式x=(k=32,j=6,i=4)后,x的值为。A)4B)16C)32D)52(B)(2)C语言中标识符只能由字母、数字和下划线组成,且第一个字符。A)必须为字母B)必须为字母或下划线C)必须为下划线D)可以是字母、数字和下划线中任一种字符(D)(3)下面四个选项中,均是正确的数值常量或字符常量的选项是。A)0.00f8.9e'&'B)a3.9e-2.51e1'\'C)'3'0110xFF000aD)+0010xabcd2e250(B)(4)已知各变量的类型说明如下:inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;则以下符合C语言语法的表达式是。A)a=a*3=2B)a+=a-=(b=4)*(a=3)C)x+y=-3*aD)y=float(i)(A)(5)若以下变量均是整型,且num=sum=5;则计算表达式num++,sum++,++num后num的值为。A)7B)8C)9D)10(B)(6)在C语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型常量或整型表达式C)整型表达式D)任何类型的表达式(C)(7)以下能对一维数组a进行正确初始化的语句是。A)inta[10]={0,0,0,0,0}B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};/*各元素值为1*/(B)(8)下面程序(注:每行程序前面的数字表示行号)。1main()2{staticinta[3]={0};3inti;4for(i=0;i3;i++)scanf(%d,a[i]);5for(i=0;i3;i++)printf(%d\n,a[i]);}A)第3行有错误B)第4行有错误C)第5行有错误D)没有错误2(C)(9)定义如下变量和数组intk;inta[3][3]={1,2,3,4,5,6,7,8,9};for(k=0;k3;k++)printf(%d,a[k][k]);则上面语句输出的结果是。A)357B)369C)159D)147(D)(10)下面是对字符型数组s的初始化,其中不正确的是。A)chars[5]={abc};B)chars[5]={'a','b','c'};C)chars[5]=;D)chars[5]=abcdef;二、阅读程序写出运行后的输出结果(每小题3分,共15分,专科生每小题4分,共20分)(1)main()结果:{inti,j;floatx,y;y=5.000000i=4;j=8;x=4.0;y=1.0+i/j+x;printf(y=%f,y);}(2)main()结果:{intx,y,z;1,2,3x=1;y=2;z=3;printf(%d,%d,%d\n,x,y,z);}(3)main()结果:{inti=5,k=0;0while(i--)k=k+k;printf(k=%d\n,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{inta,b=0;staticintc[5]={1,2,3,4,5};for(a=0;a5;++a)if((a%2)==0)b+=c[a];printf(%d,b);}(5)main()结果:3{inta,b,c;2a=1;b=2;c=3;printf(%d\n,bc?b++:c++);printf(%d\n,bc?c++:b++);}3四、编程题(每小题10分,共40分)(1)从键盘输入一个学生某门课程的考试成绩,若低于60分,输出nopass,反之输出pass。#includestdio.hvoidmain(){floatx;printf(inputanuber:);scanf(%f,&x);if(x=100&&x=0)if(x60)printf(nopass\n);elseprintf(pass\n);elseprintf(inputerror:\n);}(2)一个班有30学生,要求找出某门课程考试成绩的最高分和最低分。(不用数组结构)#includestdio.hvoidmain(){inti,max,min,a;scanf(%d,&a);max=min=a;for(i=1;i30;i++){scanf(%d,&a);4if(maxa)max=a;if(mina)min=a;}printf(Max=%d,Min=%d\n,max,min);}(3)用选择法编写一个程序,使存储在整型数组a[10]中的各元素值按升序排列存放(要求:程序中至多允许使用一个缓存单元)。#includestdio.hvoidmain(){staticinta[10];inti,j,temp;printf(Input10numbers:);for(i=0;i10;i++)scanf(%d,&a[i]);for(i=0;i9;i++)for(j=i+1;j10;j++)if(a[i]a[j]){temp=a[j];a[j]=a[i];a[i]=temp;}for(i=0;i10;i++)printf(%d,a[i]);printf(\n);}5(4)编写已知半径求面积的函数,供主函数调用。要求在主函数中输入10个半径值,对于给定的半径值,判别其否大于0,若大于,则输出对应的面积。#includestdio.hfloatss(intr){floats;s=3.14*r*r;returns;}voidmain(){intr[10],i;flaots;printf(Input10r:);for(i=0;i10;i++){scanf(%d,&r[i]);if(r0)s=ss(r[i]);printf(”%-4d%f\n”,i,s)}}五、应用题(每小题5分,共15分,此题专科生不做)输入10个学生的3门课的成绩,分别用函数求:(1)每个学生的平均分。(2)按学生平均分降序排列输出学生信息。(3)编写一菜单主函数,菜单内容包括以上部分。#includestdio.h6#includeconio.h#defineN3voidaver_stu(inta[N][4]);voidsort(inta[N][4]);voidmain(void){intsc[N][4];//sc[i][0]存放学生的序号inti,j;charch,answer;for(i=0;iN;i++){sc[i][0]=i+1;printf(请输入第%d个学生的3门成绩:\n,i+1);for(j=1;j=3;j++){printf(第%d门课程:,j);scanf(%d,&sc[i][j]);}}do{fflush(stdin);//清空缓冲区printf(\n*********************************************\n);printf(\t1---求每个学生的平均成绩\n);printf(\t2---按学生平均分降序排列\n);printf(*********************************************\n);printf(\n请输入(1~2):);ch=getchar();7getchar();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');}voidaver_stu(inta[N][4]){inti,sum=0;printf(\n学生序号---平均成绩\n);for(i=0;iN;i++)printf(\t%d\t%.2f\n,a[i][0],(float)(a[i][1]+a[i][2]+a[i][3])/3);}voidsort(inta[N][4]){floataver[N][2],t,k;inti,j;for(i=0;iN;i++){aver[i][0]=a[i][0];aver[i][1]=(float)(a[i][1]+a[i][2]+a[i][3])/3;8}for(j=0;jN-1;j++)for(i=0;iN-1-j;i++)if(aver[i][1]aver[i+1][1]){t=aver[i][1];aver[i][1]=aver[i+1][1];aver[i+1][1]=t;k=aver[i][0];aver[i][0]=aver[i+1][0];aver[i+1][0]=k;}printf(\n学生序号---平均成绩\n);for(i=0;iN;i++)printf(\t%.0f\t%.2f\n,aver[i][0],aver[i][1]);}六、判断题(每小题1分,共10分,此题仅专科生做)1.在命名标识符时,大小写字母是不加区分的。(×)2.构成数组的各个元素必须具有相同的数据类型和存储类型。(√)3.函数的形式参数是外部型的。(×)4.外部静态变量的作用域是整个源程序。(×)5.在多个函数体内使用同名的自动变量会发生冲突。(×)6.可以对数组名进行赋值运算。(×)7.内部静态变量与自动变量的作用域和生存期都是相同的。(×)8.一个函数可用retrun语句返回多个值。(×)9.假设a=3,b=7,c=5,则表达式abc的结果等于1。(√)10.break语句只能在循环语句中使用。(×)