四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30. 从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。
#define N 10
main()
{ int i,j,t,a[N];
for(i=0;i<N;i++) scanf(“%d’’,&a[i]);
for(i=0;i<N-1;i++)
for(j=N-1;j>=i+1;______ ) /*第一空*/
if(a[j]<a[j-1])
{ t=a[j];________;a[j-1]=t;} /*第二空*/
for(i=0;i<N;i++)printf(″%5d″, _______); /*第三空*/
printf(″\n″);
}
31. 统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。
#include<stdio.h>
#include<stdlib.h>
main()
{ int lines=_________; /*第一空*/
char ch;
FILE *fp;
fp=fopen(″file.dat″,″r″);
while(_______) /*第二空*/
{ ch=fgetc(fp);
if (ch _____ ’\n’) lines++: /*第三空*/
}
printf(″Lines=%d\n″,lines);
fclose(fp);
}
32. 从键盘输入10名学生的姓名和数学、英语及C语言的成绩,计算并输出其总成绩和平均成绩。
typedef struct
{ char name[20];
int math,english,C;
float sum,aver; /* 总成绩和平均成绩 */
}STU;
main()
{ STU st[10],*p;
int i:
for(i=0;i<10;i++)
{ printf(″Input name:″);
scanf(″%s″,______); /*第一空*/
printf(″Input 3 score: ″);
scanf(″%d,%d,%d″,&st[i].math,&st[i].english,&st[i].C);
}
for(p=st;p<st+10:p++)
{ p->______=p->math+p->english+p->C; /*第二空*/
p->______=p->sum/3; /*第三空*/
printf(″name=%s,sum=%5.1f,aver=%5.1f\n″, p->name, p->sum, p->aver);
}
}