c语言习题,输入一个正整数,按照从高位到低位的顺序输出各位数字。怎么做

2024-10-30 17:11:29
推荐回答(2个)
回答1:

  1. 输入时由代码限制只能是正整数,并赋与int型变量n,否则退出;

  2. 用一个for循环计算输入之数的十进制长度,用1之后的0的个数表示并赋与临时变量t,如10000表示输入了一个4位十进制正整数;

  3. 用一个while循环先后由t/=10和n/t%10来求得从高位至低位的各位数字并输出。

代码如下:

#include "stdio.h"
int main(int argc,char *argv[]){
int n,t;
printf("Please enter a positive integer...\nn=");
if(scanf("%d",&n)!=1 || n<1){//保证输入是正整数,否则退出
printf("Input error, exit...\n");
return 0;
}
printf("The result are as follows:\n");
for(t=10;n/t;t*=10);//求出十进制数n的长度,用1后0的个数表示,如1000表示3位数
while(t/=10)
printf("%d ",n/t%10);//t/=10与n/t%10配合从高至低输出各位上的数字
printf("\n");
return 0;
}

运行样例如下:

回答2:

//不要超过int的范围就行了
#include
 
int main()
{
    int a;
    int flag=0;
    scanf("%d",&a);
    if(a/1000000000)
    {
        printf("%d\t",a/1000000000);
        flag=1;
    }
    if(a%1000000000/100000000 || flag)
    {
        printf("%d\t",a%1000000000/100000000);
        flag=1;
    }
    if(a%100000000/10000000 || flag)
    {
        printf("%d\t",a%100000000/10000000);
        flag=1;
    }
    if(a%10000000/1000000 || flag)
    {
        printf("%d\t",a%10000000/1000000);
        flag=1;
    }
    if(a%1000000/100000 || flag)
    {
        printf("%d\t",a%1000000/100000);
        flag=1;
    }
    if(a%100000/10000 || flag)
    {
        printf("%d\t",a%100000/10000);
        flag=1;
    }
    if(a%10000/1000 || flag)
    {
        printf("%d\t",a%10000/1000);
        flag=1;
    }
    if(a%1000/100 || flag)
    {
        printf("%d\t",a%1000/100);
        flag=1;
    }
    if(a%100/10 || flag)
    {
        printf("%d\t",a%100/10);
        flag=1;
    }
    if(a%10 || flag)
    {
        printf("%d\n",a%10);
        flag=1;
    }
}

辛苦打来,望采纳,谢谢!