局部变量未初始化

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:58:56
有一个题目要求输入不大于5位的正整数然后要求:求出它有几位,每一位数字,按逆序排列各数字.
#include "stdio.h"
main()
{unsigned long a,h;
int b,c,d,e,f,g;
printf("请输入不多于5位的正整数:\n");
scanf("%d",&a);
if(a<=99999)
b=5;
if(a<=9999)
b=4;
if(a<=999)
b=3;
if(a<=99)
b=2;
if(a<=9)
b=1;
printf("这个数有%d位\n",b);
if(a<=9)
{c=a;printf("个位%d\n",c);}
else if(a<=99)
{d=a/10;c=a-d*10;printf("个位%d\n 十位%d\n",c,d);}
else if(a<=999)
{e=a/100;d=(a-c*100)/10;c=a-e*100-d*10;printf("个位%d\n 十位%d\n 百位%d\n",c,d,e);}
else if(a<=9999)
{f=a/1000;e=(a-f*1000)/100;d=(a-f*1000-e*100)/10;c=a-f*1000-e*100-d*10;printf("个位%d\n 十位%d\n 百位%d\n 千位%d\n",c,d,e,f);}
else if(a<=99999)
{g=a/10000;f=(a-g*10000)/1000;e=(a-g*10000-f*1000)/100;d=(a-g*10000-f*1000-e*100)/10;c=a-g*10000-f*1000-e*1

你在处理3位数这段程序写错了
else if(a<=999)
{ e=a/100;
d=(a-e*100)/10;
c=a-e*100-d*10;
printf("个位%d\n 十位%d\n 百位%d\n",c,d,e);
}

你在a<999时没有对c赋值就参与了运算,在第23行