循环结构就是在给定条件成立时,反复执行某段程序,给定的条件称之为循环条件,反复执行的程序称之为循环体。
常见的循环语句为3种
1.while语句
2.do-while语句
3.for语句
还有goto与if嵌套的语句也能构成循环。
#include"stdio.h"
int main()
{
int i,sum=0;
i=1;
loop: if(i<=100)
{sum=sum+i;
i++;
printf("%d\n",sum);
goto loop;}
printf("%d\n",sum);
return 0;
}
01--while语句
一般形式: while(表达式)语句
其中表达式为循环条件,语句为循环体
#include"stdio.h"
int main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
return 0;
}
#include <stdio.h>
int main(){
int n=0;
printf("input a string:\n");
while(getchar()!='\n') n++;
printf("%d",n);
return 0;
}
#include <stdio.h>
int main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
return 0;
}
02--do-while语句
一般形式为:
do
语句
while(表达式)
先执行一次循环体语句,为真则继续循环,为假则退出循环,即至少执行一次循环语句
#include <stdio.h>
int main()
{
int i,sum=0;
i=1;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf("%d\n",sum);
return 0;
}
![](https://i-blog.csdnimg.cn/direct/eec004f424cc43c6a63001365b389056.png)
03--for语句
一般形式:
for(表达式1;表达式2;表达式3) 语句
先求表达式1;再求表达式2,若为真,执行语句,再执行表达式3,再求表达式2,如此循环,若为假,则结束循环
可以理解为
for(循环变量赋初值;循环条件;循环变量增量) 语句
for语句可以与while语句相互转化
例:
for(i=1;i<100;I++) sum=sum+i;
相当于
i=1;
while(i<100)
{sum=sum+i;i++;}
#include <stdio.h>
int main()
{
int i, j, k;
printf("i j k\n");
for (i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
printf("%d %d %d\n", i, j, k);
return 0;
}
04--break和continue语句
break语句通常用于循环和Switch语句中
用于switch语句时,跳出switch语句而执行后面的语句,用于循环时则跳出循环语句
#include <stdio.h>
int main()
{
int i=0;
char c;
while(1)
{
c='\0'; /*变量赋初值*/
while(c!=13&&c!=27) /*键盘接收字符直到按回车或Esc键*/
{
c=getchar();
printf("%c\n", c);
}
if(c==27)
break; /*判断若按Esc键则退出循环*/
i++;
printf("The No. is %d\n", i);
}
printf("The end");
return 0;
}
在多层循环语句中,一个break语句只能向外跳一层
continu语句是跳过循环中剩余的语句而强行执行下一次循环。用在for、while、do-whie语句中
#include <stdio.h>
int main()
{
char c;
while(c!=13) /*不是回车符则循环*/
{
c=getchar();
if(c==0X1B)
continue; /*若按Esc键不输出便进行下次循环*/
printf("%c\n", c);
}
return 0;
}
#include <stdio.h>
int main()
{
int c=0;
while(c<13)
{
scanf("%d",&c);
if(c==5)
continue;
printf("%d\n", c);
}
return 0;
}
题目:求1-100之间的全部质数(素数)
#include <stdio.h>
#include<math.h>
int main()
{
int m,i,k,n=0;
for(m=1;m<=100;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
{if(m%i==0)
break;}
if(i>=k+1)
{
printf("%d ",m);
n=n+1;
}
}
printf("\n");
return 0;
}
题目:输入一个数字,判断是否为质数
#include <stdio.h>
#include<math.h>
int main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
{if(m%i==0)break;}
if(i>=k+1)
printf("%d is a prime number\n",m);
else
printf("%d is not a prime number\n",m);
return 0;
}