首页 > 编程笔记 > C语言笔记

九九乘法表C语言代码(多种形式)

九九乘法表是编程初学者常见的练习题之一,它不仅能帮助我们巩固C语言的基础知识,还能提升我们对循环结构的理解和运用能力。在本文中,我们将深入探讨如何使用C语言编写九九乘法表,并逐步优化代码以实现更加美观的输出效果。
 

让我们从最基础的实现开始,使用两个嵌套的 for 循环,我们可以轻松地生成九九乘法表:

#include <stdio.h>

int main() {
    int i, j;
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%d*%d=%d ", i, j, i*j);
        }
        printf("\n");
    }
    return 0;
}

这段代码会输出完整的九九乘法表,但输出结果并不是很美观。我们来看一下输出结果:

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
...

我们可以看到,虽然结果是正确的,但排版不够整齐。为了改善输出效果,我们可以对代码进行一些优化。比如,我们可以调整输出格式,使用左对齐并限制字段宽度:

#include <stdio.h>

int main() {
    int i, j;
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%-8s", "");
            printf("%d*%d=%-3d", i, j, i*j);
        }
        printf("\n");
    }
    return 0;
}

在这个改进版本中,我们使用了%-2s来在每个表达式之前添加 2 个空格,使用%-3d来左对齐结果并限制其宽度为 3 个字符,这样可以使输出更加整齐:

  1*1=1    1*2=2    1*3=3    1*4=4    1*5=5    1*6=6    1*7=7    1*8=8    1*9=9
  2*1=2    2*2=4    2*3=6    2*4=8    2*5=10   2*6=12   2*7=14   2*8=16   2*9=18
  3*1=3    3*2=6    3*3=9    3*4=12   3*5=15   3*6=18   3*7=21   3*8=24   3*9=27
  ...

虽然这个版本的输出更加整齐,但它并不是我们通常看到的九九乘法表的形式,传统的九九乘法表通常只显示上半部分,即 i <= j 的部分。我们可以再次优化代码来实现这一点:

#include <stdio.h>

int main() {
    int i, j;
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= i; j++) {
            printf("%d*%d=%-4d", j, i, i*j);
        }
        printf("\n");
    }
    return 0;
}

这个版本的代码将输出传统的九九乘法表形式。注意我们交换了 i 和 j 的位置,以确保乘数始终小于或等于被乘数。输出结果如下:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

这个版本的九九乘法表更加符合我们的传统印象。然而,我们还可以进一步优化代码,使其更加灵活。例如,我们可以将乘法表的大小参数化,允许用户自定义表的大小:

#include <stdio.h>

void print_multiplication_table(int size) {
    int i, j;
    for (i = 1; i <= size; i++) {
        for (j = 1; j <= i; j++) {
            printf("%d*%d=%-4d", j, i, i*j);
        }
        printf("\n");
    }
}

int main() {
    int table_size;
    printf("请输入乘法表的大小:");
    scanf("%d", &table_size);
    print_multiplication_table(table_size);
    return 0;
}

这个版本的代码将乘法表的生成封装在一个函数中,并允许用户自定义表的大小。这种方法不仅提高了代码的可读性和可维护性,还增加了程序的灵活性。用户可以根据需要生成不同大小的乘法表,甚至可以生成超过 9*9 的乘法表。
 

通过这个循序渐进的过程,我们不仅实现了九九乘法表的基本功能,还学习了如何逐步优化代码以提高输出的美观性和程序的灵活性。这个过程体现了程序设计中重要的思想:从简单到复杂,从基础功能到优化改进。在实际的编程过程中,我们也常常需要经历这样的迭代优化过程,以不断提升代码的质量和用户体验。

相关文章