求数字的位数
方法一
#include<stdio.h>
#include<math.h>
int main(){
int n;
scanf("%d",&n);
printf("%d的位数是%d\n",n,(int)log10(n)+1);
}
方法二
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int m=1;
while(n>=9){
n/=10;
m++;
}
printf("%d",m);
}
逆序
对10取余再除10
正序分别输出
n位数则除以10^(n-1)获取最高位
题目:给出一个不多于5位的正整数,要求:
1.求出它是几位数;
2.分别输出每一位数字;
3.按逆序输出各位数字。
#include<stdio.h>
#include<math.h>
int main() {
int n,m;
int a;
scanf("%d",&n);
while(n>=100000) {
printf("请重新输入一个小于100000的数:");
scanf("%d",&n);
}
a=n;
m=(int)log10(n)+1;
printf("%d的位数是%d\n",n,m);
switch(m) {
case 5: printf("%d,",n/10000);n=n-n/10000*10000;
case 4: printf("%d,",n/1000);n=n-n/1000*1000;
case 3: printf("%d,",n/100);n=n-n/100*100;
case 2: printf("%d,",n/10);n=n-n/10*10;
case 1: printf("%d\n",n);
}
while(a>0) {
printf("%d",a%10);
a =a/10;
}
printf("\n");
return 0;
}