【菜鸟自学】00002-----{循环控制}------(问题已在11楼解决)
编译环境:vc++6.0程序目的:输入一个最多五位的数字。1.求共几位。2.分别打印每一位。3.逆顺序打印,如123,打印321.
错误程序:
-------------------------------------------
#include "stdio.h"
main()
{
long a;int h,i,w[5];h=5;
printf ("请输入一个五位数:");
scanf ("%ld",&a);
w[5]=(int)(a/10000);if (w[5]<=0) h-=1;a=a-w[5]*10000;
w[4]=(int)(a/1000);if (w[4]<=0) h-=1;a=a-w[4]*1000;
w[3]=(int)(a/100);if (w[3]<=0) h-=1;a=a-w[3]*100;
w[2]=(int)(a/10);if (w[2]<=0) h-=1;a=a-w[2]*10;
w[1]=a;
printf ("总共%d位。\n各个位数为:",h);
for (i=h;i<1;i--)
{printf ("%d\t",w[i]);}
printf ("\n反位输出为:");
for (i=1;i>h;i++)
{printf ("%d",w[i]);}
printf ("\n");
}
-------------------------------------------------------
程序编译无错,但是结果和预想不符。。。。
结果:
请输入一个五位数:12345(回车)
总共5位。
各个位数为:
反位输出为:
即循环中的输出什么都没打印。我在程序中加过一个printf,打印w[1]-w[5],证明算法没错。应该是循环错了。。。
自己看不出所以然,望指教!
[ 本帖最后由 s158298261 于 2009-12-30 14:29 编辑 ]