C语言for的双重循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言for的双重循环相关的知识,希望对你有一定的参考价值。

99乘数表
main()
int i,j;
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
printf("%d*%d=%d\n",i,j,i*j);
getch();
我想知道这里的双重循环是如何执行的说详细点
哪个是外循环和内循环
先执行哪个循环??
最不懂的就是这个了

这里的双重循环for(i=1;i<=9;i++)是外循环,for(j=1;j<=9;j++)是内循环。先执行循环for(j=1;j<=9;j++),即在每一个i下,循环j的值。

具体的循环的访问次序是,首先取i=1,在此条件下,进行内循环for(j=1;j<=9;j++),依次访问(i=1,j=1),(i=1,j=2),(i=1,j=3)....执行完内循环后(j加到9的时候),执行一次外循环,i++。

此时i=2,在i=2的条件下,再一次进行内循环for(j=1;j<=9;j++),依次访问(i=2,j=1),(i=2,j=2),(i=2,j=3)....,其他的继续按照这个步骤操作下去。

扩展资料:

c语言三种循环do while、for、while的异同点:

用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式。

也就是说do…while的循环体最少被执行一次,而while循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

参考资料:百度百科—c语言

参考技术A 你可以试着画一个程序执行的流程图,那样就会看得很明白了。
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
printf("%d*%d=%d\n",i,j,i*j);
getch();
两个for,外面的是外循环,里面的是内循环。你应该知道程序有3种基本控制结构吧:顺序,条件,循环。所以没有特殊情况的话程序当然是按照代码的顺序执行的,这样就知道先执行那个了,是代码在前面的那个循环,就是外循环了。然后进入循环控制结构。

从外循环进入内循环,然后判断j的值,看是否小于9,若是不小于,条件为真,则一直进行内循环,当j大于9的时候,跳出循环,接着判断i的值。看是否小于9,若是不小于,则进入外循环,接着进入内循环。如此反复。 这才是循环的特点。本回答被提问者采纳
参考技术B for(i=1;i<=9;i++)外循环
for(j=1;j<=9;j++) 内循环
printf("%d*%d=%d\n",i,j,i*j);
getch();
你都把I和J的值打出来了 ,应该知道是怎么循环的了 首先外循环I=1 满足条件,到FOR内循环 开始J=1 直到J=9 循环9次 J=10不满足条件跳出内循环,回到外循环 I=2 依次类推 就是这么执行的
参考技术C for(i=1;i<=9;i++)//外循环

for(j=1;j<=9;j++) //内循环
printf("%d*%d=%d\n",i,j,i*j);

getch();


外循环每执行一步,内循环执行一圈。
外循环相当于时钟的分针,内循环相当于秒针。
参考技术D 先i=1,然后执行从j=1到9
然后i=2,然后执行从j=1到9
。。
一直到i=9,然后执行从j=1到9
i=10,跳出循环

Shell的双重循环

Shell的双重循环

双重循环

即在一个for循环内部再加上一个for循环

for ((变量=X; 指定变量范围; 指定变量迭代的方式))#定义外循环
do
  for ((变量=X; 指定变量范围; 指定变量迭代的方式))#定义内循环
  do
  命令序列
  指定变量迭代的方式
  done
  命令序列
done
例:
#!/bin/bash
for ((a=1; a<=5; a++))
do
  echo "外部循环 $a"
  for ((b=1; b<=5; b++))
  do
    echo "    内部命令 $b"
  done
done


exit  用于退出脚本进程

break [n]  用于跳出单(n代表多少层)层循环

continue 用于中止某次循环中的操作,但是不会完全终止整个循环命令

break

使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

  • 跳出当前循环
  • 并且break下面的语句不去执行
例:
#!/bin/bash
for ((a=1; a<=5; a++))
do
  echo "外部循环 $a"
  for ((b=1; b<=5; b++))
  do
    if [ $b -eq 3 ]
    then
    break
    fi
    echo "    内部命令 $b"
  done
  echo ""
done

#!/bin/bash
for ((a=1; a<=5; a++))
do
  echo "外部循环 $a"
  for ((b=1; b<=5; b++))
  do
    echo "    内部命令 $b"
    if [ $b -eq 3 ]
    then
    break
    fi
  done
  echo ""
done


continue

在内循环中执行continue 剩余的语句而强制执行下一次循环,其作用为结束本次循环

  • 即跳过循环体中下面尚未执行的语句
  • 接着进行下一次是否执行循环的判定。
例:
#!/bin/bash
for ((a=1; a<=5; a++))
do
  echo "外部循环 $a"
  for ((b=1; b<=5; b++))
  do
    if [ $b -eq 3 ]
    then
    continue
    fi
    echo "    内部命令 $b"
  done
done


双重循环示例:

①.直角三角形的四种示例
#!/bin/bash
echo "直角三角形1"
for ((a=1;a<=9;a++)) #先定义外循环也就是三角形的高
do
  for ((b=1;b<=a;b++)) #此为内循环我们定义三角形的每一行行数
  do
  echo -n "*"   #用"*"来填充,从而打印出三角形;此间因为"-n"所以不换行输出
  done
echo ""   #空格自动进行换行
done
#!/bin/bash
echo "直角三角形2"
for ((a=1;a<=9;a++)) #同样的,先定义外循环也就是三角形的高
do
  for ((b=9;b>=a;b--)) #此为内循环我们定义三角形的每一行行数
  do
  echo -n " "    #因为我们打印的是反向的三角形所以我们理解成拼凑出一个长方形然后一半用空白填充
  done
  for ((c=1;c<=a;c++)) #此为内循环我们定义三角形的每一行行数
  do
  echo -n "*"    #用"*"来填充,从而打印出三角形;此间因为"-n"所以不换行输出
  done
echo ""
done
#!/bin/bash
echo "倒直角三角形1"
for ((a=1;a<=9;a++))
do
  for ((b=1;b<=a;b++))
  do
  echo -n " "
  done
  for ((c=9;c>=a;c--))
  do
  echo -n "*"
  done
echo ""
done
#!/bin/bash
echo "倒直角三角形2"
for ((a=9;a>=1;a--))
do
  for ((b=1;b<=a;b++))
  do
  echo -n "*"  
  done
echo " "
done

②.打印出菱形
#!/bin/bash
#等腰三角形
for ((a=1; a<=9; a++))
 do
for ((b=9; b>=a; b--))
do
echo -n " "
done
i=$[($a*2)-1]
for j in $(seq 1 $i)
#for((j=1; j<=i; j++))
do
echo -n "*"
done
echo ""
done
等腰三角形的两种写法,此刻两个等腰三角形相结合拼凑出一个菱形,注意上下的等腰三角形不是一样的边长
for ((a=2; a<=9; a++))
 do
for ((b=1; b<=a; b++))
do
echo -n " "
done
for ((c=9;c>=a;c--))
do
echo -n "*"
done
for ((d=8;d>=a;d--))
do
echo -n "*"
done
echo ""
done

③.99乘法表的两种写法
#!/bin/bash
for ((a=1; a<=9; a++ ))
do
  for (( b=1; b<=a; b++ ))
  do
  sum=$[$a * $b]
  let sum=$a*$b
  echo -n -e "$a*$b=$sum\\t"
  done
  echo ""
done

#while的写法
a=1
while [ $a -le 9 ]
  do
  b=1
  while [ $b -le $a ] && [ $b -ge 1 ]
  do
  sum=$[$a*$b]
  echo -ne "$a*$b=$sum\\t"
  let b++
done
 let a++
  echo ""
done


补充:打印五角星
#!/bin/bash
#最上方的三角形部分
for ((i=0; i<10; i++))

    for ((j=1; j<20; j++))
    
        echo -n " "
    
    for ((j=10; j>i; j--))
    
        echo -n " "
    
    for ((j=0; j<i*2+1; j++))
    
        echo -n "*"
    
    echo  ""

#倒梯形部分
for ((i=0; i<6; i++))

    for ((j=0; j<i*3; j++))
    
        echo -n "."
    
    for ((j=60; j>i*6; j--))
    
        echo -n "*"
    
    echo  ""

#正梯形部分
for ((i=0; i<5; i++))

    for ((j=17; j>i; j--))
    
        echo -n "."
    

    for ((j=0; j<25+i*2; j++))
    
        echo -n "*"
    
    echo  ""

#最下面的双三角形部分
for ((i=1; i<=5; i++))

    for ((j=12; j>=i; j--))
    
        echo -n "."
    
    for ((j=15; j>=i*3; j--))
    
        echo -n "*"
    
    for ((j=0; j<=i*8; j++))
    
        echo -n "."
    
    for ((j=15; j>=i*3; j--))
    
        echo -n "*"
    
    echo  ""


以上是关于C语言for的双重循环的主要内容,如果未能解决你的问题,请参考以下文章

c语言 for循环次数

如何用c语言双for循环输出下面图形??

c语言中的循环的嵌套是怎么运行的

c语言一个死循环中为啥执行完一个功能函数就退出了?

C语言 用星号*打印菱形或其他图形 详解

c语言入门教程–-9循环与条件语句习题与总结