当前位置: 代码迷 >> C语言 >> ★★求救→排序问题←★★ 急,在线等!!
  详细解决方案

★★求救→排序问题←★★ 急,在线等!!

热度:183   发布时间:2008-04-27 11:39:08.0
★★求救→排序问题←★★ 急,在线等!!
[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]]
搜索更多相关的解决方案: 姓名  年龄  score  void  

----------------解决方案--------------------------------------------------------
#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# 的帖子
谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案