C语言之循环结构
2018-03-07 16:48
141 查看
循环结构
1.三种循环语句
while
一般形式为
while(表达式)
语句
一般表达式是循环条件 ,语句是循环体
eg1: 求1-100 的和
#include<stdio.h>
int main(int argc,char *argv[])
{
int sum = 0;
int i = 1;
/*
while(i <= 100)
{
sum += i;
i++;
}
*/
do
{
sum +=i++;
}while(i < 101);
printf("sum = %d\n",sum);
return 0;
}
注意:
1) 循环体用花括号括起来;
2) while语句后面的表达式一般是关系表达式或者是逻辑表达式,但是也可以是其他表达式,只要其值为真就可以了。
while(a)
while(a && b)
while(1);//死循环
3) whlie 语句后面不能再有分号
while(i <= 100); // 错误
{
……
}
eg2:从键盘输入一个数字,判断他是几位数
#include<stdio.h>
int main(int argc,char *argv[])
{
int num;
int count = 0;
scanf("%d",&num);
if(num == 0)
count = 1;
while(num != 0)
{
num = num / 10;
count++;
}
printf("count = %d\n",count);
return 0;
}
从键盘输入一个数字,判断这个数字里面0-9分别出现了几次
do-while
一般形式为:
do
循环体
while(循环语句);
如果第一次进入循环的条件就不满足,那么while循环和do-while循环的结果可能不相同
这两种循环的区别
while循环是先判断再执行
do-while循环是先执行再判断
eg3:从键盘输入字符,判断在\n之前有多少个字符
#include<stdio.h>
int main(int argc,char *argv[])
{
char ch;
int num = 0;
/*
do
{
ch = getchar();
num++;
}while(ch != '\n');
printf("num = %d\n",num-1);
*/
while((ch =getchar() )!= '\n')
{
num++;
}
printf("num = %d\n",num);
return 0;
}
for
一般形式为;
for(expression1;expression2;expression3)
语句;
执行过程:
1) 求解表达式1;
2) 求解表达式2,如果其值为真,就执行for语句执行的内嵌语句(循环体),然后执行下面三步,若其值为假,
则结束循环,转到第五步;
3) 求解表达式3;
4) 转到第2步继续执行;
5) 结束循环,执行for语句后面的语句
最简单的形式
for(i = 1;i <= 100;i++)
sum += i;
printf("sumn = %d\n",sum);
注意:
1) for循环中的表达式1,表达式2,表达式3都是可选项,也就是可以省略,但是;不能省略;
2) 省略了表达式1,表示不对循环变量赋初值;
i = 1;
for(;i <= 100;i++)
sum += i;
printf("sumn = %d\n",sum);
3) 省略了表达式2,默认就是真,如果不做其他处理会造成死循环
for(;;) - > for(;1;)
4) 省略了表达式3,则表示不多循环变量进行操作;
5) 表达式1可以是逗号表达式
for(i = 1,sum = 0; i <= 100; sum += i,i++);
eg4:打印9 * 9 乘法表
#include<stdio.h>
int main(int argc,char *argv[])
{
int i,j;
for(i = 1;i <= 9;i++)
{
for(j = 1;j <= i;j++)
{
printf("%d * %d = %d\t",j,i,i*j);
}
printf("\n");
}
return 0;
}
2.三种循环辅助控制性语句
break;
break 可以用来从循环体中跳出循环体,即提前结束循环,接着执行循环下面的语句;
注意:
1) break不能和循环语句和switch语句以外的语句连用;
2) break 对if-else 不起作用
3) break语句只能向外跳出一层
eg6: 从键盘输入一个数字,判断这个数是不是素数,如果是,输出YES,否则输出NO
#include<stdio.h>
int main(int argc,char *argv[])
{
int num;
scanf("%d",&num);
int i;
for(i = 2; i <= num/2;i++)
{
if(num % i == 0)
{
printf("NO\n");
break;
}
}
if(i == (num/2 + 1))
{
printf("YES\n");
}
return 0;
}
continue;
用来结束本次循环(即跳过循环体中尚未执行的部分),接着执行循环是否执行的判断
eg8: 输出100以内的不能被3整除的数
goto;
goto语句是一种无条件转移语句
使用格式
goto 语句标号(标识符)
这个标识符加上一个:一起出现在程序中某处,执行goto语句后,程序会跳转到标号处并执行其后的语句
eg: 使用goto求1-100的和
求最大公约数和最小公倍数有
1) 穷举法
2) 相减法
3) 辗转相除法(欧几里得算法)
这里举一个列子
#include<stdio.h>
int main(int argc,char *argv[])
{
int a,b;
int max;
scanf("%d%d",&a,&b);
int i,j;
if(a > b)
i = b;
else
i = a;
/*
for(j = 1;j <= i;j++)
{
if(a % j == 0 && b % j == 0)
{
max = j;
}
}
*/
for(j = a; j>= 1;j--)
{
if(a % j == 0 && b % j == 0)
{
max = j;
break;
}
}
printf("max = %d,min = %d\n",max,a*b/max);
return 0;
}
1.三种循环语句
while
一般形式为
while(表达式)
语句
一般表达式是循环条件 ,语句是循环体
eg1: 求1-100 的和
#include<stdio.h>
int main(int argc,char *argv[])
{
int sum = 0;
int i = 1;
/*
while(i <= 100)
{
sum += i;
i++;
}
*/
do
{
sum +=i++;
}while(i < 101);
printf("sum = %d\n",sum);
return 0;
}
注意:
1) 循环体用花括号括起来;
2) while语句后面的表达式一般是关系表达式或者是逻辑表达式,但是也可以是其他表达式,只要其值为真就可以了。
while(a)
while(a && b)
while(1);//死循环
3) whlie 语句后面不能再有分号
while(i <= 100); // 错误
{
……
}
eg2:从键盘输入一个数字,判断他是几位数
#include<stdio.h>
int main(int argc,char *argv[])
{
int num;
int count = 0;
scanf("%d",&num);
if(num == 0)
count = 1;
while(num != 0)
{
num = num / 10;
count++;
}
printf("count = %d\n",count);
return 0;
}
从键盘输入一个数字,判断这个数字里面0-9分别出现了几次
do-while
一般形式为:
do
循环体
while(循环语句);
如果第一次进入循环的条件就不满足,那么while循环和do-while循环的结果可能不相同
这两种循环的区别
while循环是先判断再执行
do-while循环是先执行再判断
eg3:从键盘输入字符,判断在\n之前有多少个字符
#include<stdio.h>
int main(int argc,char *argv[])
{
char ch;
int num = 0;
/*
do
{
ch = getchar();
num++;
}while(ch != '\n');
printf("num = %d\n",num-1);
*/
while((ch =getchar() )!= '\n')
{
num++;
}
printf("num = %d\n",num);
return 0;
}
for
一般形式为;
for(expression1;expression2;expression3)
语句;
执行过程:
1) 求解表达式1;
2) 求解表达式2,如果其值为真,就执行for语句执行的内嵌语句(循环体),然后执行下面三步,若其值为假,
则结束循环,转到第五步;
3) 求解表达式3;
4) 转到第2步继续执行;
5) 结束循环,执行for语句后面的语句
最简单的形式
for(i = 1;i <= 100;i++)
sum += i;
printf("sumn = %d\n",sum);
注意:
1) for循环中的表达式1,表达式2,表达式3都是可选项,也就是可以省略,但是;不能省略;
2) 省略了表达式1,表示不对循环变量赋初值;
i = 1;
for(;i <= 100;i++)
sum += i;
printf("sumn = %d\n",sum);
3) 省略了表达式2,默认就是真,如果不做其他处理会造成死循环
for(;;) - > for(;1;)
4) 省略了表达式3,则表示不多循环变量进行操作;
5) 表达式1可以是逗号表达式
for(i = 1,sum = 0; i <= 100; sum += i,i++);
eg4:打印9 * 9 乘法表
#include<stdio.h>
int main(int argc,char *argv[])
{
int i,j;
for(i = 1;i <= 9;i++)
{
for(j = 1;j <= i;j++)
{
printf("%d * %d = %d\t",j,i,i*j);
}
printf("\n");
}
return 0;
}
2.三种循环辅助控制性语句
break;
break 可以用来从循环体中跳出循环体,即提前结束循环,接着执行循环下面的语句;
注意:
1) break不能和循环语句和switch语句以外的语句连用;
2) break 对if-else 不起作用
3) break语句只能向外跳出一层
eg6: 从键盘输入一个数字,判断这个数是不是素数,如果是,输出YES,否则输出NO
#include<stdio.h>
int main(int argc,char *argv[])
{
int num;
scanf("%d",&num);
int i;
for(i = 2; i <= num/2;i++)
{
if(num % i == 0)
{
printf("NO\n");
break;
}
}
if(i == (num/2 + 1))
{
printf("YES\n");
}
return 0;
}
continue;
用来结束本次循环(即跳过循环体中尚未执行的部分),接着执行循环是否执行的判断
eg8: 输出100以内的不能被3整除的数
goto;
goto语句是一种无条件转移语句
使用格式
goto 语句标号(标识符)
这个标识符加上一个:一起出现在程序中某处,执行goto语句后,程序会跳转到标号处并执行其后的语句
eg: 使用goto求1-100的和
求最大公约数和最小公倍数有
1) 穷举法
2) 相减法
3) 辗转相除法(欧几里得算法)
这里举一个列子
#include<stdio.h>
int main(int argc,char *argv[])
{
int a,b;
int max;
scanf("%d%d",&a,&b);
int i,j;
if(a > b)
i = b;
else
i = a;
/*
for(j = 1;j <= i;j++)
{
if(a % j == 0 && b % j == 0)
{
max = j;
}
}
*/
for(j = a; j>= 1;j--)
{
if(a % j == 0 && b % j == 0)
{
max = j;
break;
}
}
printf("max = %d,min = %d\n",max,a*b/max);
return 0;
}
相关文章推荐
- C语言循环结构练习2
- 【学习笔记】【C语言】循环结构-while
- c语言循环结构以及循环控住语句
- C语言实验——for循环打印图形(循环结构)
- ioS C语言 循环结构
- C语言之三种循环结构与递归函数的对比
- C语言初步-第31讲:循环控制结构及流程图(循环的嵌套流程图)
- C语言复习——循环结构
- 黑马程序员之IOS学习总结——03C语言中循环结构
- C语言---选择结构和循环结构
- C语言进阶_笔记 第三章 选择结构和循环结构的程序设计
- 循环控制结构程序01 - 零基础入门学习C语言16
- C语言_分支结构和循环结构
- 前期C语言回顾 循环结构
- 数据结构之循环队列c语言实现
- C语言中对于循环结构优化的一些入门级方法简介
- 【C语言学习】-03 循环结构
- 黑马程序员----C语言学习笔记之循环结构介绍和用法举例
- IOS开发---C语言-⑤流程控制:顺序结构、选择结构、循环结构
- C语言循环结构简单练习1——输出九九乘法表