首页 > 编程知识 正文

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

时间:2023-05-05 03:36:10 阅读:92432 作者:4256

虽然说是多层,但实际上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 = %ldn", sum);     return 0; }

==========

输出结果是:

请输入n的值:10

sum = 4037913

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

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

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

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

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

#include <stdio.h> 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  %dn", 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 <stdio.h> 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 = %dn", 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循环嵌套我们就学习到这里。

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

【值得关注】我!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。