问题一:包含数字9的数
描述 :
今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。
输入描述:
无
输出描述:
一行,一个整数,表示1~2019中共有多少个数包含数字9。
问题分析:
首先,我们要明确问题的范围,即从1到2019中寻找符合条件的数。在这个过程中,我们需要遍历每一个数字,检查其每一位上是否包含数字9。这涉及到对数字的分解和判断。
解题思路:
为了解决这个问题,我们可以按照以下步骤进行分析和实现:
1.循环遍历:从1到2019,遍历每一个数字。
2.数字分解: 对于每个数字,将其分解成个位、十位、百位等。
3.判断是否包含数字9: 检查每一位上是否是数字9。
4.计数: 统计符合条件的数的个数。
5.输出结果: 将得到的统计结果呈现出来。
以下为代码演示:
#include <stdio.h>
int main() {
int b = 0; // 初始化计数器 b,用于记录包含数字 9 的数的个数
// 循环遍历从 1 到 2019 的每个数字
for (int i = 1; i <= 2019; i++) {
// 判断当前数字 i 的个位、十位和百位是否包含数字 9
if (i % 10 == 9 || i / 10 % 10 == 9 || i / 100 % 10 == 9) {
b++; // 如果包含数字 9,计数器 b 加一
}
}
// 输出计数器 b 的值,即包含数字 9 的数的个数
printf("%d", b);
return 0;
总结:
这段C语言代码用于统计从 1 到 2019 的数字中,包含数字 9 的数的个数。通过使用循环和条件判断,遍历每个数字的个位、十位和百位,判断是否含有数字 9,并使用计数器记录符合条件的数的数量。最终,输出计数器的值,即包含数字 9 的数的个数。这种方法简洁而直观,是解决问题的有效途径。
问题二:变种水仙花数
描述:
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
输入描述:
无
输出描述:
一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。
问题描述:
变种水仙花数是一种数字特性,它指的是将一个数字分解成两部分,使得这两部分的乘积之和等于原数字。具体而言,在这个问题中,我们寻找所有的 5 位数,满足以下条件:对于该数的每一种分解方式,其分解的两部分的乘积之和等于原数字。
解题思路:
为了解决这个问题,我们可以采取以下步骤:
1.循环遍历: 我们使用一个循环从 10000 遍历到 99999,以考察所有可能的 5 位数。
2.数字分解: 对于每个数字,我们需要将其分解成两部分。例如,对于数字 abcde,我们可能将其分解成 (a, bcde)、(ab, cde)、(abc, de)、(abcd, e)。
3.乘积之和判断: 对于每一种分解方式,我们计算两部分的乘积之和,即 a * bcde + bcde * a。这个和需要等于原数字。
4.记录结果: 如果乘积之和等于原数字,我们记录这个数字,因为它是一个变种水仙花数。
5.输出结果: 最后,我们输出所有找到的变种水仙花数
以下为代码实现:
#include <stdio.h>
int main() {
int i = 0; // 初始化循环变量 i,用于遍历 5 位数范围
for (i = 10000; i <= 99999; i++) {
int j = 0; // 初始化循环变量 j,用于分解数字
int sum = 0; // 用于存储分解后的两部分的乘积之和
for (j = 10; j <= 10000; j *= 10) {
// 分解数字,计算两部分的乘积之和
sum += (i / j) * (i % j);
}
// 判断是否为变种水仙花数
if (sum == i) {
// 输出变种水仙花数
printf("%d ", i);
}
}
return 0;
}
总结:
这个问题通过分解数字、计算乘积之和、判断条件,找到了所有的 5 位变种水仙花数。在解决这类问题时,循环和分解数字是常见的思维方式。这个问题既考察了对循环结构和数学运算的运用,也提高了对数字特性的敏感度。通过编写这样的程序,我们能够锻炼编程逻辑和对问题分析的能力。
结语:
在本篇博客中,我们通过2个题目深入学习了 C 语言中循环和分支结构的使用。这两个基本的编程工具是构建程序逻辑和解决问题的重要组成部分。通过这些例子,我们对 C 语言中循环和分支的使用有了更深的印象。在日常的编程实践中,循环和分支是我们解决问题的得力助手。不仅如此,这些基本的概念也为我们学习更高级的编程语言和算法打下了坚实的基础。
在编程的世界里,循环和分支是我们解决问题的得力工具,掌握它们的使用,能够更加灵活和高效地编写程序。希望本篇博客的内容对你学习 C 语言和编程逻辑有所帮助。继续加油,探索更多编程的奥秘!