一个数字从最高位开始循序输出问题
首先要知道这个数字的位数,知道这个数字的最高位是那个单位,再整除一个这个单位最小的数即得到这个数字的最高位数的数即:321这个数,最高位数字单位是百位则321/100得到最高位数字3。在得到这个数字的最高位数字后原数字对这个取余的方法扔掉最高位即:321扔掉最高位 321%100得21
void PrintOrder(int n) //一个数字从最高位开始循序输出
{int count = Figure(n); //调用上面的计数器函数,得到这个数字的位数
int power = 1; //定义整形数字,这个数字表示这个数字最高位单位最小的数
for(int i = 1;i < count;i++) //循环的次数是这个数字的位数
{
power *= 10; //每次循环得到这个数字最高位单位最小的数,即每次循环给这个power乘10
}
do
{
printf("%d ",n/power); //通过给这个数字整除这个数字相同位数的最小数字得到他的最高位,每次循环输出这 个数字的最高位
n %= power; //这个数字对power取余扔掉最高位,进而继续循环得到下一位的数字
power /= 10; //n每次扔掉最高位后power也要相应的减少一位
}while(n != 0); //循环终点即n为0时,
printf("\n");
}
一个数字从个位开始逆序输出问题
利用循环每次这个数字对10取余得到最小位数的数,然后再整除10扔掉最低位数继续循环得到下一位数。循环终点即对这个数除10等于0时即证明这个数是他的最高位数
void PrintReverse(int n) //一个数字从个位开始逆序输出
{
do
{
printf("%d ",n % 10); //对这个数对10取余从而得到个位,在循环中打印一次循环打印一次
n /= 10; //每次循环得到个位数字之后整除10,相当于扔到个位,然后继续循环取最小位数的数字
}while(n != 0); //判断循环的终点即最后数字为0时
printf("\n");
}
求出一个数字是几位数问题
先定义一个计数器,利用循环,每次循环对这个数字整除10则此数字减少一位,每次减少后给计数器加一,直到整除后这个数字为0则证明计算完了这个数字的所有位数
int Figure(int n) //求出一个数字是几位数
{
int count = 0; //先定义一个计数器
do
{
count++; //每次循环计数器加一
n /=10; //每次循环给这个数除10,每除一次10这个数字就少一位
}while(n != 0); //循环的终点当这个数为0时证明数字被全部除尽
return count; //返回计数器的值即这个数字的位数
}
int main()
{
PrintReverse(123456);
PrintOrder(123456);
printf("是一个%d位数字\n",Figure(123456));
return 0;
}
结果为6 5 4 3 2 1
1 2 3 4 5 6
是一个6位数字