C语言练习百题之3的倍数

题目:倒序输出 100 以内所有3的倍数,数据之间以单个空格分割, 每五个数换一行

这个问题可以分为以下几个步骤来解决:

  1. 遍历从1到100的所有数字。
  2. 对于每个数字,检查它是否是3的倍数。
  3. 如果是3的倍数,将其输出,同时计数器加1。
  4. 每输出5个数字,换行。

接下来,我将分别展示三种不同的方法来实现这个任务,并列出它们的解题思路、实现代码以及各自的优缺点。

方法一:使用单层循环

解题思路:

使用一个循环从1到100遍历所有数字,检查每个数字是否是3的倍数,如果是,就输出,同时计数器加1。当计数器达到5时,换行。

实现代码:
#include 

int main() {
    int count = 0; // 用于计数
    for (int i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            printf("%d ", i);
            count++;
            if (count == 5) {
                printf("\n");
                count = 0;
            }
        }
    }
    return 0;
}
优点:
  • 简单易懂,代码量少。
  • 只需要单层循环,效率高。
缺点:
  • 在输出时需要手动控制换行。

方法二:使用嵌套循环

解题思路:

使用两层嵌套循环,外层循环控制数字的范围,内层循环检查每个数字是否是3的倍数。同时使用计数器控制输出和换行。

实现代码:
#include 

int main() {
    int count = 0; // 用于计数
    for (int i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            printf("%d ", i);
            count++;
        }
        if (count == 5) {
            printf("\n");
            count = 0;
        }
    }
    return 0;
}
优点:
  • 使用了嵌套循环,更灵活,可以适应更复杂的输出要求。
  • 效率仍然较高。
缺点:
  • 比方法一稍微复杂一些,需要注意循环嵌套的控制。

方法三:使用条件判断

解题思路:

使用单层循环遍历所有数字,使用条件判断来判断是否是3的倍数并控制输出和换行。

实现代码:
#include 

int main() {
    for (int i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            printf("%d ", i);
        }
        if (i % 3 == 0 && i % 15 == 0) {
            printf("\n");
        }
    }
    return 0;
}
优点:
  • 简洁明了,代码可读性较高。
  • 只需要单层循环。
缺点:
  • 使用了多个条件判断,可能稍微影响效率。
  • 在更复杂的输出要求下可能需要修改条件。

总结与推荐:

从上面的三种方法中,方法一和方法二都是有效的,但方法一(使用单层循环)可能更易于理解和修改,因此在这种简单情况下,推荐使用方法一。如果需要更复杂的输出要求或逻辑,方法二(使用嵌套循环)可以提供更多的灵活性。方法三(使用条件判断)虽然简洁,但在复杂情况下可能需要增加更多的条件判断,不如方法一和方法二直观。因此,综合考虑,方法一是最好的选择。

你可能感兴趣的:(C语言练习百题,c语言,算法,开发语言)