给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321
int main(){int n;int a,b,c,d,e;//个,十,百,千,万printf("输入一个不多于5位的正整数\n");scanf("%d",&n);a=n/10000;//分解出万位b=n%10000/1000;//分解出千位c=n%1000/100;//百位d=n%100/10;//十位e=n%10;//个位if(a!=0){printf("5位数\n");printf("每一位数字分别是:%d%d%d%d%d\n",a,b,c,d,e);printf("逆序输为:%d%d%d%d%d\n",e,d,c,b,a);}else if(b!=0){printf("4位数\n");printf("每一位数字分别是:%d%d%d%d\n",b,c,d,e);printf("逆序输为:%d%d%d%d\n",e,d,c,b);}else if(c!=0){printf("3位数\n");printf("每一位数字分别是:%d%d%d\n",c,d,e);printf("逆序输为:%d%d%d\n",e,d,c);}else if(d!=0){printf("2位数\n");printf("每一位数字分别是:%d%d\n",d,e);printf("逆序输为:%d%d\n",e,d);}else if(e!=0){printf("1位数\n");printf("每一位数字分别是:%d\n",e);printf("逆序输为:%d\n",e);}return 0;}
这是刚开始参考网上的代码写出来的,感觉这个很通俗易懂,便于理解,但是只能针对这道题,数字大了之后就没办法算了。
语言真的是很奇妙。这是老师讲解的:
①给定一个整数,统计该整数是几位数
算法:一位一位数,每次丢弃个位数字(/10)
#include <stdio.h>int main(){long long n;scanf("%lld",&n);int count=0;if(n==0){printf("1");}while(n!=0){n/=10;count++;}printf("%d\n",count);return 0;}
③逆序输出
#include <stdio.h>int main(){long long n;scanf("%lld",&n);if(n == 0){printf("0\n");return 0;}if(n < 0)//如果输入负号,逆序输出每一位数字默认每位数字前都有负号。这个if就是只保留第一个负号{printf("-");n = -n;}while(n != 0){printf("%d ",n%10);//输出个位n /= 10;//丢弃个位}printf("\n");return 0;}
②顺序输出
#include <stdio.h>int main(){long long n;scanf("%lld",&n);if(n == 0){printf("0\n");return 0;}//得到n是几位数字int count = 0;int m = n;while(n != 0){count++;n /= 10;}//计算需要除以的数字int power = (int)pow(10.0,count-1);while(m != 0){printf("%d ",m/power);//输出最高位m %= power;//丢弃最高位power /= 10;};printf("\n");return 0;}
给一个不多于5位的正整数 要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字 例如原数为123 应输出321
如果觉得《给一个不多于5位的正整数 要求: ①求出它是几位数②分别输出每一位数③按逆序输出》对你有帮助,请点赞、收藏,并留下你的观点哦!