三国乱世远征视频:看这段c语言代码,哪里错了?

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 04:55:21
#include "stdio.h"

struct awp
{
char s[10];
int x,y;
float f,h;
}stud[5];

void main()
{
struct awp;
int i,t;
float k;
for (i=0;i<5;i++)
{
scanf("%s%d%d",stud[i].s,&stud[i].x,&stud[i].y);
stud[i].f=(stud[i].x+stud[i].y)/2.0;
}
for (i=0;i<5;i++)
for (t=0;t<5;t++)
if (stud[t].f>stud[t+1].f)
{
k=stud[t].f;
stud[t].f=stud[t+1].f;
stud[t+1].f=k;
}
for (t=0;t<5;t++)
printf("%f",stud[t].f);
}

for (i=0;i<5;i++)
for (t=0;t<5;t++)
if (stud[t].f>stud[t+1].f)
{
k=stud[t].f;
stud[t].f=stud[t+1].f;
stud[t+1].f=k;
}
下标越界在stud[t+1]
如果这段程序只是在排序的话,逻辑也错
五个数据只需要排4次
i for每走完一次就有一个数据是排好的(最后一个数)
内循环就不需要再对他处理了。

for (i=0;i<5;i++)改为for(i=0;i<4;i++);
for (t=0;t<5;t++)改为for(t=0;t<(4-i);t++);