| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1274 人关注过本帖
标题:数组,选择法,编写一个按从小到大顺序
只看楼主 加入收藏
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
结帖率:80%
收藏
已结贴  问题点数:5 回复次数:8 
数组,选择法,编写一个按从小到大顺序
#include<stdio.h>
main()
{
    int a[10],i,j,t;
        a[j]=a[0];
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0;j<9;j++)
    {
        for(i=0;i<9;i++)
        {if(a[j]>a[i+1])
                t=a[i+1];
            a[i+1]=a[j];
            a[j]=t;}
            printf("%d",a[j]);
    }
    getch();
}

想问问这个程序那个错了
图片附件: 游客没有浏览图片的权限,请 登录注册
总是弹出这个
2016-11-17 10:44
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
收藏
得分:5 
#include<stdio.h>
main()
{
    int a[10],i,j,t;
        a[j]=a[0];   //数组和j都没有初始化。这个语句意图我没看明白。
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0;j<9;j++)
    {
        for(i=0;i<9;i++)
        {
            if(a[j]>a[i+1]) //if语句后面的语句不用{} 括起来,当然有问题。
                t=a[i+1];
            a[i+1]=a[j];
            a[j]=t;
        }
            printf("%d",a[j]);
    }
    getch();
}
2016-11-17 11:01
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
收藏
得分:0 
你是要做冒泡排序吗?
#include<stdio.h>
main()
{
    int a[] = {5,6,2,1,3,4,8,9,7,0,12};
    int i,j,tmp;;
    for(i = 1;i < sizeof(a)/sizeof(int); ++i) //排序次数是数字个数 - 1,所以初始化 i = 1, sizeof(a)/sizeof(int)计算数组内数字的个数。
     for(j = 0;j < sizeof(a)/sizeof(int) - i;++j) //每轮对比的次数为 sizeof(a)/sizeof(int),避免访问到a之外的内存。
     {
         if(a[j] > a[j + 1])  //交换位置
         {
             tmp = a[j];
             a[j] = a[j + 1];
             a[j + 1] = tmp;
         }
     }
    for(i = 0;i < sizeof(a)/sizeof(int);++i) //输出结果
      printf("\n%d ",a[i]);
}
2016-11-17 11:14
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
收藏
得分:0 
回复 2楼 EdmundDantes
#include<stdio.h>
main()
{
    int a[10];
    int i,j,t;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0;j<9;j++)
    {
        for(i=0;i<9;i++)
            if(a[j]>a[i+1])
            {
                t=a[i+1];
                a[i+1]=a[j];
                a[j]=t;        
            }   
    }
    for(i=0;i<10;i++)
    {    printf("%d",a[i]);
    printf(" ");}
    getch();
}

还是不对,输出这样
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-11-17 11:14
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
收藏
得分:0 
我是用选择法做排序的
2016-11-17 11:16
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
收藏
得分:0 
哦,那我误会了,我以为你要冒泡排呢,选择我还没学,我去补一下。
2016-11-17 11:18
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
收藏
得分:0 
好吧,,还是谢谢了,,还有人会吗
2016-11-17 11:23
EdmundDantes
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:173
注 册:2016-11-9
收藏
得分:0 
#include<stdio.h>
int main(void)
{
    int a[] = {1,3,2,4,0};
    int i,j,min,t;
    for(i=0;i< 5 -1;i++)
    {
        min=i;//查找最小值
        for(j=i+1;j<5;j++)
          if(a[min]>a[j])
            min=j;//交换
        if(min!=i)
        {
            t=a[min];
            a[min]=a[i];
            a[i]=t;
        }
    }
    for(i = 0;i < 5;++i)
     printf("%d ",a[i]);
    return 0;
}
你看这个
2016-11-17 11:36
星i辰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-11-1
收藏
得分:0 
我已经找到错误了 ,,不过还是谢了
2016-11-17 17:10
快速回复:数组,选择法,编写一个按从小到大顺序
数据加载中...
 
   



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

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