循环结构
循环分为两种
- 当到型:条件成立时再执行循环体
- 直到型:先执行循环体,再检验条件是否成立
当到型
while循环
while(条件)
{
循环体;
}
语法: ①判断条件->执行循环
为了控制循环,循环体中 往往需要 或者 条件中 需要 做 自增运算
for循环
for(初始循环变量; 条件; 循环改变) // 死循环:括号内啥也不写
{
循环体
}
语法:初始化->判断条件->执行循环体->改变循环变量->重新判断条件直到条件不成立 停止循环
ps:for 循环中 不应再写入循环变量,防止死循环。
直到型
do while 循环
do{
循环体
}while(条件);
跳转语句
break
只能在 switch 或 循环 使用
作用:跳出 该层循环! 在多层嵌套循环时注意
continue
只能在 循环 使用
作用:结束本次循环,直接开始下一次循环
goto
只能在当前函数使用
作用:无条件跳转,需要对应的跳转标签
退出 多层 嵌套 一步到位
编程题目
1.经典问题 白鸡白钱
一只公鸡cock值五钱,一只母鸡hen值三钱,三只小鸡(chick)值一钱
100钱,买100只鸡,请问公鸡,母鸡,小鸡各多少只?
全买公鸡:20只
全买母鸡:33只
全买小鸡: 100只
#include <stdio.h> //穷举
int main()
{
int cock = 0;
int hen = 0;
int chick = 0;
for (cock=0; cock < 20; cock++)
for (hen=0; hen <= 33; hen <= 33 < hen++)
for (chick=3; chick <= 100; chick++)
if ((cock * 5 + hen * 3 + chick /3) <= 100)
if (cock + hen + chick == 100)
if (chick % 3 == 0)
printf("公鸡=%d 母鸡=%d 小鸡=%d \n", cock, hen, chick);
return 0;
}
2.经典问题 斐波拉契数列
1 1 2 3 5 8 13 …
f(n)=1 n<=2
f(n) = f(n-1)+f(n-2)
用户输入n 求出f(n)的值:
#include <stdio.h>
int main()
{
int n = 0;
int num1 = 0; //第一位置
int num2 = 1; //第二个位置
int sum = 0;
puts("输入 n ");
scanf_s("%d", &n);
if (n <= 2)
{
for (int i = 0; i <= n-1; i++)
{
puts("1");
}
}
else
{
for (int i = 0; i < n-1; i++)
{
sum = num1 + num2;
num1 = num2;
num2 = sum;
}
printf("%d", sum);
}
return 0;
}