标题:[简单]从高位开始逐位分割一个整数的的各位数字
只看楼主
超超超1
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-5-21
结帖率:80%
已结贴  问题点数:10 回复次数:8 
[简单]从高位开始逐位分割一个整数的的各位数字
题目原文:
输入一个整数,从高位开始逐位分割并输出它的各位数字。
输入输出示例
Input an integer:123456
1  2  3  4  5  6
(完)

这个问题有人问过了,我看到靠谱点的思路就是:先求出这个数的位数,然后分别除以10的几次方,然后%10求出数字,然后输出。

我也这么想的,但是总感觉编程出来有点奇葩,运行起来是没问题的。求个人给看下程序是不是可以优化下,或者换个思路解决这个问题。

个人编的程序:
#include <stdio.h>
int main(void)
{
int number,x,i,j,count,digit,pow;
printf("input an integer:");
scanf("%d",&number);

if(number<0)
number=-number;
x=number;
count=0;
do{
    x=x/10;
    count++;
}while(x!=0);
for(i=count;i>0;i--){
    x=number;
    pow=1;
    for(j=1;j<i;j++){
        pow=10*pow;
    }
    digit=(x/pow)%10;
    printf("%d ",digit);
}

return 0;
}


   


搜索更多相关主题的帖子: number include 数字 count 
2013-05-26 19:31
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
得分:0 
程序代码:
void divide(int n)
{
    if (n>0)
    {
        divide(n/10);
        printf("%d ",n%10);
    }    
}
2013-05-26 19:54
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
得分:3 
程序代码:
#include<stdio.h>
#include<math.h>
int main(void)
{
    int i=0, n, m=0,a[50];
    printf("Enter a number:");
    scanf("%d",&n);
    n=fabs(n);
    while(n!=0)
    {
        
        a[i]=n%10;
        n=n/10;
        i++;
        m++;
    }
    for(i=m-1;i>=0;printf("%3d",a[i]),i--);
    printf("\n");
}

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-05-26 22:00
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:3 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;
    char s[20];
    scanf("%d", &i);
    itoa(i,s,10);
    i=0;
    while(s[i])
        printf("%c ",s[i++]);
    return 0;
}
2013-05-26 23:25
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:1 
#include <stdio.h>
#include <stdlib.h>

int main()
 {
     int i;
     char s[20];
     scanf("%d", &i);
     itoa(i,s,10);  //将数字i按照10进制转换成字符串S   ,功能函数
     i=0;
     while(s[i])
         printf("%c ",s[i++]);//打印字符串,这就是要的结果
     return 0;
 }

引用的楼上的,只是写了注释

C++菜鸟
2013-05-26 23:35
xianyongqi
Rank: 2
等 级:论坛游民
帖 子:8
专家分:36
注 册:2013-5-17
得分:3 
程序代码:
#include <stdio.h>

void divide(int n);

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

    divide(a);
    return 0;
}

void divide(int n)
{
    if (n>0)
    {
        divide(n/10);
        printf("%d ",n%10);
    }   
}
可以用递归来做,分为“回推”和“递推”,自己看看书就明白了
2013-05-26 23:57
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
得分:0 
学习
2013-05-27 08:19
超超超1
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-5-21
得分:0 
仰慕各位,我就不一一感谢了!

数组和字符串之类的内容还没看,不过基本思路大概知道了。我到时候会回来再琢磨琢磨
2013-05-27 11:01
雪梦永恒
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-19
得分:0 
程序代码:
/* Input a five digits,Output it by each digit intervaled three characters */

# include <stdio.h>
int main()
{
    int a[5];
    int i;
    int input;

        printf("\nPlease input number:\n");
        scanf("%d",&input);
        printf("\n\nOutput:\n");

    for ( i = 0; i < 5; i++)
        {
            a[i] = input%10;
            input = input/10;
        }

    for (i = 4; i >= 0; i--)
        {
            printf("%d   ",a[i]);
        }

    printf("\n");
  
    return 0;
}
2013-10-19 14:42



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




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

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