循环结构是程序设计不可缺少的一部分,包括三种循环语句:for,while,do while.
******for 循环语句
for循环的一般形式是: for(表达式1;表达式2;表达式3)
循环体
那么for循环的执行流程是什么样的呢?
首先开始循环,计算表达式1, 表达式1一般只计算一次,进入表达式2,判断表达式2的值是真还是假,如果为真,则继续执行下一步循环体,之后进入表达式3 通常是用来修改循环控制变量然后回到表达式,继续判断表达式2是真还是假,因为表达式2也可表示循环控制变量 ,当表达式2仍然为真时,继续下一步循环。也就是说,只有表达式2 一旦为假,整个for循环就结束。
例1:求n的1-5次方
输入整数n,然后输出n的1-5次方(空格区分)
例如输入-1,输出-1 1 -1 1 -1
算法描述:
输入:整数n
输出:n的1次方,2次方,…,5次方
算法思想:用i表示第i次方,从i递增到5;result=resultn;则每乘1次n,求n的i次方的结果。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,r;
long result=1; //如果n的值很大,结果可能会放不下,所以此处用 long
r=scanf_s("%d",&n); //此处应该判断一个数据有没有正确的读进来
if(r<1) //此处判断!
{
printf(“input error!”);
return -1; //return非0是错误的推出
}
for (int i=1,i<=5,++i)
{
result=n;
printf("%ld",result);
}
printf("\n");
system(“pause”);
return 0;
}
注意:使用for语句的灵活性
1.使用逗号运算符
for(i=0,j=100;(j-i)>10;i++,j-5)
2.允许在循环体内改变循环控制变量的值
sum=0;
for(count=1;count<=100;count++)
{
scanf("%d",&intnumber);
sum+=intnumber;
if(sum>=3000)
count=100 //此处可看出,for循环也有可能只有一次循环,
}
3.三个表达式均可缺省
(1) . for(i=0;i!=100)
scanf("%d",&i)
(2). i=(a+b)/2 //省略表达式3
for(;i>20;i++) //省略表达式1
(3)for(;😉 // 死循环
(4)for(i=1,j=1;i<1000;i++,j*=1);
for(i=1,j=1;i<1000;i++)j*=1;
例2:输出一个九九乘法表
输出样例
分析:
(1)第一行是1-9递增输出
(2)然后输出分割线
(3)从第三行开始:用变量i从1-9递增,控制行的变化
变量j从1-9递增,控制列的变化,输出结果是i*j的值。
注意:每输出9个数,第10个数就应该是换行符!
程序代码:
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<10;i++)
printf("%4d",i);
printf("\n-------------------------------------\n");
for(i=1;i<10;i ++) //控制行
for(j=1;j<10;j++) //控制列
if(j!=9)
printf("%4d",ij);
else
printf("%4d\n",ij);
return 0;
}
**while和do while语句
fory语句通常可以预知循环次数;若不能,则可使用while或者do while语句。
一般形式:while(表达式)
{
循环体;
}
do while语句
后判定循环控制条件,至少需要执行一次循环体。
一般形式为:do {
循环体
}
while (表达式); //表达式为假退出循环
do while 先循环后判断,所以至少一次循环
由上可知,循环有当型循环和知道型循环,当型先判断后循环,知道型先循环后判断。