【C++基础教程】第四课
上次的课后练习
第1题输出:
第二题输出:1
第三题:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
double n,x,y;
cin>>n>>x>>y;
cout << n - ceil ( y/ x);
return 0;
}
提示:y是总时间,除以速度就是吃掉了多少个,向上取整,再用n去减,就是一共剩下多少个。
一,if语句
【例题】计算出租车价格。小于3分里收11元,大于3公里先收11元,3公里以外部分再每公里2.1元。
这里有两种情况,分为小于3公里和大于3公里两种,我们需要使用到if语句。
if语句的格式如下:
if(条件表达式){
语句;
}
}
注:为了看上去清晰,表示中间的语句在if语句里面,我们一般在if中的语句前面加上2个或4个空格(根据喜好)。
当条件表达式成立时,执行括号内的语句。
其中,条件表达式可以用这几种运算符连接:>(大于),<(小于),>=(大于等于),<=(小于等于),!=(不等于),==(等于)
避免和赋值运算符混淆,“等于”写作“==”。
因此,我们可以这样写程序。
#include<stdio.h> int main(){ int n; cin>>n; if(n<=3){ cout<<11; } if(n>3){ cout<<11+(n-3)*2.1; } return 0; }
除此之外,C++还提供了if...else语句。
if(条件表达式){
语句A;
}
else{
语句B;
}
当表达式成立时,执行语句A,否则执行语句B。
这里我们只有两种情况,也可以使用else来写。
#include<stdio.h> int main(){ int n; cin>>n; if(n<=3){ cout<<11; } else{ cout<<11+(n-3)*2.1; } return 0; }
【例题】输入学生的分数,计算学生的等第。
A:90-100分
B:75-89分
C:60-74分
D:0-59分
有多种情况并列时,我们可以使用else if。
if(...){}
else if(...){}
else if(...){}
特别的,如果判断A和B两个条件都成立,在if语句中可以写作:
if(A&&B)
如果判断A和B两个条件至少一个成立,在if语句中可以写作:
if(A||B)
#include<stdio.h> int main(){ int n; cin>>n; if(n>=90 && n<=100){ cout<<"A"; } else if(n>=75 && n<=89){ cout<<"B"; } else if(n>=60 && n<=74){ cout<<"C"; } else cout<<"D"; return 0; }
有人会问,为什么不写成90<=n<=100呢?C++不支持这样写,它会理解成(90<=n)<=100,如果90<=n成立,成立的语句在计算的时候看做是1,于是就理解为了1<=100,并不是我们想要的,所以不可以这样写。
【例题】(NOIP 2015 普及组初赛真题)阅读程序写结果。
#include <iostream> using namespace std; int main() { int a, b, c; a = 1; b = 2; c = 3; if(a > b) if(a > c) cout << a << ' '; else cout << b << ' '; cout << c << endl; return 0; }
首先,我们先看第7行的if(a>b),由于1<2,不成立,其中所有if中的语句(即缩进部分)全部被跳过,一直到倒数第三行,所以输出c,正确答案是:3。
二,课后作业
1,阅读程序写结果。
#include<iostream> using namespace std; int main(){ char c; cin>>c; cout<<c<<"is "; if(c>='0'&&c<='9')cout<<"a number"; else cout<<"not a number"; return 0; }
输入:4
2,编写程序,实现简易计算器。要求:
输入两个数和一个运算符,中间用空格分割,输出按照要求的计算结果。
样例输入:10 + 2
样例输出:12