请教高手一个c语言的问题!万分感谢!

题目是:给一个不多于5位的正整数,要求:1:求出它是几位数;2:分别输出每一位数字;3:按逆序输出各位数字,例如原数为321,应输入123.我的代码:#include<s... 题目是:
给一个不多于5位的正整数,要求:
1:求出它是几位数;
2:分别输出每一位数字;
3:按逆序输出各位数字,例如原数为321,应输入123.
我的代码:
#include<stdio.h>
int main()
{
int a,b,c,d,e,f;
printf("请输入一个不多于5位的正整数!");
scanf("%d\n",&a);
if(a<=0);
{printf("输入有误!请输入正整数!");
else
b=int(a/10000);
c=int(a/1000)-b;
d=int(a/100)-b-c;
e=int(a/10)-b-c-d;
f=int(a)-b-c-d-e;
}
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)
{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;
}
但我的if语句中0值被编译以为是逻辑假,而不数值0了,要怎么处理啊!!
求能哪位大神给点帮助!!!
展开
 我来答
百度网友4170dcb
推荐于2016-04-27 · 超过16用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:36.4万
展开全部
#include<stdio.h>
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;
}

测试通过,错误已经在代码中以注释的方式给出.
新新5F602
2012-07-22 · TA获得超过255个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:208万
展开全部
你的程序有不少错误, 应该仔细分析一下, 下面可以参考一下
#include<stdio.h>
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-22
展开全部
=是赋值号,==才是逻辑判断用的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式