讨论/题目交流/哪位大哥帮我看一下这个程序结果会出错啊/
哪位大哥帮我看一下这个程序结果会出错啊

#include<stdio.h>
#define stnum 5
struct stuinf{
int id;
int score;
}stu[stnum];
struct stuinf *p[stnum];
int main()
{
struct stuinf *ptemp;
struct stuinf stu[stnum]={{"1,435"},{2,864},{3,6425},{4,594},{5,742}};
struct stuinf *p[stnum];
int i,j,k,n,sum=0;
for(int i=j=0;i<=stnum-1;i++,j++)
{
p[i]=&stu[j];
sum+=stu[i].score;
}
printf("\n");
for(i=0;i<=stnum-1;i++)
{
int max=i;
for(int q=i+1;q<=stnum-1;q++)
if(p[max]->score<p[q]->score)
max=q;
if(max!=i)
{
ptemp=p[max];
p[max]=p[i];
p[i]=ptemp;
}
}
for(i=0;i<=stnum-1;i++)
printf("%d,%d\n",(p[i]).id,p[i]->score);
printf("average=%.2f\n",1.0
sum/stnum);
}
结果为:
3,6425
2,864
5,742
4,594
1989171240,0
average=1725.00

展开讨论

为啥你这代码能有输出?我感觉连编译都过不去啊,全局变量局部变量重名,i被声明两次,结构体里的两个变量都是整数,stu初始化的时候有字符串带入,还数量也不匹配

展开全部 2 讨论