C++零基础新手入门(三)

本文所有代码均在Vscode中编译通过


本节目录

    1° 关系运算

    2° 如果

    3° 偶数

    4° 数学题

 

 

关系运算

看到这个标题,有没有脑瓜子嗡嗡的?什么叫做关系运算?关系运算是什么?其实很简单。

小于和他的女朋友走在马路上,别人问,你们两个什么关系啊?小于说,我们是情侣关系,这就是关系。

在数学中,1>0,也就是一比零大,这是一个地球人都知道的事实。(你不知道?别看了,去给小学体育老师打电话。),这就是数学上的关系运算。

在程序中,也是有关系运算的,和数学中一样,1>0写作1>0,不同的是,数学中的≥和≤以及≠分别变成了>=和<=以及!=   ,注意哦,这里的!并不是阶乘的意思,计算机中计算阶乘会在以后讲到。别问我为什么符号那么写,因为第一个人就是那么规定的 (我不会告诉你是因为我也不知道为什么)。比如x≥5就变成了x>=5,其实还是很形象的吧。

!这个感叹号其实也有单独的意思,就是"取反",比如!是就是否。这个跟数学中的相反数是不一样的。以后再慢慢了解。

有一个需要特别注意的,那就是'=',c++中,'='的意思是赋值,就像是把4这个值给了x这个小盒子,就写作x=4,x这个小盒子就住进了4。那么怎么判断两个数相等呢?聪明的c++就把相等变成了'==',两个等于号意思是相等,比如,x和y这两个小盒子里住的数字一样,都是5,在程序中,我们就可以说x==y。

在程序中,0表示'否',非零(1)表示'是'。0就是计算机在摇头,1就是计算机在点头,就那么简单的记住就行了。

还记得上面讲的感叹号吗?用0和1表示出来,也就是!0=1,!1=0。

这就是关系运算,如果你觉得关系运算没有用,请看下节!

 

 

如果

如果是什么?百度是这么告诉我的:意思是表示假设。反义词是肯定,绝对,必须。

我们仔细地来看一句话,"如果(人人都献出一点爱),[世界将变得更美好]"。其中,()内的是条件,当()内满足时,[]就将成立。(你说我一个理科生为啥要解释一个句子?)。

我们把上面那个例子,用程序表示一下,那么就会成为这个样子:

if(人人都献出一点爱){
    世界就会变得更美好
}

程序也是一样的,if是一个用来检查的机器,你把一个条件()放进去,当条件满足的时候,这个机器就会执行任务{}。这就是if的"语法",和英语中的语法有点像。

当然,上面那个例子放在程序里面肯定无法执行,那么我们把它变成这个样子:

if(a==b){
    cout<<"a和b相等";
}

上面的这个例子意思是:当小盒子a的内容和小盒子b的内容相等时,那么就说出a和b相等。注意哦,这个是两个等于号==,而不是一个等于号=,再复习一遍:一个=赋值,两个==相等。

好,现在应该大概明白了if语句,我们现在来仔细看一下if-else的语法。

if(){

}else{

}

if检查机器放进条件(),满足时执行第一个{}的任务,否则执行第二个{}的任务。

再把栗子改一下:当a和b相等时,说出a和b相等,不相等时,说出a和b不相等。

那么把他写出来就只酱紫的:

if(a==b){
    cout<<"a和b相等";
 }else{ 
    cout<<"a和b不相等";
}

把框架画出来就是这个样子的:

          if判断机器
            ||
           a==b
    ||==================||
    ||                  ||
   满足                不满足
    ||                  ||
  a和b相等           a和b不相等
    ||=======||=========||
             ||
            结束

但是这个似乎还不是太完善。。

比如,我想让程序这样:当a比b大,说出a比b大,当a比b小,说出a比b小,在其他情况下,说出a和b相等

小于看了看题,感觉十分容易,于是就写下了一下代码:

if(a>b){
    cout<<"a比b大"; 
}
if(a<b){
    cout<<"a比b小";
}
else{
    cout<<"a和b相等"; 
}

但是,放到程序中编译运行,结果却不尽人意,为什么嘞?

因为这个else默认跟在第二个if后面,if检查机器默认的是当第二个()不满足时,就执行else后{}的任务。但是,第二个()内是a<b,那么a≥b时,都会执行else后{}的任务,但是我们只想让a=b是才执行任务,怎么办呢?

这里只要把中间那个if换成else if就行了。

那么就会成为酱紫~

if(a>b){
    cout<<"a比b大"; 
} else if(a<b){
    cout<<"a比b小"; 
} else{
    cout<<"a和b相等"; 
}

那么这个时候,if检查机器就会先判断a>b,满足时自动说出a比b大,然后就会停止这个机器,也就不会往下判断了。当a>b不满足时,才会继续往下判断,也就是判断a<b,如果a<b满足了,就会说出a比b小,当第二个条件a<b也不满足时,才会运行else内的语句。

下面是一个大概的图:

(有人说这个图不好看懂,但是我如果画出来的话,就更没人能看懂了)

                         if判断机
                            ||
                            a>b
                            ||
                ||==========||========||
               不满足                 满足
                ||                    ||
                a<b                  a比b大
                ||                    ||
           ||==========||             ||
         不满足        满足            ||
           ||          ||             ||
        a和b相等      a比b小           ||
           ||          ||             ||
           ||==========||=============||
                      结束

那么一个if后面能跟几个else if,几个else呢?

一般一个if只能跟一个else,但是能跟好几个else if。

仔细看就能发现,else后面是没有()的,但是if后面都有(),只要记住有条件就一定要有if,有if一定要有()就行了,像else这样没有条件的,只要跟在if后面,就不要写()了。

那么现在,我们来用if来实现一个程序:

 

 

偶数

请听题:

有一数,知其非偶

你可能要说:这个用布尔型也能解决啊?那么我把题目再改一下,布尔型就没有办法了:

有一数,知其非偶,若偶,言偶,非,曰奇

而布尔型只能输出0和1,所以布尔型就不能用了,还是老老实实的用if语句吧!

那么,流程图就是这个死样的:

         if判断
           ||
          偶数
   ||======||======||
   是             不是
   ||              ||
   偶              奇
   ||======||======||
          结束

判断偶数也很简单,只要知道它mod 1的结果就行了。

那么你自己先写一下啊

别偷看答案!

答案:

答案!
#include <iostream>
using namespace std;
int main() {
    int number;
    cin >> number;
    if(number%2==0){
        cout<< "偶";
    }else{
        cout<< "奇";
    }
    return 0;
}

嗯。。这个应该不难吧。。

但是我不希望有人写成这样。。

#include <iostream>
using namespace std;
int main() {
    int number;
    cin >> number;
    bool is_ture=number%2;
    if(is_ture==1){
        cout<< "偶";
    }else{
        cout<< "奇";
    }
    return 0;
}

先用bool型,再判断布尔型的值。。不是多此一举吗。。

 

 

数学题

这里有一道高中数学题:(我编的题)

小于去买房子,销售人员说:
买5套房子及以下(n≤5),不打折;
买5套以上(n>5),打六折;
一套都不买,打骨折。

嗯,程序输入一个房子数n,和一个房间m。(假设房子都一样的钱),输出小于最终花费的钱。

分析一下,这道题有3,呸,2个可能,分别是n≤5,n>5,n=0(划掉),那么你先自己把分支图画一下,就像是我上面画的一样。

分支图
//你是不是没画图就看答案了? 
//你是不是没画图就看答案了? 
//你是不是没画图就看答案了? 
//画图去!! 
//画图去!! 
//画图去!! 
//画完了?? 
//画完了?? 
//画完了?? 
//请看!!! 
//请看!!! 
//请看!!! 

其实,向上面这样大段落的注释,可以用 /* 和 */来解决 
把/*放在开头,*/放在结尾,那么就变成了这样: 

/* 
你是不是没画图就看答案了? 
你是不是没画图就看答案了? 
你是不是没画图就看答案了? 
画图去!! 
画图去!! 
画图去!!
画完了?? 
画完了?? 
画完了?? 
请看!!! 
请看!!! 
请看!!! 
*/

好了不闹了,答案在这里 ↓ ↓ ↓

                       小于买房 
                          ||  
     ||===================||===================|| 
    n<=5                                      n>5 
     ||                                        || 
    n*m                                      n*m*0.6 
     ||                                        || 
     ||===================||===================||
                          ||
                         结束

好了,把他变成程序吧。

懒得写?别开玩笑了,快点!

答案
#include <iostream>
using namespace std;

int main(){
    int n,m;
    cin>>n>>m;
    if(n<=5){
        cout<<n*m;
    }else{
        cout<<n*m*0.6;
    }
    return 0;
}

好了,你帮小于设计了这个计算买房子价格的程序。

但是,小于最终因为租服务器建网站啥的花了太多的钱,没钱买房子最终被打了骨折,程序没能帮小于算出医药费的价格。。

 

 

今日作业:

给定一个整数 N,判断其正负。 
如果 N>0,输出"positive"; 如果 N=0,输出"zero"; 如果 N<0,输出"negative"。
抱歉,只有登录并在本文发表评论才能阅读隐藏内容
点赞

发表评论