c语言 给一个不多于5位的正整数 用C语言写出
要求1求出是几位数2分别输出每一位数字,3按逆序输出例如123是3位数,分别是1,2,3逆序是321!#include<stdio.h>voidmain(){longi,...
要求 1求出是几位数 2 分别输出每一位数字,3按逆序输出
例如 123 是3位数,分别是1,2,3 逆序是321!
#include <stdio.h>
void main()
{
long i,a,b,c,d,e;
scanf("%ld",&i);
if(1<=i&&i<10)
printf("1位数,%ld,%ld\n",i,i);
{
if(10<=i&&i<100)
{
a=i/10;
b=i%10;
printf("2位数,%ld,%ld,%ld%ld\n",a,b,b,a);
}
if(100<=i&&i<1000)
{
a=i/100;
b=i/10-i/100*10;
c=i%10;
printf("3位数,%ld,%ld,%ld,%ld%ld%ld\n",a,b,c,c,b,a);
}
if(1000<=i&&i<10000)
{
a=i/1000;
b=i/100-i/1000*10;
c=i/10-i/100*10;
d=i%10;
printf("4位数,%ld,%ld,%ld,%ld,%ld%ld%ld%ld\n",a,b,c,d,d,c,b,a);
}
if(10000<=i&&i<100000)
{
a=i/10000;
b=i/1000-i/10000*10;
c=i/100-i/1000*10;
d=i/10-i/100*10;
e=i%10;
printf("5位数,%ld,%ld,%ld,%ld,%ld,%ld%ld%ld%ld%ld\n",a,b,c,d,e,e,d,c,b,a);
}
}
}
请问我这样写可以么?还有什么更好的方式,不要用循环!我只学到5张内容!! 展开
例如 123 是3位数,分别是1,2,3 逆序是321!
#include <stdio.h>
void main()
{
long i,a,b,c,d,e;
scanf("%ld",&i);
if(1<=i&&i<10)
printf("1位数,%ld,%ld\n",i,i);
{
if(10<=i&&i<100)
{
a=i/10;
b=i%10;
printf("2位数,%ld,%ld,%ld%ld\n",a,b,b,a);
}
if(100<=i&&i<1000)
{
a=i/100;
b=i/10-i/100*10;
c=i%10;
printf("3位数,%ld,%ld,%ld,%ld%ld%ld\n",a,b,c,c,b,a);
}
if(1000<=i&&i<10000)
{
a=i/1000;
b=i/100-i/1000*10;
c=i/10-i/100*10;
d=i%10;
printf("4位数,%ld,%ld,%ld,%ld,%ld%ld%ld%ld\n",a,b,c,d,d,c,b,a);
}
if(10000<=i&&i<100000)
{
a=i/10000;
b=i/1000-i/10000*10;
c=i/100-i/1000*10;
d=i/10-i/100*10;
e=i%10;
printf("5位数,%ld,%ld,%ld,%ld,%ld,%ld%ld%ld%ld%ld\n",a,b,c,d,e,e,d,c,b,a);
}
}
}
请问我这样写可以么?还有什么更好的方式,不要用循环!我只学到5张内容!! 展开
13个回答
展开全部
#include <stdio.h>
int main()
{
int n=831,i=1;
int t,g,s,b,k,w;
t=n;
while(t>=10)
{
t=t/10;
i=i+1;
}
printf("n %d 有%d位\n",n,i);
g=n%10;
s=n/10%10;
b=n/100%10;
k=n/1000%10;
w=n/10000;
switch(i)
{
case 1: printf("%d",n); break;
case 2: printf("%d%d",g,s); break;
case 3: printf("%d%d%d",g,s,b); break;
case 4: printf("%d%d%d%d",g,s,b,k); break;
case 5: printf("%d%d%d%d%d",g,s,b,k,w); break;
}
return;
}
用了选择和循环结构 应该更好看一些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.语句if(num>9999)
x=5;是不对的,因为这样的话,你输入一个六位数依然满足条件,就把一个六位数当成五位数处理了,应该改为if(num>9999&&num<=99999)
x=5;
2.语句
a=num/10000;
b=(num-a*10000)/1000;
c=(num-a*10000-b*1000)/100;
d=(num-a*10000-b*1000-c*100)/10;
e=(num-a*10000-b*1000-c*100-d*10);
本身是没有问题的,但是你放的位置是有问题的,因为你事先输入的数的位数是一到五位都有可能,而这五条语句只适应于求解一个五位数,这样的话,不管你输入的是几位数都会按照求五位数各个位的方法求解,这显然是错误的,正确的做法是,把求位数的语句放到switch语句中,不同的位数对应着不同的求解方法
x=5;是不对的,因为这样的话,你输入一个六位数依然满足条件,就把一个六位数当成五位数处理了,应该改为if(num>9999&&num<=99999)
x=5;
2.语句
a=num/10000;
b=(num-a*10000)/1000;
c=(num-a*10000-b*1000)/100;
d=(num-a*10000-b*1000-c*100)/10;
e=(num-a*10000-b*1000-c*100-d*10);
本身是没有问题的,但是你放的位置是有问题的,因为你事先输入的数的位数是一到五位都有可能,而这五条语句只适应于求解一个五位数,这样的话,不管你输入的是几位数都会按照求五位数各个位的方法求解,这显然是错误的,正确的做法是,把求位数的语句放到switch语句中,不同的位数对应着不同的求解方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询