| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖
标题:数据的交换输出
只看楼主 加入收藏
ll1512121699
Rank: 1
来 自:成都
等 级:新手上路
帖 子:27
专家分:2
注 册:2013-3-21
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:7 
数据的交换输出
#include<stdio.h>
int main()
{
    int n,a[200],min,minpos,temp,i;
    while(1)
    {
        scanf("%d",&n);
        if(n==0)
            break;
        else
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
            min=a[0];
            minpos=0;
            for(i=0;i<n;i++)
            {
                if(a[i]<min)
                {
                    min=a[i];
                    minpos=i;
                }
            }
            temp=a[i];  
            a[i]=a[0];
            a[0]=temp;
            for(i=0;i<n;i++)
            {
                 printf("%d ",a[i]);
            }
                printf("\n");
    }
    return 0;
            
}
很想知道我的这个程序哪里错了?为什么输出的第一个数是乱码啊。求帮助。
搜索更多相关主题的帖子: include 
2013-03-31 20:41
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:6 
回复 楼主 ll1512121699
程序代码:
#include<stdio.h>

 int main()

 {
     int n,a[200],min,minpos,temp,i;
     while(1)
     {
         scanf("%d",&n);
         if(n==0)
             break;
         else
         for(i=0;i<n;i++)
         {
             scanf("%d",&a[i]);
         }
             min=a[0];
             minpos=0;
             for(i=0;i<n;i++) //这里你已经自增了
             {
                 if(a[i]<min)
                 {
                     min=a[i];
                     minpos=i;
                 }
             }
             temp=a[i]; //这里你用的a[i]已经溢出了数组了
             a[i]=a[0];
             a[0]=temp;
             for(i=0;i<n;i++)
             {
                  printf("%d ",a[i]);
             }
                 printf("\n");
     }
     return 0;
           

 }
2013-03-31 20:55
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
估计是插入排序法,先查查书吧

www.qunxingw.wang
2013-03-31 21:57
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:6 
程序代码:
#include<stdio.h>
int main()
{
    int n,a[200],min,minpos,temp,i;
    while(1)
    {
        scanf("%d",&n);
        if(n==0)
            break;
        else
            for(i=0;i<n;i++)
            {
                scanf("%d",&a[i]);
            }
            
            
            for(i=0;i<n;i++)
            {
                min=a[i];
                minpos=i;
            for(int j=i+1; j<n; j++)
                if(a[j]<min)    
                    minpos=j;
                
                
                temp=a[i];  
                a[i]=a[minpos];
                a[minpos]=temp;
            }
            for(i=0;i<n;i++)
            {
                printf("%d ",a[i]);
            }
            printf("\n");
    }
    return 0;
    
}

www.qunxingw.wang
2013-03-31 22:26
qwe885167759
Rank: 4
等 级:业余侠客
威 望:5
帖 子:148
专家分:259
注 册:2013-3-12
收藏
得分:0 
这个是打靶
法吧。

我本楚狂人,凤歌笑孔丘
2013-03-31 22:37
qwe885167759
Rank: 4
等 级:业余侠客
威 望:5
帖 子:148
专家分:259
注 册:2013-3-12
收藏
得分:2 
同意二楼,实际上输出的始值为a[1]不是a[0]

我本楚狂人,凤歌笑孔丘
2013-03-31 22:40
第二周杰伦
Rank: 2
等 级:论坛游民
帖 子:55
专家分:20
注 册:2013-3-23
收藏
得分:6 
程序代码:
#include <stdio.h>
main()
{
    int a[200],i,n,temp,min,minpos;
    while(1)
    {
        scanf("%d",&n);
        if(n==0)
            break;
        else
            for(i=0;i<n;i++)
                scanf("%d",&a[i]);
        min=a[0];
        minpos=0;
        for(i=0;i<n;i++)
        {
            if(a[i]<min)
            {
                min=a[i];
                minpos=i;
            }
        }
        temp=a[0];
        a[0]=a[minpos];
        a[minpos]=temp;
        for(i=0;i<n;i++)
            printf("%d ",a[i]);
        printf("\n");

   
    }


}
亲,貌似你这个程序是想实现这样的功能:找出一个数组中数值最小的元素,然后将它与该数组中第一个元素进行交换,然后输出数组中个元素?
输出乱码的原因就是2楼给你指点的那样。
            temp=a[i];  
            a[i]=a[0];
            a[0]=temp;
而你上面的三条交换语句,是将a[0]的值与一个溢出后未知的进行交换,所以才会出现乱码。正确的做法是你每次比较之后,总是将较小元素的脚标赋给变量“minpos”,
那么经过循环之后,脚标的值应该是数组中最小元素的下标,那么,你最终交换时,只需将a[0]与脚标最小的元素交换就行了。

图片附件: 游客没有浏览图片的权限,请 登录注册
我是新手,很多地方也不懂。互相学习。
2013-03-31 22:42
ll1512121699
Rank: 1
来 自:成都
等 级:新手上路
帖 子:27
专家分:2
注 册:2013-3-21
收藏
得分:0 
非常感谢大家的帮助,经过你们的指点,我已经把我的程序改对了。以后还请多多关照!

坚持!永远坚持……
2013-04-01 23:23
快速回复:数据的交换输出
数据加载中...
 
   



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

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