C语言编程题打印九九乘法表

打印九九乘法表是一个经典的编程练习,通过不同的方法实现可以帮助我们更好地理解循环、条件判断和格式化输出。通过练习这些不同的方法,可以更好地掌握 C 语言中的循环和递归概念。

1、使用嵌套 for 循环

#include <stdio.h>

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

2、使用 while 循环

#include <stdio.h>

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

3、使用 do-while 循环

#include <stdio.h>

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

4、使用递归

#include <stdio.h>

void printMultiplicationTable(int i, int j) {
    if (i > 9) return;
    if (j > i) {
        printf("\n");
        printMultiplicationTable(i + 1, 1);
    } else {
        printf("%d * %d = %d\t", j, i, i * j);
        printMultiplicationTable(i, j + 1);
    }
}

int main() {
    printMultiplicationTable(1, 1);
    return 0;
}

5、使用单一循环和条件判断

#include <stdio.h>

int main() {
    for (int k = 1; k <= 45; k++) {  // 45 行输出
        int i = (k - 1) / 9 + 1;
        int j = k % 9 == 0 ? 9 : k % 9;
        if (j <= i) {
            printf("%d * %d = %d\t", j, i, i * j);
            if (j == i) printf("\n");
        }
    }
    return 0;
}

6、使用宏定义

#include <stdio.h>

#define PRINT_TABLE() \
    for (int i = 1; i <= 9; i++) { \
        for (int j = 1; j <= 9; j++) { \
            printf("%d*%d=%2d  ", i, j, i * j); \
        } \
        printf("\n"); \
    }

int main() {
    PRINT_TABLE();
    return 0;
}

7、使用指针和动态内存分配

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *table = (int *)malloc(9 * 9 * sizeof(int));
    if (table == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }

    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            *(table + (i - 1) * 9 + (j - 1)) = i * j;
        }
    }

    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            printf("%d*%d=%2d  ", i, j, *(table + (i - 1) * 9 + (j - 1)));
        }
        printf("\n");
    }

    free(table);
    return 0;
}

推荐阅读
cjavapy编程之路首页