附录:cin获取键盘输入
- 1.cin与cout对应的用于输入的对象(标准输入对象),通常对应的设备是键盘。
- 2.cin可以将键盘的一系列字符(即输入)转换为接收信息的变量能够接收的形式。
- 3.输入可以是字符串、整数、浮点数值,也可以是其他类型。cin对象根据接收值的变量类型,使用方法将键盘输入的字符序列转为所需类型。
使用方法:
cin >> value_holder
。value_holder为储存输入的内存单元,可以是变量、引用等等。
int main(){
cout << "请输入一个整数:" << endl;
int num = 0;
cin >> num;
cout << "你输入的数字是:" << num << endl;
return 0;
}
一、运算符
作用:用于执行代码的运算
运算符类型 | 作用 |
---|---|
算术运算符 | 用于处理四则运算 |
赋值运算符 | 用于将表达式的值赋给变量 |
比较运算符 | 用于表达式的比较,并返回一个真值或假值 |
逻辑运算符 | 用于根据表达式的值返回真值或假值 |
1.1 算术运算符
作用:用于处理四则运算
算术运算符包括以下符号:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10 % 3 | 1 |
++ | 前置递增 | a=2; b=++a; | a=3; b=3; |
++ | 后置递增 | a=2; b=a++; | a=3; b=2; |
-- | 前置递减 | a=2; b=--a; | a=1; b=1; |
-- | 后置递减 | a=2; b=a--; | a=1; b=2; |
示例1:
//加减乘除
int main() {
int a1 = 10;
int b1 = 3;
cout << a1 + b1 << endl;
cout << a1 - b1 << endl;
cout << a1 * b1 << endl;
cout << a1 / b1 << endl; //两个整数相除结果依然是整数
int a2 = 10;
int b2 = 20;
cout << a2 / b2 << endl;
int a3 = 10;
int b3 = 0;
//cout << a3 / b3 << endl; //报错,除数不可以为0
//两个小数可以相除
double d1 = 0.5;
double d2 = 0.25;
cout << d1 / d2 << endl;
system("pause");
return 0;
}
总结:在除法运算中,除数不能为0
示例2:
//取模
int main() {
int a1 = 10;
int b1 = 3;
cout << 10 % 3 << endl;
int a2 = 10;
int b2 = 20;
cout << a2 % b2 << endl;
int a3 = 10;
int b3 = 0;
//cout << a3 % b3 << endl; //取模运算时,除数也不能为0
//两个小数不可以取模
double d1 = 3.14;
double d2 = 1.1;
//cout << d1 % d2 << endl;
system("pause");
return 0;
}
总结:只有整型变量可以进行取模运算
示例3:
//递增
int main() {
//后置递增
int a = 10;
a++; //等价于a = a + 1
cout << a << endl; // 11
//前置递增
int b = 10;
++b;
cout << b << endl; // 11
//区别
//前置递增先对变量进行++,再计算表达式
int a2 = 10;
int b2 = ++a2 * 10;
cout << b2 << endl;
//后置递增先计算表达式,后对变量进行++
int a3 = 10;
int b3 = a3++ * 10;
cout << b3 << endl;
system("pause");
return 0;
}
总结:前置递增先对变量进行++,再计算表达式,后置递增相反
1.2 赋值运算符
作用:用于将表达式的值赋给变量
赋值运算符包括以下几个符号:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | 赋值 | a=2; b=3; | a=2; b=3; |
+= | 加等于 | a=0; a+=2; | a=2; |
-= | 减等于 | a=5; a-=3; | a=2; |
*= | 乘等于 | a=2; a*=2; | a=4; |
/= | 除等于 | a=4; a/=2; | a=2; |
%= | 模等于 | a=3; a%2; | a=1; |
示例:
int main() {
//赋值运算符
// =
int a = 10;
a = 100;
cout << "a = " << a << endl;
// +=
a = 10;
a += 2; // a = a + 2;
cout << "a = " << a << endl;
// -=
a = 10;
a -= 2; // a = a - 2
cout << "a = " << a << endl;
// *=
a = 10;
a *= 2; // a = a * 2
cout << "a = " << a << endl;
// /=
a = 10;
a /= 2; // a = a / 2;
cout << "a = " << a << endl;
// %=
a = 10;
a %= 2; // a = a % 2;
cout << "a = " << a << endl;
system("pause");
return 0;
}
1.3 比较运算符
作用:用于表达式的比较,并返回一个真值或假值
比较运算符有以下符号:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | 0 |
!= | 不等于 | 4 != 3 | 1 |
< | 小于 | 4 < 3 | 0 |
> | 大于 | 4 > 3 | 1 |
<= | 小于等于 | 4 <= 3 | 0 |
>= | 大于等于 | 4 >= 1 | 1 |
示例:
int main() {
int a = 10;
int b = 20;
cout << (a == b) << endl; // 0
cout << (a != b) << endl; // 1
cout << (a > b) << endl; // 0
cout << (a < b) << endl; // 1
cout << (a >= b) << endl; // 0
cout << (a <= b) << endl; // 1
system("pause");
return 0;
}
注意:C和C++ 语言的比较运算中,“真”用数字“1”来表示, “假”用数字“0”来表示。
1.4 逻辑运算符
作用:用于根据表达式的值返回真值或假值
逻辑运算符有以下符号:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果a为假,则!a为真; 如果a为真,则!a为假。 |
&& | 与 | a && b | 如果a和b都为真,则结果为真,否则为假。 |
|| | 或 | a || b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
示例1:逻辑非
//逻辑运算符 --- 非
int main() {
int a = 10;
cout << !a << endl; // 0
cout << !!a << endl; // 1
system("pause");
return 0;
}
总结: 真变假,假变真
示例2:逻辑与
//逻辑运算符 --- 与
int main() {
int a = 10;
int b = 10;
cout << (a && b) << endl;// 1
a = 10;
b = 0;
cout << (a && b) << endl;// 0
a = 0;
b = 0;
cout << (a && b) << endl;// 0
system("pause");
return 0;
}
总结:逻辑与运算符总结: 同真为真,其余为假
示例3:逻辑或
//逻辑运算符 --- 或
int main() {
int a = 10;
int b = 10;
cout << (a || b) << endl;// 1
a = 10;
b = 0;
cout << (a || b) << endl;// 1
a = 0;
b = 0;
cout << (a || b) << endl;// 0
system("pause");
return 0;
}
逻辑或运算符总结: 同假为假,其余为真
二、程序流程结构
C/C++支持最基本的三种程序运行结构:==顺序结构、选择结构、循环结构==
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据条件是否满足,有选择的执行相应功能
- 循环结构:依据条件是否满足,循环多次执行某段代码
2.1 选择结构
2.1.1 if语句
作用:执行满足条件的语句
if语句的三种形式
- 单行格式if语句
- 多行格式if语句
- 多条件的if语句
- 单行格式if语句:
if(条件){ 条件满足执行的语句 }
示例:int main() { //选择结构-单行if语句 //输入一个分数,如果分数大于600分,超过重点大学分数线 int score = 0; cout << "请输入一个分数:" << endl; cin >> score; cout << "您输入的分数为: " << score << endl; //if语句 //注意事项,在if判断语句后面,不要加分号 if (score > 600){ cout << "恭喜你,达到重点大学分数线!!!" << endl; } system("pause"); return 0; }
注意:if条件表达式后不要加分号
-
多行格式if语句:
if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };
多条件的if语句:
if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}
示例:
int main() {
int score = 0;
cout << "请输入考试分数:" << endl;
cin >> score;
if (score > 90){
cout << "很优秀" << endl;
}else if (score > 80){
cout << "良好" << endl;
}else if (score > 60){
cout << "及格" << endl;
}else{
cout << "未及格" << endl;
}
system("pause");
return 0;
}
嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断
练习案例: 三只小猪称体重
有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只小猪最重?
#include<iostream>
using namespace std;
int main() {
//三只小猪称体重
int pig1 = 0;
int pig2 = 0;
int pig3 = 0;
cout << "请输入1号小猪的体重" << endl;
cin >> pig1;
cout << "请输入2号小猪的体重" << endl;
cin >> pig2;
cout << "请输入3号小猪的体重" << endl;
cin >> pig3;
cout << "1号小猪的体重" << pig1 << endl;
cout << "2号小猪的体重" << pig2 << endl;
cout << "3号小猪的体重" << pig3 << endl;
if ((pig1 > pig2)&&(pig1 > pig3)) {
cout << " 1号小猪最重!" << endl;
}
else if (pig2 > pig3) {
cout << " 2号小猪最重!" << endl;
}
else {
cout << " 3号小猪最重!" << endl;
}
system("pause");
return 0;
}
2.1.2 三目运算符
作用: 通过三目运算符实现简单的判断
语法:表达式1 ? 表达式2 :表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
示例:
int main() {
int a = 10;
int b = 20;
int c = 0;
c = a > b ? a : b;
cout << "c = " << c << endl;
//C++中三目运算符返回的是变量,可以继续赋值
(a > b ? a : b) = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
system("pause");
return 0;
}
总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰
2.1.3 switch语句
作用:执行多条件分支语句
语法:
switch(表达式)
{
case 结果1:执行语句;break;
case 结果2:执行语句;break;
...
default:执行语句;break;
}
示例:
int main() {
//请给电影评分 :10 ~ 9 经典 , 8 ~ 7 非常好,6 ~ 5 一般,5分以下 烂片.
int movieScore = 0;
cout << "请给这部电影打分" << endl;
cin >> movieScore;
switch(movieScore) {
case 10:
case 9:
cout << "经典" << endl;
break;
case 8:
case 7:
cout << "非常好" << endl;
break;
case 6:
case 5:
cout << "一般" << endl;
break;
default:
cout << "烂片" << endl;
break;
}
system("pause");
return 0;
}
注意1:switch语句中表达式类型只能是整型或者字符型
注意2:case里如果没有break,那么程序会一直向下执行
总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间
2.2 循环结构
2.2.1 while循环语句
作用:满足循环条件,执行循环语句
语法:while(循环条件){ 循环语句 }
解释: 只要循环条件的结果为真,就执行循环语句
示例:
int main() {
int num = 0;
while (num < 10)
{
cout << "num = " << num << endl;
num++;
}
system("pause");
return 0;
}
注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环
while循环练习案例: 猜数字
案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。
//猜数字
int main(){
srand((unsigned int)time(NULL));
int num = rand()%100+1;
int playNum = 0;
cout << "请玩家输入一个数" << endl;
while (1) {
cin >> playNum;
if (playNum > num) {
cout << "大了!" << endl;
}
else if (playNum < num) {
cout << "小了!" << endl;
}
else {
cout << "恭喜你,猜对了!" << endl;
break;
}
}
system("pause");
return 0;
}
2.2.2 do...while循环语句
作用: 满足循环条件,执行循环语句
语法: do{ 循环语句 } while(循环条件);
注意:与while的区别在于do...while会先执行一次循环语句,再判断循环条件
示例:
int main() {
int num = 0;
do
{
cout << num << endl;
num++;
} while (num < 10);
system("pause");
return 0;
}
总结:与while循环区别在于,do...while先执行一次循环语句,再判断循环条件
练习案例:水仙花数
案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153
int main(){
int num = 100;
do {
int ud = 0; //个位
int td = 0; //十位
int hd = 0; //百位
ud = num % 10;
td = num / 10 % 10;
hd = num / 100;
if (ud*ud*ud + td*td*td + hd*hd*hd == num) {
cout << num << endl;
}
num ++;
}while(num <1000);
system("pause");
return 0;
}
2.2.3 for循环语句
作用: 满足循环条件,执行循环语句
语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }
示例:
int main() {
for (int i = 0; i < 10; i++){
cout << i << endl;
}
system("pause");
return 0;
}
注意:for循环中的表达式,要用分号进行分隔
总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用
2.2.4 嵌套循环
作用: 在循环体中再嵌套一层循环,解决一些实际问题
示例:
int main() {
//外层循环执行1次,内层循环执行1轮
for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
cout << "*" << " ";
}
cout << endl;
}
system("pause");
return 0;
}
练习案例:乘法口诀表
int main(){
//乘法口诀表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
cout << i << "X" << j << "=" << i * j<< " ";
}
cout << endl;
}
system("pause");
return 0;
}
2.3 跳转语句
2.3.1 break语句
作用: 用于跳出【选择结构】或者【循环结构】
break使用的时机:
- 出现在switch条件语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
2.3.2 continue语句
作用:在【循环语句】中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注意:continue并没有使整个循环终止,而break会跳出循环
2.3.3 goto语句
作用:可以无条件跳转语句
语法: goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
示例:
int main() {
cout << "1" << endl;
goto FLAG;
cout << "2" << endl;
cout << "3" << endl;
cout << "4" << endl;
FLAG:
cout << "5" << endl;
system("pause");
return 0;
}
注意:在程序中不建议使用goto语句,以免造成程序流程混乱