南京网站定制2022好用值得推荐的搜索引擎
前面讲到的循环体,貌似能解决生活中的很多问题,毕竟生活中很多事情是在重复的。但有时候也会有些小插曲,比如你在日复一日的上班,但某一天又特殊的事情你失业了,不就没班上了吗,那就得跳出那个上班的循环了,C语言也有这样的跳出机制。
break
在前面学习switch语句的时候,接触过break,就是跳出switch,在循环结构中,break也有相同的作用,跳出循环,管你循环条件是真是假。
程序示例1:累加到100,到100强制跳出while循环
#include <stdio.h>int main()
{int i = 1;int sum = 0;while (1){sum = sum + i;if (i == 100)break; //跳出while循环i++;}printf("i = %d\n", i);printf("sum = %d\n", sum);return 0;
}
程序示例2:猜数字游戏
#include <stdio.h>int main()
{int target = 30;int input= 0;for(;;){printf("请输入一个数字:");scanf_s("%d", &input);if (input == target)break;}printf("target = %d\n", target);return 0;
}
如果switch与循环嵌套在一起怎么办,break怎么跳?
1、 就近原则:break离哪个关键字近,就跳出哪个。
2、什么是关键字:switch、 while 、for这种的就是关键字。
程序示例3:判断10以内的奇数与偶数
#include <stdio.h>int main()
{int i = 0;for(i=1; i<=10; i++){switch (i % 2){case 0:printf("%d 是偶数\n", i);break; //跳出switchcase 1:printf("%d 是奇数\n", i);break; //跳出switch}}return 0;
}
程序示例3:
#include <stdio.h>int main()
{int i = 0;int k = 0;printf("请输入一个数字\n");scanf_s("%d",&i);switch (i % 2){case 0:printf("case 0\n");for (k = 0; k < 2; k++)if (k)break;//跳出for,那case 0就没有break了,满足case 0的时候case 1也会执行case 1:printf("case 1\n");break;}return 0;
}
输入奇数的时候只打印case1,输入偶数,打印了case 0 和case1
continue
咋一看continue不是继续的意思吗,这么跟break扯上关系了?
continue:在循环体中,continue之后的语句不用执行了,进入下一轮条件判断,重新循环;
break是结束整个循环,
continue只是结束当前循环条件中的语句,continue之后的语句就不用执行了。
continue的作用效果可以比较程序示例4和程序示例5的输出结果
程序示例4:
#include <stdio.h>int main()
{int i = 0;for (i = 1; i <= 5; i++){printf("序列%d开始\n",i);printf("序列%d结束\n", i);}return 0;
}
输出结果
序列1开始
序列1结束
序列2开始
序列2结束
序列3开始
序列3结束
序列4开始
序列4结束
序列5开始
序列5结束
把示例4的代码稍微修改一下,加个continue,观看输出结果。
程序示例5:
#include <stdio.h>int main()
{int i = 0;for (i = 1; i <= 5; i++){printf("序列%d开始\n",i);continue; //循环体后面的内容不用执行了,重新去判断条件printf("序列%d结束\n", i);}return 0;
}
输出结果是
序列1开始
序列2开始
序列3开始
序列4开始
序列5开始
练习:打印1000以内能被7整除的整数,并统计数量
分析:
1使用循环体遍历1--1000;
2、使用分支选择结构、判断能被7整除的数,能整除的打印并统计,不能整除的直接判断下一个数
程序示6:
#include <stdio.h>int main()
{int i = 0;int n = 0;for (i = 0; i <= 1000; i++){if (i % 7)continue; //如果i%7不等于0,说明不能被7整除,那就直接判断下一个数printf("%d能被7整除\n", i);n++;}printf("1000以内能被7整除的数共有%d个\n", n);return 0;
}