★★求救→排序问题←★★ 急,在线等!!
[size=5]输入10个学生姓名、年龄、成绩,按分数高低把学生姓名、年龄、成绩按照1 姓名1 年龄1 成绩1
2 姓名2 年龄2 成绩2
的格式输出。我编写的程序代码能通过编译却不能输出,就连输入都有问题请高手帮忙指点。[/size]
代码如下:
#include<stdio.h>
#define N 10
void main()
{
int score[N],age[N],i,j,tempSCORE,tempAGE;
char ch[N],tempch;
for(i=0;i<N;i++)
{
printf("请输入学生姓名: ");
scanf("%c",&ch[i]);
printf("请输入%c年龄 ",ch[i]);
scanf("%d",&age[i]);
printf("请输入%c成绩 ",ch[i]);
scanf("%d",&score[i]);
}
for(j=1;j<N;j++)
for(i=0;i,4-j;i++)
if(score[i]<score[i+1])//将年龄、成绩和姓名分数按照分数的高低排列
{
tempSCORE=score[i];
score[i]=score[i+1];
score[i+1]=tempSCORE;
tempch=ch[i];
ch[i]=ch[i+1];
ch[i+1]=tempch;
tempAGE=age[i];
age[i]=age[i+1];
age[i+1]=tempAGE;
}
printf("按成绩高低排序:\n");
for(i=0;i<N;i++)
{
printf("%d ",i+1);
printf("%c ",ch[i]);
printf("%d ",age[i]);
printf("%d\n",score[i]);
}
}
[[it] 本帖最后由 bianchengfeng 于 2008-4-27 13:08 编辑 [/it]]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define N 3
void main()
{
int score[N],age[N],i,j,tempSCORE,tempAGE;
char ch[N],tempch;
for(i=0;i<N;i++)
{
printf("请输入学生姓名: ");
scanf("%c",&ch[i]);
fflush(stdin);
printf("请输入%c年龄 ",ch[i]);
scanf("%d",&age[i]);
fflush(stdin);
printf("请输入%c成绩 ",ch[i]);
scanf("%d",&score[i]);
fflush(stdin);
}
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(score[i]<score[i+1])//将年龄、成绩和姓名分数按照分数的高低排列
{
tempSCORE=score[i];
score[i]=score[i+1];
score[i+1]=tempSCORE;
tempch=ch[i];
ch[i]=ch[i+1];
ch[i+1]=tempch;
tempAGE=age[i];
age[i]=age[i+1];
age[i+1]=tempAGE;
}
printf("按成绩高低排序:\n");
for(i=0;i<N;i++)
{
printf("%d ",i+1);
printf("%c ",ch[i]);
printf("%d ",age[i]);
printf("%d\n",score[i]);
}
}
----------------解决方案--------------------------------------------------------
我调试的时候为了方便把N改成3了。
你在连续输入的时候应该用清除键盘缓冲区的命令,否则就出错了
还有就是那个循环那边错误比较严重。
自己再试试,我也是初学者,大家多多交流
----------------解决方案--------------------------------------------------------
可是这个程序调试也有问题啊?
顺便说一下,我用的是vc6.0编译的
----------------解决方案--------------------------------------------------------
哦,for 循环语句有个地方引用数组越界了
for(j=0;j<N;j++)
for(i=0;i<N-j-1;i++)
if(score[i]<score[i+1])//将年龄、成绩和姓名分数按照分数的高低排列
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
谢谢 ----------------解决方案--------------------------------------------------------