| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:我不说话丶写代码丶 有错。。求解。。。
只看楼主 加入收藏
wenwen1314
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2011-9-25
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:6 
我不说话丶写代码丶 有错。。求解。。。
/*1丶已知有十个数丶存在a数组中,求出千位数的数加上百位数的数等于十位数的数,
把满足此条件的数存入b数组中,把存入b数组中的数按从小到大的顺序排列:
*/
#include <stdio.h>
void main()
{
    int i,j,k;
    int temp;
    int b[10];
    int a[10]={1230,4560,7894,5421,4878,4230,4575,8744,7892,5679};
    int qw,bw,sw;
    for (i=0;i<=9;i++)
    {
        qw=a[i]/1000;
        bw=a[i]%1000/100;
        sw=a[i]%1000%100/10;
        if (qw+bw==sw)
        {
             b[i]=a[i];
        }
    }
    for (i=0;i<=9;i++)
    {
        k = i;
        for (j=i+1;j<=9;j++)
        {
            if (b[k]>b[j])
                k = j;
        }
        if (k!=i)
        {
            temp=b[i];b[i]=b[k];b[k]=temp;
        }
    }
    for (i=0;i<=9;i++)
    {
        printf("%d ",b[i]);
    }
}
        结果丶输出的答案非常匪夷所思。      求解啊   。。   
搜索更多相关主题的帖子: 1230 include 
2011-11-03 18:32
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:5 
数组初始为0 ,10个数中只有一个满足条件,最后你排序后就到最后,没有什么问题
2011-11-03 18:45
wenwen1314
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2011-9-25
收藏
得分:0 
回复 2楼 heroinearth
可是答案并非我想要的?       ? 那你运行是个什么情况?
2011-11-03 18:47
wenwen1314
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2011-9-25
收藏
得分:0 
回复 2楼 heroinearth
①? 好像是我想错了。。我把4+5想成6了。。。唉。。。  
2011-11-03 18:49
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:5 
0 0 0 0 0 0 0 0 0 1230
2011-11-03 18:52
幻影逍遥
Rank: 2
等 级:论坛游民
帖 子:23
专家分:24
注 册:2011-10-31
收藏
得分:5 
  int b[10];
应该是你没赋初值。只是赋值后,会多好几个0.
int b[10]={0};
还有,
 if (qw+bw==sw)
        {
             t=0;
             b[t]=a[i];
             t++;
        }
我觉得这样写合适一点.
2011-11-03 18:58
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:5 
#include <stdio.h>
void main()
{
    int i,j,k,bi=0;
    int temp;
    int b[10];
    int a[10]={1230,4560,7894,5421,4878,4260,4575,8744,7892,5679};
    int qw,bw,sw;
    for (i=0;i<=9;i++)
    {
        qw=a[i]/1000;
        bw=a[i]%1000/100;
        sw=a[i]%100/10;
        if (qw+bw==sw)
        {
             b[bi++]=a[i];
        }
    }

    for (i=0;i<bi;i++)
    {
        k = i;
        for (j=i+1;j<bi;j++)
        {
            if (b[k]>b[j])
                k = j;
        }
        if (k!=i)
        {
            temp=b[i];b[i]=b[k];b[k]=temp;
        }
    }

    for (i=0;i<bi;i++)
    {
        printf("%d ",b[i]);
    }
    getch();
}

这个是我给你改的程序,增加了一个变量bi,用来统计输入b数组数字的数量。
然后把a数组中的一个数字改了下,以便看到排序的效果。
一开始就给了bi一个初值0,b[bi++]=a[i];这里的bi++是用来给bi自增,从而移动b数组的指针。

还有就是gw的计算不需要这么复杂,直接除100求余不就完了么。
最后输出b数组的for循环,只要输出前面的bi个就行了,后面都是0,就不要输出了吧

[ 本帖最后由 luchar 于 2011-11-3 19:14 编辑 ]
2011-11-03 19:11
快速回复:我不说话丶写代码丶 有错。。求解。。。
数据加载中...
 
   



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

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