第六课 选择结构—if
安徽华星学校 沈立祥
目 标
01.if选择结构
02、熟练应用 if 语句解决一些实际问题。
第二种格式为:
if (表达式)
语句 ;
1. if 语句
if 语句有两种格式:
第一种格式为:
if (表达式)
语句1;
else
语句2;
功能:如果条件表达式的值为真,即条件成立,语句1将被执行。否则,语句1将被忽略(不被执行),程序将按顺序从整个选择结构之后的下一条语句继续执行。
说明:格式中的“条件表达式”必须用圆括号括起来。
例1:读入一个数,若这个数大于1并且小于100,则输出yes。
分析:大于1小于100的关系式为:(x>1&&x<100),由于关系运算符的优先级高于逻辑运算符,逻辑运算符两边的关系运算不需要加括号。
# include
int main (){
int a;
scanf("%d",&a);
if (a>1&&a<100) printf("yes");
return 0;
}
国内外研究状况
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
例2、旅游费用。
【问题描述】
风华公司“南京一日游”的收费标准为:5 人以内(含 5 人)按散客标准,每人 300 元;超过 5 人,按团体标准,每人 280 元。请根据输入的人数,输出其旅游费用。
【输入格式】
一行一个正整数 n,表示人数,1≤n≤5000000。
【输出格式】
一行一个正整数,表示需要的总旅游费用。
【输入样例】
9
【输出样例】
2520
国内外研究状况
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
【问题分析】
这是一个“选择性”问题,根据人数 n 来选择不同的收费标准。条件就是 n≤5,如果成立,那么收费为 n×300;否则,收费为 n×280。
方法1:
#include
using namespace std;
int main(){
int n;
cin >> n;
if(n <= 5)
cout << n * 300 << endl;
else
cout << n * 280 << endl;
return 0;
}
国内外研究状况
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
方法2:
#include
using namespace std;
int main(){
int n,ans;
cin >> n;
ans = n * 300;
if(n > 5)
ans = n * 280;
cout << ans << endl;
return 0;
}
例3:判断能否被3,5,7整除
给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符‘n’,不包括单引号。
输入一行,包括一个整数。
输出一行,按照描述要求给出整数被3,5,7整除的情况。
样例输入:
105
样例输出:
3 5 7
分析:因为先输出小数,所以判断时小数在前,大数在后。
#include
int main() {
int n;
scanf("%d",&n);
if(n%3==0) printf("3 ");
if(n%5==0) printf("5 ");
if(n%7==0) printf("7 ");
if(n%3!=0&&n%5!=0&&n%7!=0) printf("n");
return 0;
}
【例4】
三个数的大小比较。
【问题描述】
输入三个整数 x、y 和 z,判断是否满足 x ≤ y ≤ z。若满足,则输出“YES”;否则,输出“NO”。
【输入格式】
一行三个整数 x、y 和 z,int 范围以内。
【输出格式】
一行一个单词,表示答案。
【输入样例 1】
3 6 7
【输出样例 1】
YES
【输入样例 2】
3 7 6
【输出样例 2】
NO
【问题分析】
如果逻辑表达式“x<=y && y<=z”为真,则输出“YES”;否则,输出“NO”。
#include
using namespace std;
int main(){
int x,y,z;
cin >> x >> y >> z;
if(x <= y && y <= z) cout << ” YES ” << endl;
else cout << ” NO ” << endl;
return 0;
}
if 语句的嵌套
1、一般格式:
if (条件表达式)
语句块1;
else if (条件表达式)
语句块2
…
else
语句块n+1;
2、功能
解决多个条件不能同时成立的问题。
说明:
嵌套时为避免出现配对问题,一般在else后面嵌套if语句,如果非要在if语句条件为“真”时嵌套,为避免混乱,可以加花括号{}区分。例如:
if (a>b)
if (b>c) y=a;
else y=c;
else部分否定的是条件b>c,即它与第二个if语句配对;若想让else部分与第一个if语句配对,则要引入一个复合语句,将上述语句写成如下形式:
if (a>b) {
if (b>c) y=a;
}
else y=c;
【问题描述】
输入三个整数 x、y、z,判断其是否满足 x≤y≤z。若满足,输出“YES”;否则,输出“NO”。
【输入格式】
一行三个整数 x、y、z,int 范围以内。
【输出格式】
一行一个单词,表示答案。
【输入样例】
3 6 7
【输出样例】
YES
例1、三个数的大小比较。
【问题分析】
前面已经介绍过用逻辑表达式“x<=y &&y<=z”来表示YES”的条件,本题也可以用 if语句的嵌套来解决,如图:
#include
using namespace std;
int main(){
int x,y,z;
cin >> x >> y >> z;
if(x <= y)
if(y <= z)
cout << ” YES ” << endl;
else
cout << ” NO ” << endl;
else
cout << ” NO ” << endl;
return 0;
}
例3、判断闰年。
【问题描述】
输入某一年份 x,判断该年份是否是闰年。是则输出“YES”,否则输出“NO”。
【输入格式】
一行一个正整数 x,int 范围以内。
【输出格式】
一行一个单词,表示判断结果。
【输入样例】
2000
【输出样例】
YES
【问题分析】
前面已经介绍过判断闰年的条件表达式。对于闰年的判断,也可以采用嵌套的方法来实现。
#include
using namespace std;
int main(){
int x;
cin >> x;
if(x % 400 == 0)
cout << “ YES ” << endl;
else
if(x % 4 == 0)
if(x % 100 != 0)
cout << “ YES ” << endl;
else
cout << “ NO ” << endl;
else
cout << “ NO ” << endl;
return 0;
}
作业:
整数大小比较
输入两个整数,比较它们的大小。若x>y,输出>;若x=y,输出=;若x输入:
一行,包含两个整数x和y,中间用单个空格隔开。0<=x<2^32, -2^31<=y<2^31。
输出:
一个字符。若x > y,输出 > ;若x = y,输出 = ;若x < y,输出 < ;
样例输入:
1000 100
样例输出:
>
作业:
输入三角形的三边a,b,c。判断能否构成三角形,能则求三角形的面积s,否则输出“No”
样例输入1:
3 4 5
样例输出1:
6.00
样例输入2:
1 2 3
样例输出2:
No