题目
本题是谭浩强《C程序设计课后习题》第4章第9题。
题目:给一个不多于5位的正整数, 要求:①求出它是几位数; ②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321, 应输出123。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
1.求几位数:使用循环来实现,原理:每次整除10然后累加1,等于0时为位数。
2.分别输出每一位数字:
从万位开始输出,没有万位则不执行此代码
if (x / 10000 > 0)printf(“万位=%d”, x / 10000);
后面依次按规律输出,具体看代码第二部分。
3.逆序输出:
while (x > 0)
a = x % 10; printf("%d", a); x = x / 10;
采用while循环,取余输出最后一位然后原数整除除10
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
int main() {
int t = 0;
int i,x;
int a;
scanf("%d", &t);
x = t;
if (t >= 100000)return -1;
/*①求出它是几位数*/
for (i = 1; i <= 5; i++)
{
if (t / 10 == 0)break;
t = t / 10;
}
printf("您输入的是%d位数\n",i);
/*②分别输出每一位数字*/
if (x / 10000 > 0)
printf("万位=%d", x / 10000);
if (x % 10000 >= 1000)
printf("千位=%d", (x % 10000) / 1000);
if (x % 1000 >= 100)
printf("百位=%d", (x % 1000) / 100);
if (x % 100 >= 10)
printf("十位=%d", (x % 100) / 10);
printf("个位=%d\n", x % 10);
/*③按逆序输出各位数字*/
printf("逆序输出:");
while (x > 0)
{
a = x % 10;
printf("%d", a);
x = x / 10;
}
return 0;
}
三、执行结果
输入:
12345
输出:
您输入的是5位数
万位=1千位=2百位=3十位=4个位=5
逆序输出:54321