| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:★★求救→排序问题←★★ 急,在线等!!
只看楼主 加入收藏
bianchengfeng
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-3-1
收藏
 问题点数:0 回复次数:5 
★★求救→排序问题←★★ 急,在线等!!
[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 
2008-04-27 11:39
xingkid
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-27
收藏
得分:0 
#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]);

    }


   
}
2008-04-27 13:24
xingkid
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-27
收藏
得分:0 
我调试的时候为了方便把N改成3了。
你在连续输入的时候应该用清除键盘缓冲区的命令,否则就出错了
还有就是那个循环那边错误比较严重。
自己再试试,我也是初学者,大家多多交流
2008-04-27 13:28
bianchengfeng
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-3-1
收藏
得分:0 
可是这个程序调试也有问题啊?
顺便说一下,我用的是vc6.0编译的
2008-04-27 13:36
xingkid
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-27
收藏
得分:0 
哦,for 循环语句有个地方引用数组越界了
    for(j=0;j<N;j++)
        for(i=0;i<N-j-1;i++)
            if(score[i]<score[i+1])//将年龄、成绩和姓名分数按照分数的高低排列
2008-04-27 13:49
bianchengfeng
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-3-1
收藏
得分:0 
回复 5# 的帖子
谢谢
2008-04-27 14:01
快速回复:★★求救→排序问题←★★ 急,在线等!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035995 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved