| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 650 人关注过本帖
标题:有个程序不知道为什么编译不到想要的结果,求指导
只看楼主 加入收藏
zhenaaaa
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-25
收藏
 问题点数:0 回复次数:6 
有个程序不知道为什么编译不到想要的结果,求指导
程序代码:
此程序是求五位数的位数,相应位上的数和把该五位数逆序输出
但是我编完后发现我输入五位数的都可以,但小于五位数的就不可以了
若输入12,会有ten-thousand=1,正常应该是0才对,只有这里有问题,不过就是没法知道哪里错,求指导,谢谢
程序如下:
# include<stdio.h>
int main()
{
    int one,ten,hundred,thousand,ten_thousand,x,place;
    printf("enter a number(less 5 digit)\t");
    scanf("%d",&x);
    if(x>99999||x<=0) printf("enter a wrong number, enter again please\n");
    else
    {
        if(x>9999) place=5;
         else if(x>999) place=4;
              else if(x>99) place=3;
                   else if(x>9) place=2;
                        else place=1;
        printf("digit=%d\n",place);
        printf("the number in the digit:");
        one=x%10;
        ten=(x-one)%100/10;
        hundred=(x-ten*10-one)%1000/100;
        thousand=(x-hundred*100-ten*10-one)%10000/1000;
        ten_thousand=(x-thousand*1000-hundred*100-ten*10-one)/10000;
        printf("one=%d,ten=%d,hundred=%d,thousand=%d,ten-tousand=%d\n",one,ten,hundred,thousand,ten-thousand);
        switch(place)
        {
        case(1):printf("%d\n",one);break;
        case(2):printf("%d%d\n",one,ten);break;
        case(3):printf("%d%d%d\n",one,ten,hundred);break;
        case(4):printf("%d%d%d%d\n",one,ten,hundred,thousand);break;
        case(5):printf("%d%d%d%d%d\n",one,ten,hundred,thousand,ten-thousand);break;
        }
    }
    return 0;
}


[ 本帖最后由 zhenaaaa 于 2013-5-2 22:49 编辑 ]
2013-04-25 17:54
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:0 
不管你输入几位数
程序代码:
if(x>9999) place=5;
         else if(x>999) place=4;
              else if(x>99) place=3;
                   else if(x>9) place=2;
                        else place=1;
        printf("digit=%d\n",place);
        printf("the number in the digit:");
        one=x%10;
        ten=(x-one)%100/10;
        hundred=(x-ten*10-one)%1000/100;
        thousand=(x-hundred*100-ten*10-one)%10000/1000;
        ten_thousand=(x-thousand*1000-hundred*100-ten*10-one)/10000;
        printf("one=%d,ten=%d,hundred=%d,thousand=%d,ten-tousand=%d\n",one,ten,hundred,thousand,ten-thousand);

这一段都要计算的,这不合理,要放到相应的case里面
2013-04-25 19:39
zhenaaaa
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-25
收藏
得分:0 
这样是比较完善,不过我主要问题不是这个,主要是输入12,会输出万位是1这样的问题。
我现在已经发现是哪里错了,就是输出的那个ten-thousand应该改为ten_thousand,谢谢指导
 printf("one=%d,ten=%d,hundred=%d,thousand=%d,ten-tousand=%d\n",one,ten,hundred,thousand,ten-thousand);



2013-05-02 22:40
zhenaaaa
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-25
收藏
得分:0 
回复 2楼 apull
好吧,这个问题比较2,,请问如何结贴的,已经找了好久都没看到结贴的按钮,谢谢
2013-05-02 23:00
zhenaaaa
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-25
收藏
得分:0 
回复 3楼 zhenaaaa
这样是比较完善,不过我主要问题不是这个,主要是输入12,会输出万位是1这样的问题。
 我现在已经发现是哪里错了,就是输出的那个ten-thousand应该改为ten_thousand,谢谢指导
程序代码:

 printf("one=%d,ten=%d,hundred=%d,thousand=%d,ten-tousand=%d\n",one,ten,hundred,thousand,ten-thousand);
2013-05-02 23:01
zhenaaaa
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-25
收藏
得分:0 
回复 2楼 apull
这样是比较完善,不过我主要问题不是这个,主要是输入12,会输出万位是1这样的问题。
 我现在已经发现是哪里错了,就是输出的那个ten-thousand应该改为ten_thousand,谢谢指导
 程序代码:
 
printf("one=%d,ten=%d,hundred=%d,thousand=%d,ten-tousand=%d\n",one,ten,hundred,thousand,ten-thousand);
 
2013-05-02 23:02
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
# include<stdio.h>
#include<math.h>

int main()
{
    int one,ten,hundred,thousand,ten_thousand,x,place;
    printf("enter a number(less 5 digit)\n");
    scanf("%d",&x);
    if(x>99999||x<=0)
        printf("enter a wrong number, enter again please\n");
    else
    {
        if(x>9999) place=5;
         else if(x>999) place=4;
              else if(x>99) place=3;
                   else if(x>9) place=2;
                        else place=1;
                        printf("digit=%d\n",place);
    }
    printf("the number in the digit:");
    one=x%10;
    ten=(x-one)%100/10;
    hundred=(x-ten*10-one)%1000/100;
    thousand=(x-hundred*100-ten*10-one)%10000/1000;
    ten_thousand=(x-thousand*1000-hundred*100-ten*10-one)/10000;
    printf("one=%d,ten=%d,hundred=%d,thousand=%d,ten_tousand=%d\n",one,ten,hundred,thousand,ten_thousand);
    switch(place)
    {
        case(1):printf("%d\n",one);break;
        case(2):printf("%d%d\n",one,ten);break;
        case(3):printf("%d%d%d\n",one,ten,hundred);break;
        case(4):printf("%d%d%d%d\n",one,ten,hundred,thousand);break;
        case(5):printf("%d%d%d%d%d\n",one,ten,hundred,thousand,ten_thousand);break;
    }
    return 0;
}
稍微调整了下
2013-05-02 23:30
快速回复:有个程序不知道为什么编译不到想要的结果,求指导
数据加载中...
 
   



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

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