C语言编程问题详解:正整数位数及逆序打印
知识点介绍
本题要求给定一个不多于5位的正整数,首先求它是几位数,然后逆序打印出各位数字。这个问题可以通过递归和循环两种方式来实现,本文将展示循环方式的解决方案。
示例代码
#include
int main() {
int n, sum = 0, temp;
// 输入一个不多于5位的正整数
printf("请输入一个不多于5位的正整数: ");
scanf("%d", &n);
temp = n;
// 计算数字的位数
for (int i = 0; i < 5; i++) {
if (n != 0) {
sum++;
n /= 10;
} else {
break; // 如果数字已经为0,则跳出循环
}
}
printf("该数字是%d位数n", sum);
// 逆序打印数字
temp = n; // 重新赋值temp为原始输入值,因为计算位数时已经修改了n
printf("逆序打印数字: ");
while (temp != 0) {
printf("%d ", temp % 10); // 打印最后一位数字
temp /= 10; // 去掉最后一位数字
}
printf("n");
return 0;
}
代码解析
- 首先,定义一个整数变量n来存储用户输入的正整数,定义sum变量来记录数字的位数,定义temp变量来辅助计算和打印。
- 通过scanf函数从用户那里获取一个不多于5位的正整数。
- 使用一个for循环来计算数字的位数。在循环中,每次将n除以10并增加sum的值,直到n变为0或达到5次循环。
- 在打印位数之前,需要重新将temp赋值为原始输入值,因为计算位数时已经修改了n。
- 使用while循环来逆序打印数字。在循环中,每次将temp对10取模得到最后一位数字,然后除以10去掉最后一位数字,直到temp变为0。
结论
本问题展示了如何通过循环计算数字的位数并逆序打印出数字。这种解决方案在C语言编程中非常常见,对于提高编程能力和深化对算法的理解有很大帮助。