上次的课后练习

第1题输出:

第二题输出:1

第三题:

  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int main(){
  5. double n,x,y;
  6. cin>>n>>x>>y;
  7. cout << n - ceil ( y/ x);
  8. return 0;
  9. }

提示:y是总时间,除以速度就是吃掉了多少个,向上取整,再用n去减,就是一共剩下多少个。

一,if语句

【例题】计算出租车价格。小于3分里收11元,大于3公里先收11元,3公里以外部分再每公里2.1元。

这里有两种情况,分为小于3公里和大于3公里两种,我们需要使用到if语句。
 
if语句的格式如下:
if(条件表达式){
  语句;
}
注:为了看上去清晰,表示中间的语句在if语句里面,我们一般在if中的语句前面加上2个或4个空格(根据喜好)。
当条件表达式成立时,执行括号内的语句。
其中,条件表达式可以用这几种运算符连接:>(大于),<(小于),>=(大于等于),<=(小于等于),!=(不等于),==(等于)
避免和赋值运算符混淆,“等于”写作“==”。
因此,我们可以这样写程序。
  1. #include<stdio.h>
  2. int main(){
  3. int n;
  4. cin>>n;
  5. if(n<=3){
  6. cout<<11;
  7. }
  8. if(n>3){
  9. cout<<11+(n-3)*2.1;
  10. }
  11. return 0;
  12. }

除此之外,C++还提供了if...else语句。

if(条件表达式){
 语句A;
}
else{
 语句B;
}
当表达式成立时,执行语句A,否则执行语句B。
这里我们只有两种情况,也可以使用else来写。
  1. #include<stdio.h>
  2. int main(){
  3. int n;
  4. cin>>n;
  5. if(n<=3){
  6. cout<<11;
  7. }
  8. else{
  9. cout<<11+(n-3)*2.1;
  10. }
  11. return 0;
  12. }

【例题】输入学生的分数,计算学生的等第。

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)
 
  1. #include<stdio.h>
  2. int main(){
  3. int n;
  4. cin>>n;
  5. if(n>=90 && n<=100){
  6. cout<<"A";
  7. }
  8. else if(n>=75 && n<=89){
  9. cout<<"B";
  10. }
  11. else if(n>=60 && n<=74){
  12. cout<<"C";
  13. }
  14. else cout<<"D";
  15. return 0;
  16. }

有人会问,为什么不写成90<=n<=100呢?C++不支持这样写,它会理解成(90<=n)<=100,如果90<=n成立,成立的语句在计算的时候看做是1,于是就理解为了1<=100,并不是我们想要的,所以不可以这样写。

【例题】(NOIP 2015 普及组初赛真题)阅读程序写结果。

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int a, b, c; a = 1;
  5. b = 2;
  6. c = 3;
  7. if(a > b)
  8. if(a > c)
  9. cout << a << ' ';
  10. else
  11. cout << b << ' ';
  12. cout << c << endl;
  13. return 0;
  14. }

首先,我们先看第7行的if(a>b),由于1<2,不成立,其中所有if中的语句(即缩进部分)全部被跳过,一直到倒数第三行,所以输出c,正确答案是:3。

二,课后作业

1,阅读程序写结果。

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. char c;
  5. cin>>c;
  6. cout<<c<<"is ";
  7. if(c>='0'&&c<='9')cout<<"a number";
  8. else cout<<"not a number";
  9. return 0;
  10. }

输入:4

2,编写程序,实现简易计算器。要求:

输入两个数和一个运算符,中间用空格分割,输出按照要求的计算结果。

样例输入:10 + 2

样例输出:12

【C++基础教程】第四课的更多相关文章

  1. NeHe OpenGL教程 第四课:旋转

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. Android OpenGL教程-第四课【转】

    第四课 旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 我们增加两个变量来控制这两个对象的旋转.这两个变量加在程序的开始处其他变量的后面.它们是浮 ...

  3. 《jQuery基础教程(第四版)》学习笔记

    本书代码参考:Learning jQuery Code Listing Browser 原书: jQuery基础教程 目录: 第2章 选择元素 1. 使用$()函数 2. 选择符 3. DOM遍历方法 ...

  4. Linux零基础入门第四课

    根据直播讲义整理的内容,从第四课开始.前三课的内容若后面有精力会一并整理进来. 文件的基本操作(上) 创建.删除.复制.移动和重命名 touch命令创建文件 语法 >$ touch file0 ...

  5. GeoServer基础教程(四):空间数据互操作的接口规范WMS、WFS和WCS

    转载:https://ethanblog.com/tech/all-about-wms-wfs-and-wcs.html 前面几节介绍了GeoServer基础教程的一些基本操作,相信大家对GeoSer ...

  6. ActiveMQ基础教程(四):.net core集成使用ActiveMQ消息队列

    接上一篇:ActiveMQ基础教程(三):C#连接使用ActiveMQ消息队列 这里继续说下.net core集成使用ActiveMQ.因为代码比较多,所以放到gitee上:https://gitee ...

  7. Kafka基础教程(四):.net core集成使用Kafka消息队列

    .net core使用Kafka可以像上一篇介绍的封装那样使用(Kafka基础教程(三):C#使用Kafka消息队列),但是我还是觉得再做一层封装比较好,同时还能使用它做一个日志收集的功能. 因为代码 ...

  8. 【C++基础教程】第一课

    一,C++基础 1.1.什么是C++ C++是一种面向对象的编程语言,如今被广泛应用于各种行业. 1.2.C++的语法特点 一般C++的程序长成这个样子: #include<...> // ...

  9. Tomcat基础教程(四)

    一.将Web应用部署到Tomcat中 为什么要部署?将Web应用部署到Tomcat中,那么Tomcat就能找到相应的Web应用,当Tomcat启动时就会加载和初始化Web应用,而在Tomcat启动后, ...

  10. jQuery基础教程第四版练习答案

    第二章 1. $('#selected-plays>li>ul>li').nextAll().addBack().addClass('special'); 2. $('table') ...

随机推荐

  1. 接口自动化测试之httprunner初探

    ❝ 今天来介绍一个python的一个开源项目:httprunner,接口自动化工具.第一次输入,难免有不周到的地方,轻喷~ ❞ 介绍: HttpRunner是一个简单优雅但功能强大的 HTTP(S) ...

  2. 我这三年被kafka坑惨了

    前言 我的上家公司是做餐饮系统的,每天中午和晚上用餐高峰期,系统的并发量不容小觑.为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理. 我当时在后厨显示系统团队,该系 ...

  3. 接口测试--测试工具:rap2 接口文档解析

    通过百度 OCR 工具识别 rap2 登录中的验证码,从而实现登录~那我们今天来实战解析 rap2 的接口数据,生成我们所需要的接口数据 实践上手 文档分析 1.我们先通过 F12 看看哪个接口是我们 ...

  4. Walkthrough: Create and use your own Dynamic Link Library (C++)

    参考网站:https://docs.microsoft.com/en-us/cpp/build/walkthrough-creating-and-using-a-dynamic-link-librar ...

  5. spring开发中常见错误集合,逐步添加

    1.关于jstl错误:原因,在jsp页面中使用了jstl标签库,但是却没有导入,可以将相应的jar包放在tomcat的lib目录下,一劳永逸 Java.lang.NoClassDefFoundErro ...

  6. C++11 shared_ptr(智能指针)详解

    要确保用 new 动态分配的内存空间在程序的各条执行路径都能被释放是一件麻烦的事情.C++ 11 模板库的 <memory> 头文件中定义的智能指针,即 shared _ptr 模板,就是 ...

  7. 面试题:hashcode相等两个类一定相等吗?equals呢?相反呢?

    首先如果hashcode相等的话,这两个类也是不一定相等的,如果是反过来的话(通常情况下,如果两个对象的内容相同,两个对象的hashcode也是相同的) hashcode()和equals()的关系: ...

  8. Linux命令:ps -ef |grep java

    一.ps -ef |grep java 查看包含"java"的所有进程 二.涉及命令详解 ps命令将某个进程显示出来(是LINUX下最常用的也是非常强大的进程查看命令) grep命 ...

  9. springboot开启矩阵传参MatrixVariable

    /** *   根据 URI 规范 RFC 3986 中 URL 的定义,路径片段中可以可以包含键值对. * 规范中没对对应的术语.一般 "URL 路径参数" 可以被应用,尽管更加 ...

  10. ES6 class——name属性与new.target属性

    name属性与new.target属性 name属性: 1.类.name,输出的是类的名字. 2.如果是在类表达式中,类有名字,那么输出结果是类的名字:类没有名字的话,那么输出结果会是表达式中变量或者 ...