编程啊~~~怎么不对呢??

来源:百度知道 编辑:UC知道 时间:2024/09/25 03:26:19
题目是
1 输入一个小于5位数正数 求是几位数
2分别输出各位数字
3 按照逆序输出 比如321 则 123
我编程的是
#include "stdio.h"
void main()
{
int a,b,i,q,w,e,r,t,y;;
scanf("%d",&a);
if (a<=9)
printf("the number is one\n");
else if (a<=99)
printf("the number is two\n");
else if(a<=999)
printf("the number is three\n");
else if(a<=9999)
printf("the number is four\n");
i=a/1000;b=a%1000;
printf("第4位是%d\n",i);
i=b/100;a=b%100;
printf("第3位是%d\n",i);
i=a/10;b=a%10;
printf("第2位是%d\n",i);
printf("第1位是%d\n",b);
q=a/1000;
w=a-q*1000;
e=w/100;
r=w-e*100;
t=r/10;
y=r-t*10;
printf("%d,%d,%d,%d",y,t,e,q);
}

为什么 我的逆序数 在最后2个总是0??

printf("第4位是%d\n",i);
i=b/100;a=b%100;
仔细看看这里就知道了吧,你a的值变了,a变成两位数了,后面的都以两位数来计算,所以你逆序数最后两个都是0

因为你的输出是y,t,e,q
你已经默认了你输入的那个数是四位数了,如果是两位数,你想想怎么还有四个输出呢? 当然最后还会有两个0了
其实你可以写四个函数对应于四种情况分别输出。
我以两位数为例
假设输入为34,调用下面的函数则可以输出3和4,逆序是43
void twoNum(int data)
{
int i, j;
i=data/10;
printf("/n第一位数是%d", i);
j=data%10;
printf("/n第二位数是%d",j);
printf("逆序是%d%d",j,i);
}
这个函数可以在else if(a<=99)后面调用就行了。