事前日常敲黑板
(1)今天开始的内容涉及到了流程图的一些知识,建议先看一看下面的图,如果看不懂各个框代表什么的话建议复习一下流程图
总章里面我们提到 写程序 就是 思路+翻译,有些时候 为了更好的整理思路 ,可能需要在纸上写写画画(个人强烈建议写程序时旁边备一份纸和笔)流程图就是其中的一种。
思考下面情形
当我们用计算器(不是计算机) 计算几个数的和或差的时候 会先输入一个数字,然后是 加号或者减号,然后是是下一个数字,最后是等号。然后 计算器会把结果告诉我们。
现在,我们试着用流程图来表示这个过程(可以先自己考虑一下)
有了思路,然后我们开始我们的翻译过程
首先 我们声明几个变量,分别用来放第一个数,符号,第二个数,最后的那个c
然后输入三个值(这两步前面的知识应该够了)
注意:这里变量a b c都是int型的,所以可以在一句话中声明(新的操作哦)
#include <iostream>
using namespace std;
void main(){
int a,b,c;
char d;
cin>>a>>d>>b;
}
前面的输入部分已经完了,然后进入判断部分了
然后,重点来了
c++中的判断 用 if(如果) 和 else(否则)表示,具体使用方法
if(判断条件){
如果判断条件结果为真,就执行这里面的代码
}else{
如果判断条件结果为假,就执行这里面的代码
}
注意:
(1)else后面不需要写判断条件,因为只要不满足如果部分的条件的就都一定属于else
(2)一个if只能对应一个else
(3)if部分只执行紧接下来的那一条语句,然后就必须跟else了。也就是说if与else之间 只能有一条语句,因为有些时候满足if的条件下要执行好多条语句,所以用大括号把它们括起来当作一条语句(else部分同理也只是执行紧接下来的那一条语句)
这里的判断条件可以是直接的结果(c++中可以用非0 表示真,0 表示假 或者用true 表示真,false表示假 ),也可以是通过关系运算符(前面提到过)进行比较得出的结果,也可以是各个结果之间经过昨天的与 或 非逻辑运算得到的最终结果
具体使用如下
#include <iostream>
using namespace std;
void main(){
int a,b,c;
char d;
cin>>a>>d>>b;
if('+' == d){
c = a + b;
}else{
c = a - b;
}
cout<<c<<endl;
}
这里有几个 个人习惯 要稍微注意一下
(1) using namespace std;行和 main行之间建议空一行
(2)一般建议 如果判度条件是 常量和变量比较的时候,建议把常量写到前面,因为 c++ 中 = 和 == 的概念是不同的,判断是否相等时要用 == 而日常表示等于时 用的是 = 为了避免手贱把关系运算符 == 写成 赋值运算符 = 建议把常量写在前面
(3)变量或常量与操作符之间建议空一格
运行结果如下
有些时候 可能只需要用到if,比如上面的需求改成 如果符号是 ‘+’ 就计算两个值的和,否则不做处理,那么代码如下
#include <iostream>
using namespace std;
void main(){
int a,b,c;
char d;
cin>>a>>d>>b;
if('+' == d){
c = a + b;
}else{
}
cout<<c<<endl;
}
这里因为else里面没有语句 ,所以,可以省略 然后写成
#include <iostream>
using namespace std;
void main(){
int a,b,c;
char d;
cin>>a>>d>>b;
if('+' == d){
c = a + b;
}
cout<<c<<endl;
}
这里有两点需要注意:
(1)一个if 只能对应一个else 或者 省略else
(2)else 表示if里面的条件结果为假的全部条件,所以,else后面不需要跟判断条件了.
然后运行结果可能是这样
也可能不正常的长成下面这样
我擦泪 怎么会这样
因为c 在声明的时候 并没有给它一个值 ,所以,它的默认的值可能就是它代表的空间里的内容。当if语句满足条件时 程序会把a+b的值赋给c,如果不满足条件,c的值就没有改变过,然后就是那个神秘的默认值了(当然,这个值不同编译器,不同系统甚至不同时间都可能不同)
然后 如果 感觉今天毫无压力 可以尝试按照上面的步骤写个乘法和除法的程序
提示:乘除的两个坑
(1)除数可能是0
(2)整数相除结果可能是小数