循环语句考点

版权声明:允许转载,请注明文章出处 https://blog.csdn.net/Vickers_xiaowei/article/details/85958078

循环语句中的break和continue

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以:while中的break是用于永久终止循环的
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

使用循环语句的建议

  1. 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数。
  2. 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
//代码1
for (i = 0; i<N; i++)
{
 if (condition)
 DoSomething();
 else
 DoOtherthing();
}
//代码2
if (condition)
{
 for (i = 0; i<N; i++)
 DoSomething();
}
else
{
 for (i = 0; i<N; i++)
 DoOtherthing();
}

程序1比程序2多执行了N-1 次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果 N 非常大,最好采用程序2的写法,可以提高效率。如果N 非常小,两者效率差别并不明显,采用程序1的写法比较好,因为程序更加简洁。

计算 1!+2!+3!+……+10!

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include <stdio.h>

int main()
{
	int n;
	printf("请输入一个正数n>");
	while (scanf("%d", &n))
	{
		//n!+(n-1)!+(n-2)!+...+3!+2!+1!
		int ret = 0;
		int i = 0;
		for (i = n; i > 0; i--)//先算n!
		{
			int ret1 = 1;
			for (int j = i; j > 0; j--)
				ret1 *= j;
			ret += ret1;
		}
		printf("结果:%d\n", ret);
	}
	
	system("pause");
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Vickers_xiaowei/article/details/85958078