学习语言最好的方式就是实践,每当掌握一个新功能时,就要立即将这个功能应用到实践中。
使用大括号括起来的语句称为代码块。代码块里面的代码相比于外面应当有统一的缩进(建议4个空格)。
开头大括号可以像例子中给出的那样不换行,也可以另起一行,看个人习惯。
总之,写程序应当有良好的代码规范,比如换行、空格、缩进等,这也是为了使代码可读性强,更容易理解。
一. 比较运算符 比较运算符用于对数据的比较,计算两个数据之间的关系,因此也被成为关系运算符。
#include<iostream>
using namespace std;
int main(){
cout<<(100>=90)<<endl;//计算两个数据之间的大小关系
cout<<(100<=90)<<endl;//注意:这里要加括号
return 0;
}
二、基本if-else语句
判断条件:通常是一个条件表达式,也可以是一个变量。
当条件成立时,执行某些语句;否则执行另一些语句。
#include<iostream>
#include<cstdio>//以下代码输入用了cin,输出用了printf
using namespace std;
int main(){
int a;
cin>>a; //输入a,等同scanf("%d",&a);
if(a>5){ //如果a大于5
printf("%d is big! \n",a);//等同cout<<a<<"is big!"<<endl;
printf("%d + 1 = %d \n",a,a+1);
}else{ //否则
printf("%d is small! \n",a);
printf("%d - 1 = %d \n",a,a-1);
}
return 0;
}
可以没有 else 语句:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a;
cin>>a; //输入a
if(a>5){ //如果a大于5
printf("%d is big! \n",a);
printf("%d + 1 = %d \n",a,a+1);
}
return 0;
}
当只有一条语句时,大括号可以省略:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a;
cin>>a; //输入a
if(a>5)
printf("%d is big! \n",a);
else
printf("%d is small! \n",a);
return 0;
}
提示:只有在明确不会出错的情况下,才可以写省略大括号。
练习1:输入一个整数,输出这个数的绝对值。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a;
cin>>a; //输入a
if(a>0) cout<<a; //if后只有一句代码,可以省略{}
else cout<<-a; //else后只有一句代码,可以省略{}
return 0;
}
练习2:输入两个整数,输出两个数中较大的那个。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a,b;
cin>>a>>b; //依次输入a和b
if(a>b) cout<<a; //如果a比b大,则输出a
else cout<<b; //否则,输出b
return 0;
}
if-else语句内部也可以是if-else语句。
练习3:输入三个不同的整数,输出三个数中最大的那个。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a>b){
if(a>c){ //多层if嵌套
cout<<a; //a最大
}else{
cout<<c; //c最大
}
}else{
if(b>c){
cout<<b; //b最大
}else{
cout<<c; //c最大
}
}
return 0;
}
条件运算符 条件? 表达式1:表达式2 ,这是C++中唯一的一个三目运算符。
三. if-else 多分支语句:练习:输入一个0到100之间的分数, 如果大于等于85,输出A; 如果大于等于70并且小于85,输出B; 如果大于等于60并且小于70,输出C; 如果小于60,输出 D;
#include <iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a>=85){ //大于等于85,输出A
cout<<'A'<<endl;
}else if(a>=70){ //否则,大于等于70,输出B
cout<<'B'<<endl;
}else if(a>=60){
cout<<'C'<<endl;
}else{
cout<<'D'<<endl;
}
return 0;
}
四、逻辑运算符 练习:输入三个不同的整数,输出三个数中的最大值。
(1) 与 &&
(2) 或 ||
(3) 非 ! 常见写法if(!a) 相当于 if(a==0)
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a>b&&a>c){
cout<<a; //a最大
}else if(b>a&&b>c){
cout<<b; //b最大
}else{
cout<<c; //c最大
}
return 0;
}
练习:用一条if语句,判断闰年。非整百年,被4整数是闰年;整百年,被400整除是闰年。
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if((a%100!=0 && a%4==0)||(a%400==0)){
cout<<a<<" is a leap year!"<<endl;
}else{
cout<<a<<" is not a leap year!"<<endl;
}
return 0;
}
五、switch语句 switch都能用if…else替代,但也应该知道switch的使用方法。练习:要求按照考试成绩的等级输出百分制成绩段,A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入(大小写的ABCD皆可)。
int main(){
char c;
cin>>c; //输入任意字符c
if(c>='a' && c<='z') { //如果是小写,转成大写。
c=c-32; //小写字母的ASCII码比大写字母大32
}
switch (c) { //这个输入参数只能是字符、整数或布尔类型
case 'A':
cout<<"85~100"<<endl;
break; //记得要break哦,如果没有,可以试试看输出什么
case 'B':
cout<<"70~84"<<endl;
break;
case 'C':
cout<<"60~69"<<endl;
break;
case 'D':
cout<<"0~60"<<endl;
break;
}
return 0;
}
注意:switch()的输入参数只能是字符、整数或布尔类型,不可以是其他数据类型。每个case语句里面都有要break,不然会继续执行下面的case中的语句。
如果不将字符都转换成大写或小写,那么就需要分别进行判断:
nt main(){
char c;
cin>>c; //输入任意字符c
switch(c){ //这个输入参数只能是字符、整数或布尔类型
case 'A':
cout<<"85~100"<<endl;
break;//记得要break,如果没,可以试试看输出什么
case 'B':
cout<<"70~84"<<endl;
break;
case 'C':
cout<<"60~69"<<endl;
break;
case 'D':
cout<<"0~60"<<endl;
break;
case 'a':
cout<<"85~100"<<endl;
break;
case 'b':
cout<<"70~84"<<endl;
break;
case 'd':
cout<<"60~69"<<endl;
break;
case 'd':
cout<<"0~60"<<endl;
break;
}
return 0;
}
注意1:C++中的==和=的区别:
注意2:布尔类型的使用:
注意3:运算优先级:
if和switch的特点比较:
合并switch语句的使用:
常见易错点:
1、逻辑运算符&&、||、!
逻辑表达式运算结果有“真”和“假”两种,C语言中用 “1” 表示“真” ,用“0”表示“假”。条件a && 条件b:逻辑与运算,两者都为真,结果才能为真。注意:&&采用的是短路运算,如果条件a为假,那么条件b不判断,直接判定结果为假。
同理:|| 运算中,如果第一个条件为真,第二个条件不判断,结果直接为真。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为true,则逻辑非运算符将使其为false。
2、离散数学的符号 ‘¬’、’∧’、’∨’
“¬”是逻辑非的意思,专门否定一个命题,p与¬p一真一假。
“∧”是逻辑与的意思,例如p∧q,当p,q同真为真,其他为假。
“∨”是逻辑或的意思,例如p∨q,当p,q同假为真,其他为真。
3、switch case一个switch语句允许测试一个变量等于多个值时的情况,相当于if else。 注意:
switch中的表达式必须是一个整型或者枚举类型。
如果某个case值匹配,会执行该case中的语句,如果没有break,会不判断下一个 case直接执行下一个case, 直到遇到break。
default相当于if else的else,也可以放在最开始的位置。
switch表达式类型和case中的值的类型必须相同。
4、三目运算符格式
判断条件 ? 表达式1 : 表达式2;
含义:如果判断条件成立,则执行表达式1, 否则执行表达式2。 三目运算符可以简化if else的写法。