• C语言基础--循环 递归打印乘法表


    for循环打印乘法表:

    #include <stdio.h>
    //  for循环打印乘法表
    int main(int argc, const char * argv[]) {
        //矩形
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                printf("%i * %i = %i	", j, i, i * j);
            }
            printf("
    ");
        }
        printf("
    ");    
    
        //尖尖朝上
        for(int i = 1; i <= 9; i++){
            for (int j =1; j <= i; j++) {
                printf("%i * %i = %i	", j, i, i * j);
            }
            printf("
    ");
        }
        printf("
    ");    
    
        //尖尖朝下
        for (int i = 1; i <= 9; i++) {
            for (int j = i; j <= 9; j++) {
                printf("%i * %i = %i	", i, j, i * j);
            }
            printf("
    ");
        }  
        return 0;
    }
    /*
     输出结果:
     1 * 1 = 1  2 * 1 = 2   3 * 1 = 3   4 * 1 = 4   5 * 1 = 5   6 * 1 = 6   7 * 1 = 7   8 * 1 = 8   9 * 1 = 9
     1 * 2 = 2  2 * 2 = 4   3 * 2 = 6   4 * 2 = 8   5 * 2 = 10  6 * 2 = 12  7 * 2 = 14  8 * 2 = 16  9 * 2 = 18
     1 * 3 = 3  2 * 3 = 6   3 * 3 = 9   4 * 3 = 12  5 * 3 = 15  6 * 3 = 18  7 * 3 = 21  8 * 3 = 24  9 * 3 = 27
     1 * 4 = 4  2 * 4 = 8   3 * 4 = 12  4 * 4 = 16  5 * 4 = 20  6 * 4 = 24  7 * 4 = 28  8 * 4 = 32  9 * 4 = 36
     1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  6 * 5 = 30  7 * 5 = 35  8 * 5 = 40  9 * 5 = 45
     1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  7 * 6 = 42  8 * 6 = 48  9 * 6 = 54
     1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  8 * 7 = 56  9 * 7 = 63
     1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  9 * 8 = 72
     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 
    
     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 
    
     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 * 2 = 4   2 * 3 = 6   2 * 4 = 8   2 * 5 = 10  2 * 6 = 12  2 * 7 = 14  2 * 8 = 16  2 * 9 = 18
     3 * 3 = 9   3 * 4 = 12  3 * 5 = 15  3 * 6 = 18  3 * 7 = 21  3 * 8 = 24  3 * 9 = 27
     4 * 4 = 16  4 * 5 = 20  4 * 6 = 24  4 * 7 = 28  4 * 8 = 32  4 * 9 = 36
     5 * 5 = 25  5 * 6 = 30  5 * 7 = 35  5 * 8 = 40  5 * 9 = 45
     6 * 6 = 36  6 * 7 = 42  6 * 8 = 48  6 * 9 = 54
     7 * 7 = 49  7 * 8 = 56  7 * 9 = 63
     8 * 8 = 64  8 * 9 = 72
     9 * 9 = 81
     */ 

    递归替换for循环:

    #include <stdio.h> 
    
    void printfMultiple(int);
    void printfMultiple1(int);
    void printfMultiple2(int);
    void replaceFor(int,int);
    
    int main(int argc, const char * argv[]) {   
        /*
         int i
         i 从 1 加到 9
         输出 i * 1 ~ 9 的结果
         i == 0时退出
         */
        int num1 = 9;
        printfMultiple(num1);   
        printf("
    ");   
    
        int num2 = 1;
        printfMultiple1(num2);   
        printf("
    ");    
    
        int num3 = 1;
        printfMultiple2(num3);   
    
        return 0;
    } 
    
    //输出结果: 尖尖朝下
    void printfMultiple(int i){
        if(0 == i){
            return;
        }
        else{
            //输出 i * 1 到 i * 9 的结果
            for (int j = 1; j <= i ; j++) {
                printf("%i * %i = %i	", i, j, i * j);
            }
            printf("
    ");
            // i 控制 行数  i-- 表示进行下一行的输出
            i--;
            printfMultiple(i);
        }
    } 
    
    // 如果 i 从 1 开始  i = 10 结束  就尖尖朝上了
    void printfMultiple1(int i){
        if (10 == i) {
            return;
        }
        else{
            for (int j = 1; j <= i; j++) {
                printf("%i * %i = %i	", j, i, i * j);
            }
            printf("
    ");
            i++;
            printfMultiple1(i);
        }
    } 
    
    /*用递归替换方法体里的for循环
        接收参数 i j
        退出条件 j == i + 1
    */ 
    void printfMultiple2(int i){
        if (10 == i) {
            return;
        }
        else{
            replaceFor(i, 1);
            printf("
    ");
            i++;
            printfMultiple2(i);
        }
    }
    
    //用这个方法替换到原来for循环的位置
    void replaceFor(int num1, int num2){
        if (num2 == num1 + 1) {
            return;
        }
        else{
            printf("%i * %i = %i	", num2, num1, num1 * num2);
            num2++;
            replaceFor(num1, num2);
        }
    }
    /*
     输出结果:
         9 * 1 = 9  9 * 2 = 18  9 * 3 = 27  9 * 4 = 36  9 * 5 = 45  9 * 6 = 54  9 * 7 = 63  9 * 8 = 72  9 * 9 = 81
         8 * 1 = 8  8 * 2 = 16  8 * 3 = 24  8 * 4 = 32  8 * 5 = 40  8 * 6 = 48  8 * 7 = 56  8 * 8 = 64
         7 * 1 = 7  7 * 2 = 14  7 * 3 = 21  7 * 4 = 28  7 * 5 = 35  7 * 6 = 42  7 * 7 = 49
         6 * 1 = 6  6 * 2 = 12  6 * 3 = 18  6 * 4 = 24  6 * 5 = 30  6 * 6 = 36
         5 * 1 = 5  5 * 2 = 10  5 * 3 = 15  5 * 4 = 20  5 * 5 = 25
         4 * 1 = 4  4 * 2 = 8   4 * 3 = 12  4 * 4 = 16
         3 * 1 = 3  3 * 2 = 6   3 * 3 = 9
         2 * 1 = 2  2 * 2 = 4
         1 * 1 = 1     
    
         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     
    
         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
     */

     

  • 相关阅读:
    i++和++i
    MySQL 5.6 for Windows 解压缩版配置安装-----------有点难看懂
    mysqld install报错:Install/Remove of the Service DeniedMy/Authentication plugin 'caching_sha
    mysql中,执行mysqld –install命令 、net start mysql命令出错的解决办法
    Mysql 服务无法启动 服务没有报告任何错误------------------mysql安装步骤
    mysql数据库安装步骤
    对io进行分流
    JDBC、mybatis、hibernate连接数据库
    当前电商行业的介绍
    MySQL常见常用的SQL优化
  • 原文地址:https://www.cnblogs.com/dx-230/p/4755989.html
Copyright © 2020-2023  润新知