合肥工业大学2005年《C语言程序设计》试卷参考答案
一、 填空题(20分,每空1分)
1.main( ) 或主函数 2.1 7 3.0 4.0 5.4.5 6.0 7.4 8.一个字符 一串字符 9.6
10.?c? ?\\0? 11.值传递 地址传递 12.12345 1 13.16 10 14.fp = fopen (“file.txt” , ”w”);
二、 选择题(10分,每题1分)
1.D 2.B 3. A 4.B 5.C 6.B 7.C 8.D 9.A 10.B
三、 写出以下程序的运行结果(30分, 每题5分)
1.5, 6, 5, 0 数值每个一分,格式一分。 2.c=1 数值每个两分,格式一分。 d=0.000000
3.hello world! 大写字母变小写每个两分,其余不变1分。 4.b = -10 i = 33, b=0
i = 75, b=33 每个数据包括数据的格式各一分,。 5.6, 45 最小值位置,最小值各一分; 2, 98 最大值位置,最大值各一分; 格式1分
注释:最大值最小值颠倒扣2分。 6.1 3 5 7 9
数据各一分,格式错误扣一分。
四、程序填空(10分, 每空1分)
1. ①
2.④ &a,&b ⑤ int *y ⑥ int t; ⑦ *y=t 3.⑧ iNum=0 ⑨i
五、编程题(30分)
说明:每个语法错误扣0.5,语法错误最多扣两分为止。
1. #include
{ float x,y; /*变量定义1分*/ scanf(“%f”, &x); /*输入1分*/ if(x>0)
y=1;
else if(x<0)
y=-1;
else
y=0; /*判断求值2分*/
printf(“x=%f, y=%f”, x,y); /*输出1分*/ }
2.#include
int i,j,a[2][3],k1=0,k2=0,sum1=0,sum2=0; /*变量说明1分*/ for (i=0;i<2;i++) for(j=0;j<3;j++)
scanf(“%d”, &a[i][j]); /*循环输入2分*/ for (i=0;i<2;i++) for(j=0;j<3;j++) if (a[i][j]>0)
{
sum1= sum1+ a[i][j]; k1++; }
else if (a[i][j]<0)
{
sum2= sum2+ a[i][j]; k2++; } /*统计求和3分*/
printf(“k1=%d, k2=%d”, k1,sum1,k2,sum2); /*输出1分*/ } ⒊
#include
float x,y; /*变量说明0.5分*/ scanf(“%f”,&x) /*输入0.5分*/ y=(exps(x)+exps(-x))/2 /*函数调用表达式2分*/ printf(“y=%f”,y); /*输出结果1分*/ }
float exps(float x) /*函数结构定义1分*/ {
float s=1,t=1; int i=1;
while( fabs(t)>1e-6) {
t=t*x/i; i++; s+=t; } /*迭代循环2分*/ return s; /*返回结果1分*/ } ⒋
#include
int i,j,a[NUM],sum=0; for(i=0;i { int t; t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i /*变量说明1分*/ /*循环输入1分*/ /*循环统计2分*/ /*排序算法5分,冒泡、选择都可*/ /*循环输出1分*/ 合肥工业大学2006年《C语言程序设计》试卷参考答案 二、 单项选择题(20分,每题1分) 1 6 11 16 一、 A B A B 2 7 12 17 A D D A 3 8 13 18 C A A D 4 9 14 19 D C D D 5 10 15 20 A D D A 填空(10分,每空1分) 1.C语言源程序中主函数名由系统规定为 __main_ ,程序员是不能改变的。 2.有数学表达式:x-3,其C语言表达式为 __sqrt(x)-3 ______。 3.已知函数定义为:int stat(int a , float *p) { ...... } 则此函数的两个参数类型分别是 整形 、 指向浮点型的指针 。 4.设有数组a[10];则首地址可以写成 _a或 &a[0]_ , 数组元素a[3]的地址可以写成__&a[3]_ 或a+3_ __。 5.要使以下程序段中的函数调用语句printf(“***”);执行10次,应在 ① 处填入整数 __19或20____。 for( i=1;i<=___①___;i+=2 ) printf(“***”); 7.用只读方式打开e:\\20051234目录下的名为 “aa.dat”的文件,正确的打开 语句为FILE *fp;fp=fopen(“e:\\\\20051234\\\\ aa.dat”,”r”); 。 8.判断两个浮点型变量x和y是否相等一般用: if( fabs(x-y) <1e-6 )? 。 9.已知赋值语句zhang.year =1985;可判断zhang是 结构或联合 类型的变量。 说明:每一个空只有完全正确,得1分。 三、 写出以下程序的运行结果(20分,每题5分) 1. ** **** ****** 3行各1分,每行个数共1分,图形形状1分 2.m1=-16,m2=24 最小数2分,最大数2分,逗号1分(数据颠倒扣2分) 3. 930001 Wang 80.50 930003 Li 95.50 两行记录各2分,格式1分 4. 6 7 两行数据各2分,格式1分 四、 程序设计题(50分) 1.有一分段函数: 2x + 5 (x<=2) y= 3x - 4 (2 void main(void) --------1分 { float x,y;/*或int x,y */ --------1分 scanf(“%f”,&x); --------1分 if(x <= 2) y = 2*x+5; else if(x <= 5) y = 3*x-4; else y = 7; 条件分支3分 printf(“y=%f”,y); --------1分 } 2.由键盘任意输入10个同学的数学成绩,按从高分到低分的顺序排序,并输出排序后的成绩。(9分) #include void main(void) --------1分 { int a[10],i,j,t; --------1分 for(i=0;i<10;i++) scanf(“%d”,&a[i]); --------1分 for(i=0;i<9;i++)