0
点赞
收藏
分享

微信扫一扫

Django--Learning and understanding

跟着Damon写代码 2023-10-13 阅读 49

题目:统计1~100之间出现了几次数字9

程序分析

我们需要实现一个程序来统计1到100之间数字9出现的次数。在这个问题中,我们可以使用三种方法来解决:

  1. 迭代法: 使用循环迭代从1到100,逐个检查每个数字中是否包含数字9。
  2. 字符串法: 将数字转换为字符串,然后检查字符串中是否包含字符’9’。
  3. 数学法: 使用数学方法来计算数字9的出现次数,无需实际遍历所有数字。

让我们分别实现这三种方法。

方法一:迭代法

解题思路:

  1. 使用循环迭代从1到100。
  2. 对于每个数字,将其不断除以10并检查余数,看是否包含数字9。
  3. 如果包含数字9,则增加计数器。
  4. 最后输出计数器的值。

实现代码:

#include <stdio.h>

int main() {
    int count = 0;

    for (int num = 1; num <= 100; num++) {
        int n = num;
        while (n > 0) {
            if (n % 10 == 9) {
                count++;
                break;
            }
            n /= 10;
        }
    }

    printf("Method 1: The digit 9 appears %d times between 1 and 100.\n", count);
    return 0;
}

优点:

  • 简单易懂。
  • 通用性强,适用于各种编程语言。

缺点:

  • 在大范围内的数字统计时可能效率较低。

方法二:字符串法

解题思路:

  1. 使用循环迭代从1到100。
  2. 将每个数字转换为字符串。
  3. 对于每个字符串,检查其中是否包含字符’9’。
  4. 如果包含字符’9’,增加计数器。
  5. 最后输出计数器的值。

实现代码:

#include <stdio.h>
#include <string.h>

int main() {
    int count = 0;

    for (int num = 1; num <= 100; num++) {
        char str[4];  // 数字不超过3位
        snprintf(str, sizeof(str), "%d", num);

        if (strchr(str, '9') != NULL) {
            count++;
        }
    }

    printf("Method 2: The digit 9 appears %d times between 1 and 100.\n", count);
    return 0;
}

优点:

  • 使用字符串函数简化了检查过程。
  • 通用性强,适用于各种编程语言。

缺点:

  • 需要额外的内存来存储字符串。
  • 在大范围内的数字统计时可能效率较低。

方法三:数学法

解题思路:

  1. 分析数字9在个位、十位和百位的出现规律。
  2. 从1到100,每10个数字中,有一个包含数字9(9, 19, 29, …)。
  3. 对于每10个数字,有9个不包含数字9。
  4. 计算包含数字9的组数和不包含数字9的组数。
  5. 计算总共包含数字9的次数。

实现代码:

#include <stdio.h>

int main() {
    int count = 0;

    for (int num = 1; num <= 100; num++) {
        if (num % 10 == 9 || (num / 10) % 10 == 9) {
            count++;
        }
    }

    printf("Method 3: The digit 9 appears %d times between 1 and 100.\n", count);
    return 0;
}

优点:

  • 高效,无需实际遍历所有数字。
  • 不需要额外的内存。

缺点:

  • 相对于方法一和方法二,更特定于这个问题。

总结

在这个问题中,推荐使用方法三,即数学法。它是最高效的解决方案,无需实际遍历所有数字,而是利用规律直接计算出结果。方法一和方法二虽然通用,但在大范围内的数字统计时可能效率较低,而且方法二需要额外的内存来存储字符串。方法三是最好的选择,特别是在需要统计大范围内数字出现次数时。

举报

相关推荐

0 条评论