01-给一个整数(1):输出它是几位数(2):逆序输出每一位数字(3):顺序输出每一位数字 女爷i 2022-12-13 11:17 113阅读 0赞 #include <stdio.h> #include <math.h> #include <string.h> //统计十进制整数为几位数字 int GetFigures(long long n) { if(n == 0) return 1; int count = 0; while(n != 0) { n /= 10;//丢弃个位 count++; } return count; } //倒序输出 数字 void PrintReverse(long long n) { if(n == 0) { printf("0\n"); return ;//结束该函数 } if(n < 0) { printf("-"); n = -n; } while(n != 0) { { printf("%d ",n%10); n /= 10; } } printf("\n"); /*if(n == 0) printf("0\n"); else { while(n != 0) { { printf("%d ",n%10); n /= 10; } } printf("\n"); }*/ } //顺序输出数字 void PrintOrder(long long n) { /*int fig = GetFigures(n);//得到n的位数 int power = pow(10.0,fig-1); while(n != 0)//此方法存在bug,如10000或者12300等以0结尾的数字 { printf("%d ",n/power);//得到最高位 n %= power;//丢弃最高位 power /= 10; } printf("\n");*/ //正确代码 int fig = GetFigures(n); int power = pow(10.0,fig-1); if(fig==1) { printf("%d ",n); } else { for(int i=1;i<=fig;i++) { printf("%d ",n/power); n%=power; power /= 10; } } printf("\n"); } int main() { PrintOrder(123456789); PrintOrder(-123456789); PrintOrder(12); PrintOrder(0); /*PrintReverse(123456789); PrintReverse(-123456789); PrintReverse(1); PrintReverse(0);*/ //printf("%d\n",GetFigures(123456789));//测试用例 //printf("%d\n",GetFigures(-123456789)); //printf("%d\n",GetFigures(1)); //printf("%d\n",GetFigures(0)); /*printf("%d\n",Mysqrt(9)); printf("%d\n",Mysqrt(10)); int i = Mysqrt(10000); printf("%d\n",i);*/ //strlen("abc"); return 0; }
还没有评论,来说两句吧...