2 qq 33486292 qq_33486292 于 2016.03.22 09:43 提问

c基础问题,新手求解!

给一个不多于5位数的正整数,要求:
1.求出它是几位数;
2.分别输出每一位数;
3.按逆序输出各位数字。
(我只用if语句写的代码如下,看看那些错了,非常感谢!)

#include<stdio.h>
int main()
{
    int x,i,j,k,z,y,s;
    scanf("%d",&x);
    if(x>99999&&x<0)
        printf("It is error");
    else
    {
        s=x/10;
        i=x%10;
        if(s==0)
            printf("%d\n",i);
        else
        {   
            j=x/100;
            if(j==0)
            {
                printf("%d\n",j);
                printf("%d%d\n",i,j);
            }
            else
            {
                k=x/1000;
                if(k==0)
                {
                    printf("%d\n",k);
                    printf("%d%d\n",i,j,k);
                }
                else
                {
                    z=x/10000;
                    if(z==0)
                    {
                        printf("%d\n",z);
                        printf("%d%d\n",i,j,k,z);
                    }
                    else
                    {
                        y=x/100000;
                        if(y==0)
                        {
                            printf("%d\n",y);
                            printf("%d%d\n",i,j,k,z,y);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

5个回答

abcd246781
abcd246781   2016.03.22 10:30
已采纳

断点调试,追踪每一步结果

oiu1010110
oiu1010110   2016.03.22 10:10

你完全可以把拆出来的每一个数存到一个数组里,然后看有几位,逆序输出不都很方便了吗?还有你的拆分每一个数可以用循环啊直接

herozhangbz
herozhangbz 单身……手速快怪我咯
一年多之前 回复
oiu1010110
oiu1010110 哈哈哈⊙▽⊙ 你还是撸码凶啊 这么快
一年多之前 回复
herozhangbz
herozhangbz 。。哥哥,你说的跟我想的完全一样。。
一年多之前 回复
herozhangbz
herozhangbz 。。哥哥,你说的跟我想的完全一样。。
一年多之前 回复
herozhangbz
herozhangbz   2016.03.22 10:10
int x,i=0,j=0,m;
int a[5];
    scanf("%d",&x);
    if(x>99999&&x<0)
        printf("It is error");
    else
    {
        do
        {
              m=x%10;
              x/=10;
              i++;
              a[i]=m;
        }while(x>0);
    }
    printf("输入的是%d位数\n",i);
    printf("正序输出:\n");
    for(j=i;j>0;j--)
        printf("第%d位为%d\n",j,a[j]);
    printf("逆序输出:\n");
    for(j=1;j<i+1;j++)
        printf("第%d位为%d\n",j,a[j]);
    system("pause");
    return 0;

herozhangbz
herozhangbz 嗯嗯,没仔细看,用的楼主的马甲改得
一年多之前 回复
hwnd_windows
hwnd_windows x>99999||x<0
一年多之前 回复
enpterexpress
enpterexpress   2016.03.22 10:26
    int x,i=0,j=0,m;
    int a[5];
    scanf("%d",&x);
    if(x>99999&&x<0)
        printf("It is error");
    else
    {
        do
        {
              m=x%10;
              x/=10;
              i++;
              a[i]=m;
        }while(x>0);
    }
    printf("输入的是%d位数\n",i);
    printf("正序输出:\n");
    for(j=i;j>0;j--)
        printf("第%d位为%d\n",j,a[j]);
    printf("逆序输出:\n");
    for(j=1;j<i+1;j++)
        printf("第%d位为%d\n",j,a[j]);
    system("pause");
    return 0;

这个不错

haikuokuangtu
haikuokuangtu   2016.03.22 10:59

private static void ceShi1(int n){
int x=n;
int y;
int m;
String a[] ={"个","十","百","千","万"};
if (x<=0 || x>99999) {
if (x==0) {
System.out.println(x);
}else{
System.out.println("Error");
}
}else{
for (int i = 0; i < 5; i++) {
m = x/10;
y = x%10;
if (m==0 && y==0) {
System.out.println("结束");
break;
}else{
x = m;
}
System.out.println(a[i]+"位是"+y);
}
}

    用java写的,改改也是一样的效果。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!