c语言编程问题

分数输入太多了,懒得手工数。我用一个2位数的随机数代替手工输入。我单独写了输入函数,你只需要调用它。详见备注。

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & lttime.h & gt

#定义?stuNum?15//学生人数

#定义?scNum?7//模块数量

typedef?struct?Stu//定义学生数据结构

{

int?席德;//学生ID

int?sc[scNum];//对应7个模块分数

int?总和;//总分

}斯图;

作废?insertSTU(STU?* stu);//输入15学生的信息。

作废?insertTest(STU?* stu);//测试,用随机数代替输入,我懒得输入那么多成绩,你要手工输入,调用insertSTU代替这个函数。

作废?printfSTU(斯图?* stu);//按照输入顺序打印15学生7个模块的成绩以及每个模块的前三名成绩。

int?主()

{

斯图?stu[stuNum];//定义15学生

//?int?I,j,sc;

srand(time(NULL));

插入测试(stu);//我想手动输入,改成insertSTU(stu)

printfSTU(stu);

回归?0;

}

作废?printfSTU(斯图?*stu)//按照输入顺序打印15学生7个模块的成绩以及每个模块的前三名信息?然后呢。总分前三名信息

{

int?I,j,k,sc;

斯图?*max[3],*sum[3],newstu//max对应7个模块前3名的学生结构指针?Sum对应总分前3名学生的结构指针。

for(I = 0;我& ltstuNumi++)

{

Printf("模块7中编号为%02d的同学的成绩和总成绩为",stu[i]。sid分别);

for(j = 0;j & ltscNumj++)

{

sc=stu[i]。sc[j];

printf("%02d?",sc);

}

printf("%d\n ",stu[i]。sum);

}

for(j = 0;j & ltscNumj++)

{

for(k = 0;k & ltscNumk++)

{

news tu . sc[k]= 0;

news tu . sum = 0;

}

max[0]= max[1]= max[2]= & amp;newstu

for(I = 0;我& ltstuNumi++)

{

如果(斯图[我]。sc[j]& gt;max[0]-& gt;sc[j])

max[0]= & amp;(stu[I]);

不然呢?如果(斯图[我]。sc[j]& gt;max[1]-& gt;sc[j])

max[1]= & amp;(stu[I]);

不然呢?如果(斯图[我]。sc[j]& gt;max[2]-& gt;sc[j])

max[2]= & amp;(stu[I]);

}

printf(" 02d中排名前三的模块分别是:编号%02d分数:%02d编号:%02d分数:%02d编号:%02d分数?\n ",j+1,max[0]-& gt;sid,max[0]-& gt;sc[j],max[1]-& gt;sid,max[1]-& gt;sc[j],max[2]-& gt;sid,max[2]-& gt;sc[j]);

}

sum[0]= sum[1]= sum[2]= & amp;newstu

for(I = 0;我& ltstuNumi++)

{

如果(斯图[我]。sum & gtsum[0]-& gt;总和)

sum[0]= & amp;(stu[I]);

不然呢?如果(斯图[我]。sum & gtsum[1]-& gt;总和)

sum[1]= & amp;(stu[I]);

不然呢?如果(斯图[我]。sum & gtsum[2]-& gt;总和)

sum[2]= & amp;(stu[I]);

}

Printf("总分前三名分别是:序号:%02d,总分:%02d,总分:%02d,序号:%02d,总分:%02d?\n ",sum[0]-& gt;sid,sum[0]-& gt;sum,sum[1]-& gt;sid,sum[1]-& gt;sum,sum[2]-& gt;sid,sum[2]-& gt;sum);

}

作废?insertSTU(STU?*stu)//输入15学生的信息。

{

int?I,j,sc;

for(I = 0;我& ltstuNumi++)

{

斯图[我]。sid = I+1;

斯图[我]。sum = 0;

Printf("输入编号为%d的学生的7个模块成绩:",I+1);

for(j = 0;j & ltscNumj++)

{

//scanf("%d ",& ampsc);//?我懒得输入那么多成绩,就用随机数代替吧。你得输入它来还原这句话。

sc =(int)(rand()% 100);//用一个随机的2位数替换输入,如果不需要就注释掉。

斯图[我]。sc[j]= sc;

斯图[我]。sum=stu[i]。sum+sc;

}

}

}

作废?insertTest(STU?*stu)//用instead of输入进行测试。

{

int?I,j,sc;

for(I = 0;我& ltstuNumi++)

{

斯图[我]。sid = I+1;

斯图[我]。sum = 0;

for(j = 0;j & ltscNumj++)

{

sc =(int)(rand()% 100);

斯图[我]。sc[j]= sc;

斯图[我]。sum=stu[i]。sum+sc;

}

}

}