C++零基础入门教程 #4数组、条件判断与循环

上一篇文章中,我们了解了变量的各种运算。那如果要对多个数据运算呢?那是不是...

int a1, a2, a3, a4, ... a100;
cin >> a1 >> a2 >> ... >> a100;
int sum = a1 + a2 + a3... + a100;
cout << sum << endl;

做不到,怎么想都做不到吧!(派蒙音)

一、数组定义

回归正题,C++中有个叫数组的东西,可以理解为:

 

 其中的值可以是很多类型的数,但同一个数组内只能储存同一类型的值。

每个值下面的数叫做下标,表示这个数在数组的几号位置(从0开始)

在代码中表示如下:

int a[10086];     //定义名为a的整数类型数组,大小10086
a[0] = 1;         //a数组中编号0位置的值置为1
cout << a[0];     //输出a数组中编号0位置的值

其中,数组名[编号]返回数组中编号位置的值(其实也是表达式)。

但是,如果这样一个个读入,还是不太方便,那就来了解一下循环吧。

二、循环

for循环

C++中,for是一种循环语句,格式为:

for(初始执行语句; 条件; 循环后执行语句){
    循环体语句
}

其中,循环开始时,首先执行括号中第一部分的语句,一般为初始化变量。

然后,程序会判断第二部分的条件是否成立。如果成立则执行循环体语句,否则退出循环。

最后,执行完一次循环后,程序会执行第三部分的语句。例如:

for(int i = 1; i <= 10; i = i + 1){
    cout << i << endl;
}

这里的for循环初始化了变量i为1,当i小于等于10时执行输出i,最后将i加一

(最后的i = i + 1一般写成i++或++i,表示将i加上1)

while循环

除了for循环以外,我们还可以使用while循环:

while(条件){
    循环体语句
}

while循环的特性:当条件成立时,执行中间的语句,否则跳出循环。

实际上,while循环就是简化的for循环,只是只剩下中间的条件部分:

int a = 1;
for(; a <= 10; ) a++;
while(a <= 10) a++;

第二行和第三行是等价的(当语句只有1条时,大括号可以省去,但最好加上)。

do-while结构

除了正常的while循环外,还有一种特殊的形式:

do{
    循环体
}while(条件);

do-while结构中,无论条件是否满足,循环体都先会被执行1次,再判断条件是否满足。

(while后面的分号别忘了)

三、条件判断if、else

既然讲到了条件,那就不得不提一嘴判断语句if了。它的结构很简单:

if(条件){
    语句
}else{
    语句
}

就这样。满足条件时执行第一对括号中的语句,否则执行第二对括号中的。

(不写else和后面的语句也可以,这里是为了方便演示)

if-else级联

有时我们会需要判断多种情况,这时用上面的结构就会...

if(条件1) {
    ...
}else{
    if(条件2){
        ...
    }else{
        if ...
        else{
            if(条件10086){   
                ......
            }
        }
    }
}    

显然,这样的代码太长了。我们完全可以利用if语句的特性:if或else后面只有一条语句时,可以不加括号:

if(条件1){
    ...
} else if(条件2){
    ...
} else ...{
    ...
} else if(条件10085){
    ...
} else {
    ...
}

当然,在后文我们也会讲到更加方便的结构,大家敬请期待~~~

四、条件表达式

说了那么多“条件” ,那么怎么表达一个条件呢?

首先,对于一个数字,0为假,非零为真,如:

int a; cin >> a;
if( a ){
    cout << "真\n";
}else{
    cout << "假\n";
}
//输入:-1  输出:真
//输入: 1  输出:真
//输入: 0  输出:假

然后是最基础的 >, <, >=, <=,分别对应大于、小于、大于等于、小于等于。

==

表示等于的符号比较特殊,是==,也就是两个等号连在一起。

但是,如果你写成这样也不会报错:

int a = 10, b = 5;
if(a = b) cout << "yes";
else cout << "no";

但是,最终的结果始终是yes,这是怎么回事呢?

还记得我们讲赋值运算时说的吗?赋值也是表达式,a = b返回的值是变量b的值。

也就是说,在第二行的判断中,我们先把a的值赋为b的值,再给if语句返回b的值。

也就是说,第二行等价于

a = b;
if(b) cout << "yes";
else cout << "no";

这样,程序当然不会报错。

逻辑与( && ) 或 ( || )  非( !)

判断条件时,如果想要“表达式1或者表达式2成立时值为真”这种效果,可以用:

if(表达式1 || 表达式2) cout << "yes";
else cout << "no";

同样的,表达与或非时,也可以这么用:

if(表达式1 && 表达式2) cout << "yes";
else cout << "no";
//表达式1和2同时成立时输出yes,否则输出no
if(!表达式) cout << "yes";
else cout << "no";
//表达式不成立时输出yes,否则输出no

甚至还可以连在一起用:

if(!(表达式1 && 表达式2 || 表达式3)) cout << "yes";
else cout << "no";

这里要注意三种运算的优先级: !  >  &&  >  ||

使用时,最好在表达式中加入括号改变优先级。

这里的括号和数学中的小括号、中括号一样,程序会优先计算括号里的内容,但C++只支持用小括号改变优先级,即() ,不支持中括号( [ ] )或大括号( { } )。遇到括号嵌套也只能用小括号:

int a, b, c, d, e;
int ans = d / (a * (b + c)) * e;
//等价于数学上的 d ÷ [a × (b + c)] × e

那么今天这篇文章就到这里了,下期我们将会通过几个实际样例巩固这些知识点。

最后,如果你觉得这篇文章还不错的话,麻烦点个收藏点个关注,这是免费的,您随时可以取消。你们的支持是作者最大的动力!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

起床气233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值