以下是我自己编写的C语言的程序,运行没有错误,但输出的结果不对,请哪位高手帮忙看那一下,急!!谢啦~

#include<stdio.h>structSTUDENT{charid[10];intscore[5];doubleave;}stu[10];voidaverage(... #include<stdio.h>
struct STUDENT
{
char id[10];
int score[5];
double ave;
}
stu[10];

void average();
void nopass();
void good();

void main()
{int num=10,i,j;
for(i=0;i<num;i++)
{
printf("\t请输入第%d个学生的数据",i+1);
printf("\t学号:");
scanf("%s",stu[i].id);
for(j=0;j<5;j++)
{
printf("\t第%d门课的成绩:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
average();
nopass();
good();
}

void average()
{int a=0,i;
float b=0;
for(i=0;i<10;i++)
a=a+stu[i].score[0];
b=a/10;
printf("\t the average score is :%f",b);
}

void nopass()
{
printf("不及格学生");
int i,j,sum=0;
for(i=0;j<10;i++)
{for(j=0;j<5;j++)
{if(stu[i].score[j]<60)
sum=sum++;
}
if(sum>=2)
{for(j=0;j<5;j++)
printf("第%d门成绩为%d\n",j+1,stu[i].score[j]);
printf("学号:%s\n",stu[i].id);
for(j=0;j<5;j++)
sum+=stu[i].score[j];
stu[i].ave=sum/5.0;
printf("\t平均成绩%f\n",stu[i].ave);
}
}
}

void good()
{
printf("\t优秀学生\n\n");
int i,j,n,k,sum=0;
for(i=0;i<10;i++)
{ for(j=0;j<5;j++)
{
if(stu[i].score[j]>80)
sum++;
}
if(sum=5)
{
n=0;
for(j=0;j<5;j++)
printf("第%d门的成绩%d",j+1,stu[i].score[j]);
printf("学号%s",stu[i].id);
for(j=0;j<5;j++)
n=n+stu[i].score[j];
stu[i].ave=n/5.0;
printf("\t平均成绩%f\n",stu[i].ave);
}
}
for(i=0;i<10;i++)
{ k=0;
for(j=0;j<5;j++)
{ k+=stu[i].score[j];
stu[i].ave=k/5.0;
if(stu[i].ave>85)
{
for(j=0;j<5;j++)
printf("第%d门的成绩%d",j+1,stu[i].score[j]);
printf("学号%s",stu[i].id);
printf("\t平均成绩%f\n",stu[i].ave);
}
}
}
}
题目:一个班有10个学生,每个学生有学号,以及数学,物理,英语,语文,体育5门课的成绩信息。分别编写3个函数以实现以下3个要素:
(1)求数学的平均成绩
(2)对于有两门以上课程不及格的学生,输出他们的学号,各门课成绩及平均成绩
(3)输出成绩优良的学生(平均成绩在85分以上或全部成绩都在80分以上)的学号,各门课成绩和平均成绩
展开
 我来答
kaixingui2012
推荐于2016-11-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6136万
展开全部
优化了一下你的程序代码,你再试试
#include<stdio.h>
struct STUDENT
{
char id[10];
int score[5];
double sum; //这里增加一个总分,方便处理,录入时就完成
double ave; //总分与平均分的计算
} stu[10];

void average();
void nopass();
void good();

int main()
{
int num=10,i,j;
for(i=0;i<num;i++)
{
printf("\t请输入第%d个学生的数据",i+1);
printf("\t学号:");
scanf("%s",stu[i].id);
stu[i].sum=0;
for(j=0;j<5;j++)
{
printf("\t第%d门课的成绩:",j+1);
scanf("%d",&stu[i].score[j]);
stu[i].sum += stu[i].score[j] ;
}
stu[i].ave= stu[i].sum/5 ;
}
average();
nopass();
good();
}

void average()
{
//int a=0,i; a必须是float,否则b=a/10就按整数除了
int i;
double a=0,b=0;
for(i=0;i<10;i++)
a=a+stu[i].score[0];
b=a/10;
printf("\t the math average score is :%f",b);
}

void nopass()
{
printf("不及格学生\n");
int i,j,sum=0;
for(i=0;i<10;i++)
{
sum=0;
for(j=0;j<5;j++)
{
if(stu[i].score[j]<60)
sum++;
}
if(sum>=2)
{
printf("学号:%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门成绩为%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
}
}

void good()
{
printf("\t优秀学生\n\n");
int i,j,n,k,sum=0;

for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
if(stu[i].score[j]<80) //有一门不足,就中止检查
break ;
}

if(j==5)
{
printf("学号%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门的成绩%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
else
if (stu[i].ave>85)
{
printf("学号%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门的成绩%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
}
/**
for(i=0;i<10;i++)
{
if(stu[i].ave>85)
{
printf("学号%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门的成绩%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
}
***/
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
利雅竹
2011-09-24 · TA获得超过238个赞
知道答主
回答量:582
采纳率:0%
帮助的人:241万
展开全部
for (i=0;tt[i]=!'\0';i++)
修改为
for (i=0;tt[i] !='\0';i++)
应该是你写忙了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stphen88yorker
2011-09-24
知道答主
回答量:9
采纳率:0%
帮助的人:4.2万
展开全部
#include<stdio.h>
struct STUDENT
{
char id[10];
int score[5];
double sum; //*这里增加一个总分,方便处理,录入时就完成
double ave; //*总分与平均分的计算
} stu[10];

void average();
void nopass();
void good();

void main()
{
int num=10,i,j;
for(i=0;i<num;i++)
{
printf("\t请输入第%d个学生的数据",i+1);
printf("\t学号:");
scanf("%s",stu[i].id);
stu[i].sum=0;
for(j=0;j<5;j++)
{
printf("\t第%d门课的成绩:",j+1);
scanf("%d",&stu[i].score[j]);
stu[i].sum += stu[i].score[j] ;
}
stu[i].ave= stu[i].sum/5 ;
}
average();
nopass();
good();
}

void average()
{
//int a=0,i; a必须是float,否则b=a/10就按整数除了
int i;
double a=0,b=0;
for(i=0;i<10;i++)
a=a+stu[i].score[0];
b=a/10;
printf("\t the math average score is :%f",b);
}

void nopass()
{
printf("不及格学生\n");
int i,j,sum=0;
for(i=0;i<10;i++)
{
sum=0;
for(j=0;j<5;j++)
{
if(stu[i].score[j]<60)
sum++;
}
if(sum>=2)
{
printf("学号:%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门成绩为%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
}
}

void good()
{
printf("\t优秀学生\n\n");
int i,j,sum=0;

for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
if(stu[i].score[j]<80) //有一门不足,就中止检查
break ;
}

if(j==5)
{
printf("学号%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门的成绩%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
else
if (stu[i].ave>85)
{
printf("学号%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门的成绩%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
}

for(i=0;i<10;i++)
{
if(stu[i].ave>85)
{
printf("学号%s\n",stu[i].id);
for(j=0;j<5;j++)
printf("第%d门的成绩%d\n",j+1,stu[i].score[j]);
printf("\t平均成绩%f\n",stu[i].ave);
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
那夜小0i
2011-09-23 · TA获得超过154个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:248万
展开全部
什么问题,我也不愿运行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式