上一篇文章中,我们了解了变量的各种运算。那如果要对多个数据运算呢?那是不是...
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
那么今天这篇文章就到这里了,下期我们将会通过几个实际样例巩固这些知识点。
最后,如果你觉得这篇文章还不错的话,麻烦点个收藏点个关注,这是免费的,您随时可以取消。你们的支持是作者最大的动力!