帮我看看这个吧,编译都通过了运行后输入成绩和姓名就一直让我输入
我这个是一个学生成绩排序程序,改了一天才改的可以运行。但是有些问题
#include <stdio.h>
#define n 10
typedef struct
{char name[8];
int score;
}stu;
stu *R;
main()
{int num,i,j,max,temp;
stu *R;
printf("\n please input score:\n");
for(i=0;i<n;i++)
{printf("name:\n");
scanf("%s",&R[i].name);
scanf("%4d",&R[i].score);
}
num=num-1;
for(i=0;i<n;i++)
{max=i;
for(j=i+1;j<n;j++)
if(R[j].score>R[max].score)
max=j;
if(max!=i)
{temp=R[max].score;
R[max].score=R[i].score;
R[i].score=temp;
}
if((i>0)&&(R[i].score<R[i-1].score))
num=num+1;
printf("%4d%s%4d",num,R[i].name,R[i].score);
}
return 0;
}
----------------解决方案--------------------------------------------------------
有好多的逻辑错误,,格式不好,,
----------------解决方案--------------------------------------------------------
我作了修改,你试试看:
#include <stdio.h>
#define n 10
struct SCORE
{char name[8];
int score;
int num;
};
main()
{int i,j,temp,max;
char name;
struct SCORE R[n];
printf("\n please input score:\n");
for(i=0;i<n;i++)
{printf("name:\n");
scanf("%s",&R[i].name);
scanf("%4d",&R[i].score);
R[i].num=i+1;
}
for(i=0;i<n;i++)
{
max=i;
for(j=i+1;j<n;j++)
if(R[j].score>R[max].score)
max=j;
if(i!=max)
{
temp=R[i].score;name=R[i].name
R[i].score=R[max].score;R[i].name=R[max].name;R[i].num=i+1;
R[max].score=temp; R[max].name=name;
}
printf("%4d%s%4d",R[i].num,R[i].name,R[i].score);
}
return 0;
}
----------------解决方案--------------------------------------------------------
有些地方少了分号,还有for 里面的
{
}
要注意```
----------------解决方案--------------------------------------------------------
还有一个是字符串的对拷应该用strcpy而不能直接用=号
----------------解决方案--------------------------------------------------------
多谢执教出血者-〉我
----------------解决方案--------------------------------------------------------
没有注意!!!!!!!!!!
谢谢!!!!!!!!!1
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------