| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 319 人关注过本帖
标题:帮忙解决数组排序问题。
只看楼主 加入收藏
wwfdzh2012
Rank: 2
等 级:论坛游民
帖 子:88
专家分:27
注 册:2012-11-22
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:7 
帮忙解决数组排序问题。
程序代码:
#include<stdio.h>
void main()
{
    int a[5],i,j,t;
    printf("请输入5个学生的成绩");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    for(i=0;i<=4;i++)
    {
        for(j=0;j<=4-i;j++)
        {
            if(a[i]>a[i+1])
            {
            t=a[i],a[i]=a[i+1],a[i+1]=t;
            }
        }
    }
    printf("最高分为%d,最低分为%d\n",a[4],a[0]);

}
题目为输入5个学生的成绩,然后输出最高分数和最低分数。
我写的程序升序输入没问题,但是降序输入就出错了,比如输入5 4 3 2 1,最小值会输出4
请大家看看是哪里出问题了。。。
搜索更多相关主题的帖子: color 
2012-12-08 20:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
逻辑比较乱吧
程序代码:
#include<stdio.h>
void main()
{
    int a[5],i,j,t;
    printf("请输入5个学生的成绩");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    for(i=0;i<5;i++)
    {
        for(j=i+1;j<5;j++)
        {
            if(a[i]>a[j])
            {
            t=a[i],a[i]=a[j],a[j]=t;
            }
        }
    }
    printf("最高分为%d,最低分为%d\n",a[4],a[0]);

}


DO IT YOURSELF !
2012-12-08 20:45
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:5 
程序代码:
#include<stdio.h>
void main()
{
    int a[5],i,j,t;
    printf("请输入5个学生的成绩");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    for(i=0;i<=3;i++) //外循环只要到3就可以了,如果到4最后就是自己与自己比较,内循环从i+1开始也是避免与自己比较。
    {
        for(j=i+1;j<=4;j++)
        {
            if(a[i]>a[j])
            {
            t=a[i],a[i]=a[j],a[j]=t;
            }
        }
    }
    printf("最高分为%d,最低分为%d\n",a[4],a[0]);

}



[ 本帖最后由 heroinearth 于 2012-12-8 23:28 编辑 ]
2012-12-08 23:25
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:5 
#include<stdio.h>
void main()
{
    int a[5],i,j,t;
    printf("请输入5个学生的成绩");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);

    for(i=0;i<=4;i++)
    {
        if(a[0]<a[i])
          a[0]=a[i];
    }
    printf("最高分为%d",a[0]);
    for(i=0;i<=4;i++)
    {
        if(a[0]>a[i])
          a[0]=a[i];

      
        }
    printf("最低分为%d\n",a[0]);

}
来个简单的
2012-12-08 23:52
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
for(j=0;j<=4-i;j++)
      你的这句没有起到任何作用,,

  for(i=0;i<=4;i++)
 if(a[i]>a[i+1])
当i=4时,a【5】是什么呢?



#include<stdio.h>
void main()
{
    int a[5],i,j,t;
    printf("请输入5个学生的成绩");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);
    for(i=0;i<4;i++)
    {
      
         if(a[i]>a[i+1])
            {
            t=a[i],a[i]=a[i+1],a[i+1]=t;
            }
        
    }
    printf("最高分为%d,最低分为%d\n",a[4],a[0]);

}
2012-12-09 00:17
稀魂
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2012-12-7
收藏
得分:5 
2012-12-09 00:24
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
不好意思,5楼的程序搞错了
2012-12-09 00:31
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
#include<stdio.h>
void main()
{
    int a[5],i,j,t,k;
    printf("请输入5个学生的成绩");
    for(i=0;i<=4;i++)
        scanf("%d",&a[i]);

    for(i=0;i<4;i++)
    {k=0;
    for(j=0;j<4-i;j++){

         if(a[k]>a[k+1])
            {
            t=a[k],a[k]=a[k+1],a[k+1]=t;
            }
         k++;
    }
    }
    printf("最高分为%d,最低分为%d\n",a[4],a[0]);

}     啊,应该对了,
但是还
请高手化简一下我的程序
2012-12-09 00:40
快速回复:帮忙解决数组排序问题。
数据加载中...
 
   



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

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