请教高手一个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了,要怎么处理啊!!
求能哪位大神给点帮助!!! 展开
给一个不多于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了,要怎么处理啊!!
求能哪位大神给点帮助!!! 展开
3个回答
展开全部
#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;
}
测试通过,错误已经在代码中以注释的方式给出.
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<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;
}
#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
展开全部
=是赋值号,==才是逻辑判断用的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询