目录
5.1引例
- 需要重复执行的语句称为循环语句,在重复执行的过程中使用了同一个计算公式,但年份每次递减1应是计算出人口会不同
int main()
{
int n = 13, year;
double nu, r = 0.02;
for (year = 1; year <= 10; year++)
{
nu = n * pow((1 + r), year);
printf("%2d年后,人数为:%.2f亿\n", year, nu);
}return 0;
}
- while语句是3种循环结构之一,while后括号中的表达式称为循环条件,循环开始时,一定要保证循环条件为真。
- 需要重复执行的语句组成了循环体,本例中循环体部分是重复计算item,然后将其值与要求的精度进行比较,决定是否结束循环
int main()
{
double sum, item, flag, denominator;
sum = 0; item = 1; flag = 1; denominator = 1;
while (fabs(item) >= 1e-6)
{
sum = sum + item;
flag = -flag;
denominator = denominator + 3;
item = flag / denominator;
}printf("sum=%f\n", sum);
return 0;
}
5.2使用for语句实现循环结构
5.2.1for语句的基本循环
for语句的一般形式为:
for(表达式1;表达式2;表达式3;)
循环体结构;
for语句的执行过程如下:
- 首先计算表达式一
- 判断表达式二若琪只为真则执行循环体语句,然后执行第3步,值为假结束循环,转到第5步执行
- 计算表达式3
- 返回第2步继续执行循环
- 结束继续执行for语句的下一条语句
for(循环变量赋初值;循环条件;循环变量增量;)
说明:循环变量赋初值是一个赋值语句,用于给循环变量赋初值,循环条件是一个关系表达式,决定如何种植循环(即确定循环的终止),循环变量增值决定循环变量在完成一次循环后如何变化,向部分之间以‘;’隔开
int main()
{
int i, n, sum;
scanf_s("%d", &n);
sum = 0;
for (i = 1; i <= n; i++)
sum = sum + i;
printf("由1到%d的和是:%d\n", n, sum);
return 0;
}
本题目是个连乘的重复过程。
int main()
{
int i, n;
double f;
printf("输入n的值:");
scanf_s("%d", &n);
f = 1;
for (i = 1; i <= n; i++)
f = f * i;
printf("%d=%.0f\n", n, f);
return 0;
}
2.for语句的一般形式中省略表达式.
1.for(;表达式2;表达式3;)
循环体语句;
注意:此时不能省略第一个;。
2.for(表达式1;;表达式3;)
省略表达式2时,表示不对循环进行控制,这是不处理的话,会形成死循环;
3.for(表达式1;表达式2;;)
可以在循环语句中加入修改循环变量的值的语句。。
5.2.2for循环使用示例
int main()
{
int n, i, denominator, flag;
float sum, item;
printf("输入n的值:");
scanf_s("%d", &n);
flag = 1;
denominator = 1;
sum = 0;
for(i=1;i<=n;i++)
{
item = flag * 1.0 / denominator;
sum = sum + item;
flag = -flag;
denominator = denominator + 3;
}printf("Sum=%.2f\n", sum);
return 0;
}
//int main()
//{
// int i;
// float x, max;
// printf("请输入第1个数:");
// scanf_s("%f", &x);
// max = x;
// for(i=1;i<=9;i++)
// {
// printf("请输入第%d个数:", i + 1);
// scanf_s("%f", &x);
// if (x > max)
// max = x;
// }printf("10个数的最大数是:%0.f",max);
// return 0;
//
//}
//int main()
//{
// int n, a, b, c;
// for (n = 100; n <= 999; n++)
// {
// a = n / 100;
// b = n % 100 / 10;
// c = n % 10;
// if (n == a * a * a + b * b * b + c * c * c)
// printf("%5d", n);
// }return 0;
//}
//int main()
//{
// int n, sum, i;
// printf("请输入一个正整数:");
// scanf_s("%d", &n);
// sum = 0;
// for (i = 1; i <= n - 1; i++)
// if (n % i == 0)
// sum = sum + i;
// if (n == sum)
// printf("%d是完数\n", n);
// else
// printf("%d不是完数\n", n);
// return 0;
//}