标题:给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 ...
只看楼主
qq1900406513
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-10-21
结帖率:0
已结贴  问题点数:20 回复次数:5 
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123
怎么写
搜索更多相关主题的帖子: 要求 整数 位数 逆序 输出 
2020-10-21 14:29
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:5 
int a=0,b=0;cin>>a;while(a)cout<<(a-a/10*10)<<ends,++b,a/=10;cout<<endl<<b<<"位数";
2020-10-21 14:46
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x, a, b, c, d, e;
    //输入一个整数
    printf("Please enter number: ");
    scanf("%d", &x);
    //以下是判断整数是否多于5位,多于判断出错,重新输入
    while (x < 0 || x > 99999){
        printf("Error! Retry!\nPlease enter number: ");
        scanf("%d", &x);
    }
    //以下判断出该数是几位数
    a = x / 10000;
    b = x / 1000;
    c = x / 100;
    d = x / 10;
    e = x - d * 10;
    if (a >= 1 && a <= 9){
        printf("%d is 5 bits!\n", x);
        printf("%d %d %d %d %d\n", a, b-a*10, c-b*10, d-c*10, e);
        printf("%d %d %d %d %d\n", e, d-c*10, c-b*10, b-a*10, a);
    }
    else if (b >= 1 && b <= 9){
        printf("%d is 4 bits!\n", x);
        printf("%d %d %d %d\n", b, c-b*10, d-c*10, e);
        printf("%d %d %d %d\n", e, d-c*10, c-b*10, b);
    }
    else if (c >= 1 && c <= 9){
        printf("%d is 3 bits!\n", x);
        printf("%d %d %d\n", c, d-c*10, e);
        printf("%d %d %d\n", e, d-c*10, c);
    }
    else if (d >= 1 && d <= 9){
        printf("%d is 2 bits!\n", x);
        printf("%d %d\n", d, e);
        printf("%d %d\n", e, d);
    }
    else{
        printf("%d is 1 bits!\n", x);
        printf("%d\n", x);
    }
    system("pause");
    return 0;
}
2020-10-21 15:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
1、求出它是几位数
0 算是 0位数,还是 1位数?

例如原数为321,应输出123
那假如原数是 321000,是输出 000123,还是 123?

不多于5位的整数
那就是允许出现负数了?否则会说“不多于5位的非负整数”
2020-10-21 16:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    int n;
    scanf( "%d", &n );

    unsigned count = 0;
    char s[40] = { '-', '0', 0 };
    char* p = s;
    for( unsigned m=n<0?-n:+n; m; m/=10 )
    {
        ++count;
        if( p!=s || m%10!=0 )
            *++p = m%10+'0';
    }

    printf( "%u, %s\n", count==0?1:count, s+(n>=0) );
}


输入 0
输出 1, 0

输入 -123
输出 3, -321

输入 -12300
输出 5, -321

输入 123
输出 3, 321

输入 12300
输出 5, 321
收到的鲜花
  • 纯蓝之刃2020-10-21 17:54 送鲜花  3朵   附言:极简主义
2020-10-21 16:49
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:5 
回复 3楼 自学的数学
    a = x / 10000;
    b = x / 1000;
    c = x / 100;
    d = x / 10;
    e = x - d * 10;   // 这个是个位吗?

我认为个位 e = x % 10
        或 e = x - 10000 * a - 1000 * b - 100 * c - 10 * d

PS: 不好意思,我放肆了
2020-10-21 21:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503561-1-1.html




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

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