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

2024-11-01 03:32:22
推荐回答(4个)
回答(1):

优化了一下你的程序代码,你再试试
#include
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 {
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);
}
}
***/
}

回答(2):

for (i=0;tt[i]=!'\0';i++)
修改为
for (i=0;tt[i] !='\0';i++)
应该是你写忙了。

回答(3):

#include
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 {
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);
}
}

}

回答(4):

什么问题,我也不愿运行了