| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 925 人关注过本帖
标题:逆序数字。解决不了输入 210,输出 012 啊。。我输出的是 12.
只看楼主 加入收藏
doudou74321
Rank: 2
等 级:论坛游民
帖 子:70
专家分:72
注 册:2014-11-5
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:12 
逆序数字。解决不了输入 210,输出 012 啊。。我输出的是 12.
#include<stdio.h>
int main()
{
    int i,a=0,b=0,c=0;
    scanf("%d",&a);
    b=a;
    while(b)//b=0时跳出
    {
        c=c*10+b%10;
        b/=10;
    }

    printf("%d\n",c);
    return 0;
   
}
题目是这个
Description
 输入一个int型整数,将其逆序输出,每个数字后有一个空格。
Input
 输入一个整数n,你可以假设n在int范围内
Output
 将n按其逆序输出,每个数字后有一个空格,输出占一行。例如,输入12354,输出4 5 3 2 1
Sample Input
12354
Sample Output
4 5 3 2 1
搜索更多相关主题的帖子: return 
2014-11-22 16:51
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
整体输出如果首位是0是不会显示出的

一片落叶掉进了回忆的流年。
2014-11-22 17:24
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:20 
即便你能输出012,也不符合题目要求,因为题目要求每个数字后有一个空格。所以这题只需要循环mod 10求余,然后将余数依次输出就可以了。

[qq]949654600[/qq]
2014-11-22 17:24
doudou74321
Rank: 2
等 级:论坛游民
帖 子:70
专家分:72
注 册:2014-11-5
收藏
得分:0 
回复 3 楼 yahwei
嗯,谢了哥们,我知道怎么写了。。谢谢啦~~~
2014-11-22 17:41
doudou74321
Rank: 2
等 级:论坛游民
帖 子:70
专家分:72
注 册:2014-11-5
收藏
得分:0 
回复 3 楼 yahwei
如果是输入210  ,输出2  1  0 呢?正序输出
2014-11-22 17:45
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int x, i;
    int z=(1<<(sizeof(int)*8-1))-1;
    char str[999];
    char *p;
    itoa(z, str, 10);
    printf("可转换字符串最大长度为: %d,且不能大于%d\n", strlen(str), z);
    p = malloc((strlen(str)+1)*sizeof(char));
    printf("请输入要逆序输出的正整数:\n");
    scanf("%d", &x);
    itoa(x, p, 10);
    printf("要转换字符串长度为: %d\n", strlen(p));
    p = realloc(p,(strlen(p))*sizeof(char));
    printf("逆序输出如下:\n");
    for (i=strlen(p)-1; i>=0; i--)
    {
        printf("%c ", *(p+i));
    }
    printf("\n");
    printf("正序输出如下:\n");
    for (i=0; i<strlen(p); i++)
    {
        printf("%c ", *(p+i));
    }
    printf("\n");
    free(p);
    return 0;
}


[ 本帖最后由 longwu9t 于 2014-11-22 19:25 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-11-22 19:17
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 5 楼 doudou74321
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int x,k;
    scanf("%d",&x);

    k=(int)log10(x)+1;
    k--;
    while(k>=0){
     printf("%d ",(x/(int)(pow(10,(double)k)))%10);
     k--;
     }


     return 0;
     }

2014-11-22 19:29
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
程序代码:
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
    int INTMAX=(1<<(sizeof(int)*8-1))-1;
    char str[999];
    int x,i,j=0,k;
    itoa(INTMAX, str, 10);
    printf("可转换字符串最大长度为: %d,且不能大于%d\n", strlen(str), INTMAX);
    printf("请输入要逆序输出的正整数:\n");
    scanf("%d",&x);

    i=k=(int)log10(x);
    printf("输入整数的位数为:%d\n", k+1);
    printf("正序输出如下:\n");
    while(k>=0)
    {
     printf("%d ",(int)(x/pow(10, k))%10);
     k--;
    }
    printf("\n逆序输出如下:\n");
    while(j<=i)
    {
     printf("%d ",(int)(x/pow(10, j))%10);
     j++;
    }
    printf("\n");
    
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2014-11-22 19:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不要把简单问题复杂化。平时怎么求出一个整数每一位的,现在也一样做法即可。

授人以渔,不授人以鱼。
2014-11-22 20:04
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
只是练习,呵呵,初学,请见谅。

Only the Code Tells the Truth             K.I.S.S
2014-11-22 20:06
快速回复:逆序数字。解决不了输入 210,输出 012 啊。。我输出的是 12.
数据加载中...
 
   



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

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