目录
引言
分支语句中,常用if...else编写分支语句,来作出各个条件下的判断与选择;
下文即为使用C++编写的判断平年闰年的程序。
#include <iostream>
using namespace std;
int main()
{
int year = 0; //这是北京大学李戈教授在授课时编写的
cin >> year;
if (year %4 == 0) //判断方法:能被4整除,但不能被100整除
{
if (year % 100 == 0)//或能被100整除,又能被400整除,即为闰年。
{
if (year % 400 == 0)
cout <<"Y";
else
cout << "N";
}
else
cout << "Y";
}
else
cout <<"N";
return 0;
}
但在需要多次/重复判断来得出结果时,反复使用单次判断的if语句显然不切实际,就必须使用循环语句来解决问题:
C语言中的循环结构:
以C++为例,循环可大致分为四类:
- for语句循环
- while语句循环
- do...while语句循环
- goto语句和if语句构成循环
然而,不终止(或中止)的无限循环,在大部分情况下是没有实际意义的,故产生了“跳出循环”,和“结束循环”的需要,“continue”和“break”由此而生 (*╹▽╹*)
for(;;) //只打两个分号,便是最简单的一个无条件死循环;也可替换为while(true)
{
****** //这一行想填啥填啥
}
C,or B ?
continue与break同属转向控制语句,都可在for,while,和do...while使用;
但break多用于跳出内层循环,即停止当前所处的循环,执行下一条语句;
而continue用于结束本次循环,并判断是否能进行第二次循环。
实在记不住的话,可以看看两个词的释义:(*/ω\*)
break /breɪk/ v. 打破;打断;结束,终结
continue v.(使)继续,(使)持续,(中断后)再继续,又开始
(流程图左为break,右为continue)
break在分支语句的使用
事实上,不只是循环语句,分支语句有时也需要break。
比较典型的便是switch语句:(←你猜为什么要这样上色?)
应用举例
#include<iostream>
using namespace std;
int main()
{
char grade = 'a';
cin>>grade;
switch (grade)
{
case 'a': cout <<"85~100"<<endl;
case 'b': cout <<"70~84"<<endl;
case 'c': cout <<"60~69"<<endl;
case 'd': cout <<"<60"<< endl;
default: cout << "error" <<endl;
}
return 0;
}
上面是一个用switch语句编写的学业等级分转化程序,可以将A,B,C,D,E五个学业等级,
转化为相应的分数范围;(e.g:输入A,即显示85~100,代表85-100分可以评为A级。)
然而,输出的却是以下内容:
a //这是我们输入的字符a
85~100//下方是输出结果
70~84
60~69
<60
error
没错,虽然输入了a,但是输出端却是把abcde全来一遍,甚至连error都不放过......
为什么呢?
因为没加break。
switch中某一个case后的常量表达式的值与表达式的值相等,则执行该case,及其后面的所有case,包括default(如果在其后方)。故应在每个case后添上break来跳出分支。
修改后的程序如下:
#include<iostream>
using namespace std;
int main()
{
char grade = 'a';
cin>>grade;
switch (grade)
{
case 'a': cout <<"85~100"<<endl;break;
case 'b': cout <<"70~84"<<endl;break;
case 'c': cout <<"60~69"<<endl;break;
case 'd': cout <<"<60"<< endl;break;
default: cout << "error" <<endl;
}
return 0;
}
再尝试输入:
a //输入a
85~100
d //输入d
<60
f //输入f
error
''互三连,互关注'' //这句话是我瞎打的,但是话是真的,主打一个话糙理不糙(手动狗头)
error//没错,也会输出error。
这样就正常工作了。
完结撒花!✿ヾ(◍°∇°◍)ノ゙