给一个不多于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显示值错误,求大神解答 这个写法莫名给我一种 Prolog 语言的感觉,还是先解决一下这些警告再说吧?忽视警告可不是好主意 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:48 编辑
scanf("%d",&m);
m=a*10*10*10*10+b*10*10*10+c*10*10+d*10+e;
这两句是什么意思,输入了一个m,马上就把m赋值成了一个不确定的数。。。。。。
把m的值直接破坏了,这个输出的结果不可能正确 谢谢大神们的解答
#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]