wsb1991abc 发表于 2023-3-4 23:17:33

给一个不多于5位的正整数,1.求出它是几位数2.分别输出每一位数字3.按逆输出各位数字

#include<stdio.h>
int main()
{
long int a,b,c,d,e,q,m;
scanf("%d",&m);
m=a*10*10*10*10+b*10*10*10+c*10*10+d*10+e;
if(a)
          printf("位数%d\n",q=4+1);
else if(a==0&&b!=0)
      printf("位数%d\n",q=3+1);
else if(a==0&&b==0&&c!=0)
          printf("位数%d\n",q=2+1);
else if(a==0&&b==0&&c==0&&d!=0)
          printf("位数%d\n",q=1+1);
else if(a==0&&b==0&&c==0&&d==0&&e!=0)
      printf("位数%d\n",q=0+1);
printf("每一位数%d,%d,%d,%d,%d\n",a,b,c,d,e);
if(a)
      printf("逆%d%d%d%d%d\n",e,d,c,b,a);
else if(a==0&&b)
      printf("逆%d%d%d%d\n",e,d,c,b);
else if(a==0&&b==0&&c)
          printf("逆%d%d%d\n",e,d,c);
else if(a==0&&b==0&&c==0&&d)
      printf("逆%d%d\n",e,d);
return 0;
}
编译只有a,b,c,d,e没有初始化的警告,并不出错,调试输入m显示值错误,求大神解答

dolly_yos2 发表于 2023-3-4 23:50:37

这个写法莫名给我一种 Prolog 语言的感觉,还是先解决一下这些警告再说吧?忽视警告可不是好主意

jhq999 发表于 2023-3-5 10:15:49

int main()
{
    char numch={0};
    scanf("%s",numch);
    int i=0;
    while(numch)i+=1;
    printf("%d\n",i);
    i=0;
    while(numch)
    {
      printf("%c",numch);
      i+=1;
    }
    printf("\n");
    while(--i>=0)
    {
      printf("%c",numch);
    }
    return 0;

}

两手空空儿 发表于 2023-3-5 10:46:00

本帖最后由 两手空空儿 于 2023-3-5 10:48 编辑

scanf("%d",&m);
m=a*10*10*10*10+b*10*10*10+c*10*10+d*10+e;
这两句是什么意思,输入了一个m,马上就把m赋值成了一个不确定的数。。。。。。
把m的值直接破坏了,这个输出的结果不可能正确

wsb1991abc 发表于 2023-3-5 20:23:49

谢谢大神们的解答

傻眼貓咪 发表于 2023-3-5 23:59:41

#include <stdio.h>

int f1(int num) {
        int res = 0;
        do res++;
        while (num /= 10);
        return res;
}

void f2(int num){
        if (!num) return;
        f2(num / 10);
        printf("%d ", num%10);
}

void f3(int num) {
        if (!num) return;
        printf("%d ", num%10);
        f3(num / 10);
}

int main(void) {

        // 给一个不多于 5位的正整数
        int num = 5284;
       
        // 1. 求出它是几位数
        printf("%d 位数\n", f1(num));
       
        // 2. 分别输出每位数字
        f2(num), printf("\n");
       
        // 3. 按逆输出各位数字
        f3(num);
       
        return 0;
}4 位数
5 2 8 4
4 8 2 5
页: [1]
查看完整版本: 给一个不多于5位的正整数,1.求出它是几位数2.分别输出每一位数字3.按逆输出各位数字