第31节 循环控制结构

一.简单循环

输出1100所有整数
#include <stdio.h>
int main()
{
    
    
	int i;
	for (int i = 1; i <= 100; i++)
	{
    
    
		printf("%d\n", i);
	}
}
1100所有整数和
#include <stdio.h>
int main()
{
    
    
	int sum = 0;
	for (int i = 1; i <= 100; i++)
	{
    
    
		sum = i + sum;
	}
	printf("%d", sum);
}
1到m的倒数和
#include <stdio.h>
int main()
{
    
    
	double m, sum=0;
	scanf_s("%lf", &m);
	for (double i = 1; i <= m; i++)
	{
    
    
		sum = sum + 1 / i;
	}
	printf("%lf", sum);
}
1到m的平方和
#include <stdio.h>
int main()
{
    
    
	int m, sum = 0;
	scanf_s("%d", &m);
	for (int i = 1; i <= m; i++)
	{
    
    
		sum = sum + i * i;
	}
	printf("%d", sum);
}
1到m间所有奇数的和
#include <stdio.h>
int main()
{
    
    
	int m, sum = 0;
	scanf_s("%d", &m);
	for (int i = 1; i <= m; i=i+2)
	{
    
    
		sum = sum + i ;
	}
	printf("%d", sum);
}
1到m的正负倒数和
#include <stdio.h>
int main()
{
    
    
	double m, sum = 0;
	scanf_s("%lf", &m);
	for (double i = 1, j = -1; i <= m; i++, j = -j)
	{
    
    
		sum = sum + (-1) * j / i;
	}
	printf("%lf", sum);
}
求m的阶乘
#include <stdio.h>
int main()
{
    
    
	int m, sum = 1;
	scanf_s("%d", &m);
	for (int i = 1; i <= m; i++)
	{
    
    
		sum = sum * i;
	}
	printf("%d", sum);
}

二.次数不确定的循环

当n为多少时,n!将超过10000#include <stdio.h>
int main()
{
    
    
	int i, sum = 1;
	for (i = 1; sum <= 10000; i++)
	{
    
    
		sum = sum * i;
	}
	printf("%d", i-1);
}
求PI的近似值(计算直到最后一项的绝对值小于10^-5#include <stdio.h>
int main()
{
    
    
	double sum = 0, s = 1;
	for (double i = 1, j = 1; s > 0.00001; i++, j = -j)
	{
    
    
		s = 1 / (2 * i - 1);
		sum = sum + j * s;
	}
	printf("%f", 4 * sum);
}
3.141613
Fibonacci数列特点是:第一、二个数是1,从第3个数开始,每个数是其前两个数之和。
这个数列为:1 1 2 3 5 8 13 21 34 55 89 ……,输出这个数列,直到这个数字超过10000
#include <stdio.h>
int main()
{
    
    
	printf("1  ");
	for (int a1 = 0, a2 = 1, a3; a1 + a2 < 10000; a1 = a2, a2 = a3)
	{
    
    
		a3 = a1 + a2;
		printf("%d  ", a3);
	}
}
运行结果:
1  1  2  3  5  8  13  21  34  55  89  144  233  377  610  987  1597  2584  4181  6765

三.循环的嵌套

求sum=a 1 +a 2 +a 100 =1+(1+2)+……+(1+2+3+……+100)
#include <stdio.h>
int main()
{
    
    
	int sumi = 0, sumj = 0;
	for (int i = 1; i <= 100; i++)
	{
    
    
		sumj = 0;
		for (int j = 1; j <= i; j++)
		{
    
    
			sumj += j;
		}
		sumi += sumj;
	}
	printf("%d\n", sumi);
}
运行结果:
171700
求s=1!+2!+……10!,即求110的阶乘和
解法一,嵌套循环

#include <stdio.h>
int main()
{
    
    
	int j = 1, sumi = 0, sumj = 1;
	for (int i = 1; i <= 10; i++)
	{
    
    
		for (j = 1, sumj = 1; j <= i; j++) sumj *= j;
	//若for(int j=1,sumj=1;;),那么sumj被新定义为嵌套for内部变量,出现错误;
		sumi += sumj;
	}
	printf("result: %d\n", sumi);
}
求s=1!+2!+……10!,即求110的阶乘和
解法2,不用嵌套

#include <stdio.h>
#include <stdio.h>
int main()
{
    
    
	int j = 1, sumi = 0, sumj = 1;
		for (j = 1, sumj = 1; j <= 10; j++)
		{
    
                            // j   值变化: 1,2     ,3
			sumj *= j;           // sumj值变化: 1,1*2   ,1*2*3
			sumi += sumj;        // sumi值变化: 1,1+1*2 ,1+1*2+1*2*3
		}
	printf("result: %d\n", sumi);
}
求s=1+2^2 +3^3 +4^4 +5^5 +6^6 ,要求n不能用求幂的运算直接计算
#include <stdio.h>
int main()
{
    
    
	int sumi = 0, sumj = 1;
	for (int i = 1; i <= 3; i++)
	{
    
    
		sumj = 1;
		for (int j = 1; j <= i; j++)
		{
    
    
			sumj *= i;
		}
		sumi += sumj;
	}
	printf("result: %d\n", sumi);
}

猜你喜欢

转载自blog.csdn.net/m0_51439429/article/details/115057976
今日推荐