#include
int main()
{
int a,b,c,d,e,f;
printf("请输入一个不多于5位的正整数!");
scanf("%d",&a); //录入数据时不应有'\n'
if(a<=0) //if()后面不应该有分号";",而是接语句,除非空语句
printf("输入有误!请输入正整数!");
else
{
b=a/10000; //取数字时,注意实际大小
c=a/1000-b*10;
d=a/100-b*100-c*10;
e=a/10-b*1000-c*100-d*10;
f=a-b*10000-c*1000-d*100-e*10;
}
if(b!=0)
{
printf("这是一个五位数。\n");
printf("万位数=%d\n",b);
printf("千位数=%d\n",c);
printf("百位数=%d\n",d);
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*10000;
e=e*1000;
d=d*100;
c=c*10;
a=f+e+d+c+b;
printf("%d\n",a);
}
if(b==0&&c!=0) //一个等号=是赋值符号,两个等号==才是逻辑判断是否相等
{ //b=0直接赋值,所以if条件已经产生一个假,下面的同理
printf("这是一个四位数。\n");
printf("千位数=%d\n",c);
printf("百位数=%d\n",d);
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*1000;
e=e*100;
d=d*10;
a=b+c+d+f+e;
printf("%d\n",a);
}
if(b==0 && c==0 && d!=0)
{
printf("这是一个三位数。\n");
printf("百位数=%d\n",d);
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*100;
e=e*10;
a=b+c+d+e+f;
printf("%d\n",a);
}
if(b==0&&c==0&&d==0&&e!=0)
{
printf("这是一个二位数。\n");
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*10;
a=b+c+d+e+f;
printf("%d\n",a);
}
if(b==0 && c==0 && d==0 && e==0 && f!=0)
{
printf("这是一个一位数。\n");
printf("个位数=%d\n",f);
printf("%d\n",a);
}
return 0;
}
测试通过,错误已经在代码中以注释的方式给出.
你的程序有不少错误, 应该仔细分析一下, 下面可以参考一下
#include
int main()
{
int a,b,c,d,e,f;
printf("请输入一个不多于5位的正整数!");
//scanf("%d\n",&a);
scanf("%d",&a); // 这里输入不要\n
if(a<=0)
{
printf("输入有误!请输入正整数!");
}
else
{
b=int(a/10000);
c=int(a/1000)-b*10; // 这里求值不正确,应该好好想一想
d=int(a/100)-b*100-c*10;
e=int(a/10)-b*1000-c*100-d*10;
f=int(a)-b*10000-c*1000-d*100-e*10;
}
if(b!=0)
{
printf("这是一个五位数。\n");
printf("万位数=%d\n",b);
printf("千位数=%d\n",c);
printf("百位数=%d\n",d);
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*10000;
e=e*1000;
d=d*100;
c=c*10;
a=f+e+d+c+b;
printf("%d\n",a);
}
//if(b=0&&c!=0)
if(b==0&&c!=0) // 注意==与=的区别,==关系运算符判断是否相等,=是赋值运算符,要区分开哦
{
printf("这是一个四位数。\n");
printf("千位数=%d\n",c);
printf("百位数=%d\n",d);
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*1000;
e=e*100;
d=d*10;
a=b+c+d+f+e;
printf("%d\n",a);
}
if (b==0 && c==0 && d!=0)
{
printf("这是一个三位数。\n");
printf("百位数=%d\n",d);
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*100;
e=e*10;
a=b+c+d+e+f;
printf("%d\n",a);
}
if(b==0&&c==0&&d==0&&e!=0)
{
printf("这是一个二位数。\n");
printf("十位数=%d\n",e);
printf("个位数=%d\n",f);
f=f*10;
a=b+c+d+e+f;
printf("%d\n",a);
}
if(b==0 && c==0 && d==0 && e==0 && f!=0)
{
printf("这是一个一位数。\n");
printf("个位数=%d\n",f);
printf("%d\n",a);
}
return 0;
}
=是赋值号,==才是逻辑判断用的