循环的嵌套 Nesting of loops

文章展示了两段C语言代码:一是寻找100到200之间的素数,二是计算1到10的阶乘求和。通过for循环实现基本的数值操作。

求100~200之间的所有素数

#include <stdio.h>
#include <math.h>
int main()
{
	int i;
	int k;
	int m;
	for(i = 100; i <= 200; i++)
	{
		k = sqrt(i);
		for(m = 2; m <= k; m++)
		{
			if(i % m == 0) break;
		}
		if(m <= k) continue;
		printf("%6d", i);
	}
	return 0;
}

求1!+ 2!+ ……+ 10!

#include <stdio.h>
int main()
{
	int fact;
	int n, sum;
	int i;
	for(n = 1; n <= 10; n++)
	{
		for(fact = 1, i = 1; i <= n; i++)
		   fact *= i;
		sum += fact;
	}
	printf("sum = %d",sum);
	return 0;
}

 

本关任务:掌握 shell 语句中的循环嵌套的方法和使用场景,输出系统中的可执行文件。 相关知识 循环语句可以在循环内使用任意类型的命令,包括其他循环命令。这种循环叫作嵌套循环(nested loop)。注意,在使用嵌套循环时,你是在迭代中使用迭代,与命令运行的次数是乘积关系。不注意这点的话,有可能会在脚本中造成问题。 for-for循环嵌套 这里有个在 for 循环嵌套 for 循环的简单例子。 【实例1】 #!/bin/bash # nesting for loops for (( a = 1; a <= 3; a++ )) do echo "Starting loop $a:" for (( b = 1; b <= 3; b++ )) do echo " Inside loop: $b" done done 执行脚本输出结果为: Starting loop 1: Inside loop: 1 Inside loop: 2 Inside loop: 3 Starting loop 2: Inside loop: 1 Inside loop: 2 Inside loop: 3 Starting loop 3: Inside loop: 1 Inside loop: 2 Inside loop: 3 这个被嵌套循环(也称为内部循环,inner loop)会在外部循环的每次迭代中遍历一次它所有的值。注意,两个循环的 do 和 done 命令没有任何差别。bash shell 知道当第一个 done 命令执行时,是指内部循环而非外部循环。 for-while循环嵌套 在混用循环命令时也一样,比如在 while 循环内部放置一个 for 循环。 【实例2】 #!/bin/bash # placing a for loop inside a while loop var1=5 while [ $var1 -ge 0 ] do echo "Outer loop: $var1" for (( var2 = 1; $var2 < 3; var2++ )) do var3=$[ $var1 * $var2 ] echo " Inner loop: $var1 * $var2 = $var3" done var1=$[ $var1 - 1 ] done 执行脚本输出结果为: Outer loop: 5 Inner loop: 5 * 1 = 5 Inner loop: 5 * 2 = 10 Outer loop: 4 Inner loop: 4 * 1 = 4 Inner loop: 4 * 2 = 8 Outer loop: 3 Inner loop: 3 * 1 = 3 Inner loop: 3 * 2 = 6 Outer loop: 2 Inner loop: 2 * 1 = 2 Inner loop: 2 * 2 = 4 Outer loop: 1 Inner loop: 1 * 1 = 1 Inner loop: 1 * 2 = 2 Outer loop: 0 Inner loop: 0 * 1 = 0 Inner loop: 0 * 2 = 0 until-while循环嵌套 如果真的想挑战脑力,可以混用 until 和 while 循环。 【实列3】 #!/bin/bash # using until and while loops var1=3 until [ $var1 -eq 0 ] do echo "Outer loop: $var1" var2=1 while [ $var2 -lt 5 ] do var3=$(echo "scale=4; $var1 / $var2" | bc) echo " Inner loop: $var1 / $var2 = $var3" var2=$[ $var2 + 1 ] done var1=$[ $var1 - 1 ] done 执行脚本输出结果为: Outer loop: 3 Inner loop: 3 / 1 = 3.0000 Inner loop: 3 / 2 = 1.5000 Inner loop: 3 / 3 = 1.0000 In
10-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值