一.简单循环
输出1到100所有整数
#include <stdio.h>
int main()
{
int i;
for (int i = 1; i <= 100; i++)
{
printf("%d\n", i);
}
}
求1到100所有整数和
#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!,即求1到10的阶乘和
解法一,嵌套循环
#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!,即求1到10的阶乘和
解法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);
}