在现实生活中,我们经常需要根据不同的情况做出不同的决定。比如,如果外面下雨,我们就会带伞;如果天考试成绩大于等于60,考试就算通过。在C++中,我们也需要让计算机根据不同的情况执行不同的操作。这就需要用到if语句,也叫分支语句。if语句的结构如下:
if(条件成立)
{
// 执行这里的代码
}
else
{
//条件不成立时执行的代码
}
这里的“条件”可以是一个比较大小关系的表达式,比如“x > 5”或者“y< 10”。如果条件成立(为真),那么if大括号里的代码就会被执行。如果不成立(为假),那么else大括号里的代码会被执行。有些时候else部分可以省略。让我们来看一个简单的例子:
int number = 7;
if (number > 5)
{
cout << “数字大于5!” << endl;
}
else
{
cout << “数字小于5!” << endl;
}
在这个例子中,我们有一个变量number,它的值是7。if语句检查number是否大于5。因为7确实大于5,所以程序会输出“数字大于5!”。
通过这个简单的例子,我们可以看到条件语句是如何帮助我们在编程中做出决定的。接下来,我们可以通过下面练习来加深对这个概念的理解。
例1:我们来考虑一个更加复杂的场景。假设你的班主任要你帮他编写一个程序来决定一个学生是否可以通过一门课程。这个决定基于学生的考试成绩。如果成绩大于或等于60分,学生通过;否则,学生不通过。参考代码如下:
int score;
cin >> score;
if (score >= 60)
{
// 如果成绩大于或等于60分
cout << “恭喜!你通过了这门课程。” << endl;
}
else
{
// 如果成绩小于60分
cout << “很遗憾,你没有通过这门课程。” << endl;
}
在这个例子中:
首先定义了一个变量score,它代表了学生的考试成绩。
然后,我们使用if…else语句来检查score的值:
(1)如果score大于或等于60(即score >= 60的比较结果为真),程序会执行if块中的代码,输出“恭喜!你通过了这门课程。”
(2)如果score小于60(即score >= 60的比较结果为假),程序会执行else块中的代码,输出“很遗憾,你没有通过这门课程。”
通过这个例子,我们可以看到if…else语句是如何帮助我们在两种不同的情况下做出决策的。在编程中,这种结构非常常见,因为它允许我们根据不同的条件执行不同的代码块,从而实现更复杂和灵活的逻辑。
例2:从控制台输入一个整数,判断这个整数是否为水仙花数。水仙花数是指一个 3 位整数,它的每个数位上的数字的 3次幂之和等于它本身。例如:153就是一个水仙花数,因为1^3 + 5^3+ 3^3 = 153。参考代码:
int n,gw,sw,bw;
cin>>n;
gw = n/1%10;
sw = n/10%10;
bw = n/100%10;
if(gw*gw*gw + sw*sw*sw + bw*bw*bw == n)
cout<<“Yes”;
else
cout<<“No”;
cout<<endl;
注:当if或者else语句块只有一条语句的时候,可以省略大括号!
例3:输入一个整数n,如果是奇数输出Yes,如果是偶数输出No。参考代码如下:
int n;
cin>>n;
if(n%2==1)//除以2余数为1的就是奇数
{
cout<<“Yes”;
}
else
{
//不是奇数就是偶数
cout<<“No”;
}
cout<<endl;
例4:三位数是否对称。从键盘读入一个三位整数,判断这个三位整数是否是对称数(对称数指的是,这个数正过来和倒过来是同一个数,比如:121、686、808等数都是对称数),如果是对称数,则输出“Y”,否则输出“N”。
int n,g,b;
cin>>n;
g = n/1%10;
b = n/100%10;
if(g==b)
cout<<“Y”;
else
cout<<“N”;
cout<<endl;
例5:谁的年龄大。甲乙两个人在公园相遇,甲说我今年n岁了(n是一个两位的整数,个位和十位不相等),乙说,太巧了,你的年龄倒过来,就是我的年龄,请问两个人谁的年龄更大, 请输出那个更大的年龄?比如,假设甲今年12岁,那么乙就是21岁,乙的年龄更大,应当输出乙的年龄21岁。参考代码:
int n,gw,sw,m;
cin>>n;
gw=n/1%10;
sw=n/10%10;
m=gw*10+sw;//计算乙的年龄
if(m>n)
{
cout<<m;
}
else
{
cout<<n;
}
cout<<endl;
这个例题其实不用计算乙的年龄。只要考虑甲年龄的个位和十位大小关系就行。如果个位大于十位那么就是乙的年龄大,否则就是甲的年龄大。参考代码如下:
int n,gw,sw;
cin>>n;
gw=n/1%10;
sw=n/10%10;
if(gw>sw)
{
cout<<sw<<gw;
}
else
{
cout<<n;
}
cout<<endl;
有的时候else部分不是必须的。比如下面的例子:
例6:输入两个不同的整数,按照从小到大的顺序输出这两个整数。参考代码:
int a, b, t;
cin >> a >> b;
if (a > b)
{
//如果a小于b,交换a、b的值
t = a;
a = b;
b = t;
}
cout << a << ” ” << b;