| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 967 人关注过本帖
标题:这个代码有啥问题?弄了一晚上,脑袋有点抽筋。
只看楼主 加入收藏
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
结帖率:100%
收藏
 问题点数:0 回复次数:16 
这个代码有啥问题?弄了一晚上,脑袋有点抽筋。
呵呵呵呵呵呵呵,我是新手,高手看了偷偷笑就行了。
题目如下:

给一个不多于五位的正整数,要求:1,求出它是几位数。2,分别输出每一位数字。3,按逆序输出各位数字,例如原为234,后为432.

我的代码如下。
#include"stdio.h"
#include"stdlib.h"
int main()
{
    int a,b,c,d,e;
    long num;
    scanf("%d",&num);   
    if(num/100000>1)
    {
        e=num%10;
        d=((num%100)-e)/10;
        c=((num%1000)-(d*10+e))/100;
        b=((num%10000)-(c*100+d*10+e))/1000;
        a=(num-(b *1000+c*100+d*10+e))/10000;
        printf("have 6 numbers. it is %d%d%d%d%d.\n",a,b,c,d,e);
        printf("%d%d%d%d%d",e,d,c,b,a);
    }
    else if(num/10000>1)
    {
            e=num%10;
        d=((num%100)-e)/10;
        c=((num%1000)-(d*10+e))/100;
        b=((num%10000)-(c*100+d*10+e))/1000;
        a=(num-(b *1000+c*100+d*10+e))/10000;
            printf("have 5 numbers. it is %d%d%d%d%d.\n",b,c,d,e);
        printf("%d%d%d%d",e,d,c,b);
    }
    else if(num/1000>1)
       {
        e=num%10;
        d=((num%100)-e)/10;
        c=((num%1000)-(d*10+e))/100;
        b=(num-(c*100+d*10+e))/1000;
        printf("have 4 numbers. it is %d%d%d%d%d.\n",c,d,e);
                printf("%d%d%d%d",e,d,c);
    }
    else if(num/100>1)
    {
           e=num%10;
           d=((num%100)-e)/10;
           c=(num-(d*10+e))/100;
           printf("have 3 numbers. it is %d%d%d%d%d.\n",c,d,e);
           printf("%d%d%d%d",e,d,c);
    }
    else if(num/10>1)
    {
           e=num%10;
           d=(num-e)/10;
           printf("have 2 numbers. it is %d%d%d%d%d.\n",d,e);
           printf("%d%d",e,d);
    }
            
               
        
        
    system("pause");
}
搜索更多相关主题的帖子: 数字 include 正整数 
2011-09-02 22:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
看看书,再弄几天,就有进步了。

授人以渔,不授人以鱼。
2011-09-02 22:42
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 2楼 TonyDeng
哈哈,谢谢你的鼓励,可是我想问一下,我的这种方法是不是太麻烦了一点?你有什么更简便的方法吗?
2011-09-02 22:51
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int data,cnt=0,temp,i;
    printf("please input data(1-99999):");
    scanf("%d",&data);
    if(data/100000||data<0)
    {
        printf("input error\n");
        return 0;
    }
    temp=data;
    while(temp)
    {
        cnt++;
        temp/=10;
    }
    printf("The data has %d numbers:",cnt);
    for(i=cnt;i!=0;--i)
    {
        printf("%d  ",(int)(data/pow(10,i-1))%10);
    }
    printf("\nAnd reversed:");
    while(data)
    {
        printf("%d",data%10);
        data/=10;
    }
    printf("\n");
    return 1;
}


[ 本帖最后由 czsbc 于 2011-9-3 00:29 编辑 ]
2011-09-03 00:25
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
这个用字符串很简单的。
2011-09-03 08:59
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 4楼 czsbc
temp=data;
    while(temp)
    {
        cnt++;
        temp/=10;
    }

请问这段是什么意思?
2011-09-03 11:25
funmain
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-3
收藏
得分:0 
temp/=10 就是:temp = temp/10
没循环一次:cnt就加一,就知道temp是几位数了
2011-09-03 12:11
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 7楼 funmain
可是这个循环不是无限的吗?因为temp不管怎样除10都不可能为0.那cnt不是无限自加1下去了?
2011-09-03 12:39
xd1103121524
Rank: 2
等 级:论坛游民
帖 子:27
专家分:49
注 册:2011-8-29
收藏
得分:0 
#include<stdio.h>
#include<string.h>
int main()
{
    int a;
    char b[10];

    int len;
    int i;


    printf("please enter a\n");
    scanf("%d",&a);

    sprintf(b,"%d",a);
    len=strlen(b);

    for(i=1;i<=len;i++)
        printf("%c",b[i-1]);
 
    printf("\n");
    printf("%d\n",len);


    for(i=1;i<=len;i++)
        printf("%c",b[len-i]);

    printf("\n");
   
    return 0;

  }
2011-09-03 12:48
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:0 
回复 8楼 将是高手
int类型 /int类型 得到的数还是int 类型。
比如5/10就等于0了,这样不就可以结束循环了
2011-09-03 13:22
快速回复:这个代码有啥问题?弄了一晚上,脑袋有点抽筋。
数据加载中...
 
   



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

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