热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言if语句嵌套(c语言嵌套)

虽说是多层,事实上for循环嵌套的层数也不能太多。通常为两个for循环的嵌套,超过两个的极少使用。与单个for循环相比,多个for循环的嵌套在逻辑上更复杂一点,但并不难懂


虽然说是多层,但实际上for循环嵌套的层数不能太多。 通常是两个for循环的嵌套,很少使用超过两个的。


与单个for循环相比,多个for循环的嵌套在逻辑上要复杂一些,但也不是很难理解。


我直接给大家写程序:


# #包括stdio.h


int main (语音) )。


{


英特尔,j;


for(I=0; i4; I ) )


{


printf (当问到世间之情是什么时,直接告诉我生死并答应(n ) );


for(j=0; j3; j )日本


{


printf (如果两情相悦,朝暮暮吗(n ) );


}


}


返回0;


{1}输出结果如下所示。


询问世间之情是什么,直接告诉我生死并答应


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


询问世间之情是什么,直接告诉我生死并答应


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


询问世间之情是什么,直接告诉我生死并答应


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


询问世间之情是什么,直接告诉我生死并答应


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


在漫长的时间里,两种感情,是走向黄昏吗


=============


其实,多层for循环的嵌套执行过程和单一for循环的执行过程一模一样。 多层for循环的嵌套只是将单个for循环大括号中的“语句”替换为for循环。


让我们看看上面的程序如何执行两个for循环的嵌套。


1 )先解式1。 即,对变量I赋予初始值,i=0; 表达式1只执行一次,以后不再执行。


2 )然后,当求解式2,即04成立时,执行for循环内的嵌入语句。


printf (当问到世间之情是什么时,直接告诉我生死并答应(n ) );


for(j=0; j3; j )日本


{


printf (如果两情相悦,朝暮暮吗(n ) );


}


===================


首先“printf ()世间之情是什么,直接告诉我生死并约定(n ) )”,然后执行内部的for循环,将“单一for循环”的执行过程再次应用于该for循环。


首先求解式1,即赋予变量j初始值,设为j=0。


然后,式2、即03成立时,执行for循环中的嵌入语句、即“printf (两情相悦时,朝暮(n ) )”。


然后执行公式3,将变量j递增1。 也就是说,变量j从0变为1。


然后,如果式2,即13成立,则执行for循环中的嵌入语句,即“printf ()两情相悦时,朝暮(n )”。


然后执行公式3,将变量j加1。 也就是说,变量j从1变为2。


然后,如果式2、即23成立,则执行for循环中的嵌入语句,即“printf ()两情长时,朝暮(n ) )”。


然后执行公式3,将变量j加1。 也就是说,变量j从2变为3。


然后解式2,即如果33不成立,内部循环就结束。 对内部的for来说循环结束了,但对外部的for来说,“for循环的执行”过程执行到了式3。


3 )然后执行公式3,将变量I加1。 也就是说,变量I从0变为1。


4 )然后解算式2……


.


这样持续循环直到外侧循环结束,整个循环结束。


总之,无论是单个for循环还是嵌套多个for循环,执行过程都是相同的。 但是,在“多个for循环的嵌套”的情况下,其执行过程也是嵌套的。


for循环嵌套编程练习 1、求出 1!+2!+3!+…+n!的和。这个程序之前一个for编程也可以实现,但是逻辑性太强了,现在再用for循环嵌套编程实现一下:


# #包括stdio.h


int main (语音) )。


{


int n=0; //储存装置1! 2! 3! … n! 中n的值


int i=0,j=0; //循环变量


int m=1; //用于计算各数量的阶乘


无符号长和=0; /*阶乘的值大多很大,被定义为lo

ng型。虽然如此, 下面输入的n的值也不能太大, 不然long也放不下*/
    printf("请输入n的值:");
    scanf("%d", &n);
    for (i=1; i<=n; ++i)
    {
        for (j=1; j<=i; ++j)  //求一个数的阶乘
        {
            m = m*j;
        }
        sum = sum + m;  //求完之后就立即把它加到sum中
        m = 1;
    }
    printf ("sum = %ld\n", sum);
    return 0;
}

==========

输出结果是:

请输入n的值:10

sum = 4037913

我们看到 n 的值仅为 10 结果就这么大,要再大点 long 类型肯定是存放不了的。此外,有人可能会纠结这样的问题,程序开头定义那么多变量,可是我写的时候怎么知道后面要用到哪些变量呢?

其实,这些变量都不是刚开始写程序的时候就定义的,大多数情况下都是“善良的白开水开始知道定义哪些变量那么就定义上,如果不知道那就不定义,等到后面需要用再回到前面进行定义”,这才是正常的逻辑。

2、求出用 50元、20元 和 10元换算 100元有几种方式?

思路:用穷举法, 将所有可能的情况都列出来, 用 for 循环可以实现穷举

分析:100 元单用 50 换算, 最多需要两张;用 20 元换算, 最多需要五张;用 10 元换算最多需要十张

#include
int main(void)
{
    int w, e, s;  //w代表wushi;e代表ershi;s代表shi
    for (w=0; w<=2; ++w)
    {
        for (e=0; e<=5; ++e)
        {
            for (s=0; s<=10; ++s)
            {
                if (100 == 50*w+20*e+10*s)
                {
                    printf("%d  %d  %d\n", w, e, s);
                }
            }
        }
    }
    return 0;
}

=========

输出结果是:

0 0 10

0 1 8

0 2 6

0 3 4

0 4 2

0 5 0

1 0 5

1 1 3

1 2 1

2 0 0

3、“百钱买百鸡”是中国古代一个著名的枚举法题目。

所谓枚举就是将所有可能的情况全部列出来的意思。for 循环嵌套是实现枚举的一种手段,上面的换算也是一种枚举。假设公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元 3 只,现在给你 100 元,要你买回 100 只鸡,求出公鸡、母鸡、小鸡分别为多少只。

#include
int main(void)
{
    int x, y, z;  //x、y、z 分别表示公鸡、母鸡、小鸡
    for (x=0; x<20; ++x)
    {
        for (y=0; y<33; ++y)
        {
            z = 100 - x - y;  //小鸡也可以用循环,但是能用二层循环解决的就不要用三层。
            if ((0 == z%3) && (100 == 5*x + 3*y + z/3))  //将 0==z%3 放前面更好,因为 && 是“短路与”,前面不成立后面就不会执行了,所以把计算量小的放前面。
            {
                printf("x = %d, y = %d, z = %d\n", x, y, z);
            }
        }
    }
    return 0;
}

==========

输出结果是:

x = 0, y = 25, z = 75

x = 4, y = 18, z = 78

x = 8, y = 11, z = 81

x = 12, y = 4, z = 84

==================================

for循环嵌套我们就学习到这里。

如果你还想更深入地学习以及其他知识,不管你是转行也好,初学也罢,进阶也可~

【值得关注】我!


推荐阅读
author-avatar
88943w
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有