前言
有时,在我们写题目时,看到a在>=0时等于1,<0时等于-1,这该怎么写呢
选择语句
字如其名,选择
基本结构
if(判断条件){
如果判断条件成立,所进行的操作
}else{
如果上述条件不成立,所进行的操作(else并不是一定需要)
}
就像我们前言里说的题目,就是:
if(a>=0){
a=1;
}else{
a=-1;
}
题目实战
超市买电池
雅斯超市里卖电池,每个电池2.5元,若数量达到10个,则可打8折。编写一程序,输入电池数量
,输出购买电池需多少元钱(小数点后保留2位)。
输入格式:
一行:一个整数,表示电池数量。
输出格式:
一行:一个实型数据,表示购买电池需用多少钱,小数点后保留2位。
限制:
空间限制:128MByte
时间限制:1秒
样例:
输入:
15
输出:
30.00
AC代码:
#include <iostream>
using namespace std;
int main(){
double ans;
int n;
scanf("%d",&n);
if(n>=10){
ans=n*2.5*0.8;
}else{
ans=2.5*n;
}
printf("%.2lf",ans);
return 0;
}
要点例示
现在,就可以用if语句来解决上面这个“考试过了没有”的现实问题:
int nScore = 0;
cout<<"请输入考试成绩:";
cin>>nScore;
if(nScore >= 60)
{
cout<<"恭喜你,你通过了这次考试"<<endl;
}else
{
cout<<"很遗憾,你没有通过这次考试"<<endl;
}
if语句的形式虽然简单,但是在其使用上有如下几个需要注意的地方。
-
如果没有必要, if语句中的else分支可以省略 很多时候,我们只关心条件为true时的情况,只对符合条件的情况进行处理,这时就可以省略else分支,仅保留if对条件表达式进行判断以及其后的语句1,对符合条件的情况进行处理。例如,我们只对通过考试的人进行提示,而对于没有通过考试的人的,则直接忽略,用if语句表达出来就是:
if( nScore >= 60 )
{
cout<<"恭喜你,你通过了这次考试";
}
2.if语句可以嵌套以表达多层次的条件判断
在一个if语句中可以嵌套另一个if语句,表示在某个前提条件下做进一步的条件判断,从而表达多层 次的条件判断。例如,要比较输入的v1和v2两个数的大小关系,我们需要先判断两者是否相等,在不相等的前提条件下,再继续判断两者之间的大小关系,用嵌套的if语句将其表达出来就是:
cout << "请输入两个整数:" << endl;
int v1, v2;
cin >> v1 >> v2;
if( v1 != v2 )
{
if( v1 > v2 )
{
cout<<" v1 > v2 "<<endl;
}else{
cout<<" v1 < v2 "<<endl;
}
}else{
cout<<" v1 == v2 "<<endl;
}
-
if语句可以并列 如果同一层次的条件有多种情况,就可以使用并列的条件选择语句来实现。其语法格式如下:
if ( 条件表达式1 )
{
语句1;
}else if ( 条件表达式2 )
{
语句2;
}
else if ( 条件表达式n )
{
语句n;
}else
{
语句n+1;
}
在执行的时候,会首先计算条件表达式1的值,如果其值为true,则进入其分支执行语句1,然后结束整个并列条件选择语句的执行;如果其值为false,则会继续向下计算条件表达式2的值,同样的,如果其值为true,则进入其分支执行语句2,然后结束整个语句,如果其值为false,则继续向下进行同样的计算过程。直到最后,如果所有的条件分支都无法满足,则进入最后的else分支执行并结束整个语句。
例如,我们在前面用嵌套的if语句实现的比较v1和v2的大小比较,实际上是三种相互并列的情况:要么是大于,要么是小于,要么是等于。所以,同样也可以用并列的条件结构来实现:
if(v1 > v2)
{
cout<<" v1 > v2"<<endl;
}else if(v1 < v2)
{
cout<<" v1 < v2"<<endl;
}else
{
cout<<" v1 == v2"<<endl;
}
这里需要注意的是,并列条件语句在执行的时候,会逐个依次向下计算其中并列的条件表达式,直到某个条件表达式为true,然后才进入其分支执行并结束整个语句。所以,我们总是把满足几率比较高的条件判断放在比较靠前的位置,希望if语句一开始就遇到满足条件的分支,以避免对那些不易满足的条件判断的无用计算。
另外需要注意的是,并列条件选择语句只会执行其中的某一个分支,如果多个条件表达式都为true,则只会执行从上到下遇到的第一个条件表达式为true的分支。
int nScore = 91;
if(nScore >= 60)
{
cout<<"恭喜你,你通过了这次考试"<<endl;
}
else if(nScore >= 85)
{
cout<<"厉害,你的成绩是优秀"<<endl;
}
|