问题详情

阅读以下应用程序说明和C程序,将C程序段中(1)~(6)空缺处的语句填写完整。

【说明】

某大学征询学生意见,从各学院预选的n(n≤60)位优秀大学生中,评选出“十佳大学生”。以下【C程序】对各位学生选票进行相关的统计、排序等处理。

(1)各学院预选的优秀大学生按1,2,…顺序连续编号,每个编号用两个字符表示,即01,02,…。

(2)所回收的选票按以下格式存于文件source中,每行字符串对应一张选票。其中,姓名占10个字符,学院名称占30个字符,大学生编号占20个字符。

(3)对应名次的大学生编号可以有空缺,但必须用00表示。

(4)若编号超出规定范围,或编号重复出现,按照废票处理。

(5)按选票中所列“十佳大学生”顺序给出各名大学生的得分。评分标准如下:

一 二 三 四 五 六 七 八 九 十

15 12 9 7 6 5 4 3 2 1

(6)按各位大学生得分数由高到低顺序排队,并按以下格式列出“十佳大学生”排行表。

名次 大学生编号 合计得分 合计得票数

若得分相同,则得票数多的在前;若得分和得票数都相同,则编号小的在前。

以下【C程序】中所应用到的函数fopen、fclose和fgets都是I/O程序库中的函数。

【C程序】

include <stdio. h>

define n 60

long int tn[n], td[n], score[n+1][10], order[n];

char s[80];

int mark[]=(15,12,9,7,6,5,4,3,2,1);

FILE *fp, *fopen();

Main()

{ int c, g, k, I, j, b[10];

long int e, d, t, tt, dd;

char * p;

for(i=0; i<=n; i++)

for(j=0; j<10; j++)

score[i][j]=0;

fP=fopen("source", "r"); /*以读方式打开文件source*/

p=fgets(s, 80, fp); /*读fp所指文件的下一行字符串于s*/

while(*p){

g=l; k=0; p+=40;

while(k<10){

c=((*p++)-'0')*10+((*p++)-'0');

b[k++]=c)

if(c<=n){

if(c)

{ i=0;

While( (1) );

If( (2) ){g=0; break;}

}

else{g=0; break;}

}

If(g)

For(i=0; i<k; i++)

If(b[i])

(3);

p=fgets(s, 80, fP);

}

Fclose(fp); /*关闭fp所指文件*/

For(i=1; i<n; i++){

For(t=0, d=0, j=0; j<10; j++){

t +=(e=score[i][j]);

d +=e * mark[j];

}

tn[i-1]=t; td[i-1]=d; order[i-1]=i;

}

For(i=0; i<n-1; i++){

k=i;

for(j=i+1; j<n; j++)

if(

相关热点: 大学生  

未搜索到的试题可在搜索页快速提交,您可在会员中心"提交的题"快速查看答案。 收藏该题
查看答案

相关问题推荐

联系我们 用户中心
返回顶部