← 返回首页
C语言系列教程(十五)
发表时间:2021-03-24 23:16:13
多重循环

多重循环就是在循环结构的循环体中又出现循环结构。

在实际开发中一般最多用到三层多重循环。 循环层数越多, 运行时间越长, 程序越复杂, 所以一般用两到三层多重循环就可以了!

1.打印九九乘法表

#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.鸡兔同笼问题

有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

#include <stdio.h>
int main() {
   int xjNum; //鸡的数量
   int rabbitNum; //兔子的数量
   for(xjNum=0; xjNum<=35; xjNum++) { //鸡的数量最多35只
     for(rabbitNum=0; rabbitNum<=24; rabbitNum++) { //兔子数量最多24只
    if(xjNum+rabbitNum==35&&xjNum*2+rabbitNum*4==94) { //满足条件时
       printf("鸡的数量是:%d,兔子的数量是:%d",xjNum,rabbitNum);
    }
      }
   }
   return 0;
}

运行结果: 鸡的数量是:23,兔子的数量是:12

3.百元钱买百只鸡问题

百钱百鸡问题。用100钱买100只鸡,公鸡一只五元,母鸡一只三元,小鸡三只一元,编程计算共有几种买法。

#include <stdio.h>

int main(void)
{
    int gjNum; // 公鸡的数量
    int mjNum; // 母鸡的数量
    int xjNum; // 小鸡的数量
    int iCount = 0;
    for (gjNum = 0; gjNum <= 20; gjNum++)
    {
        for (mjNum = 0; mjNum <= 33; mjNum++)
        {
            for (xjNum = 0; xjNum <= 100; xjNum++)
            {
                // 小鸡必须是3的倍数
                if (xjNum % 3 == 0)
                {
                    if (gjNum * 5 + mjNum * 3 + xjNum / 3 == 100 && gjNum + mjNum + xjNum == 100)
                    {
                        iCount++;
                        printf("公鸡买%d只,母鸡买%d只,小鸡买%d只。\n",gjNum,mjNum,xjNum);
                    }
                }
            }
        }
    }
}

运行结果:

公鸡买0只,母鸡买25只,小鸡买75只。
公鸡买4只,母鸡买18只,小鸡买78只。
公鸡买8只,母鸡买11只,小鸡买81只。
公鸡买12只,母鸡买4只,小鸡买84只。