作用:用于从键盘获取数据
关键字:cin
语法:cin>>变量
int main() {
//1.整型
int a = 0;
cout << "请给整型变量a赋值" << endl;
cin >> a;
cout << "整型变量a=" << a << endl;
//2.浮点型
float f = 3.14f;
cout << "请给浮点型变量f赋值" << endl;
cin >> f;
cout << "浮点型变量f=" << f << endl;
//3.字符型
char ch = 'a';
cout << "请给字符型变量ch赋值" << endl;
cin >> ch;
cout << "字符型变量ch=" << ch << endl;
//4.字符串型
string str = "abc";
cout << "请给字符串型变量str赋值" << endl;
cin >> str;
cout << "字符串str=" << str << endl;
//5.布尔型
bool flag = true;
cout << "请给布尔型flag赋值" << endl;
cin >> flag;//布尔类型 只要是非0的值都代表真
cout << "布尔类型flag=" << flag << endl;
system("pause");
return 0;
}
作用:用于执行代码的运算
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 = 0;
//cout << a2 / b2 << endl;//错误!两个数相除,除数不可以为0
//两个小数可以相除
double d1 = 0.5;
double d2 = 0.22;
cout << d1 / d2 << endl;//运算的结果也可以是小数
system("pause");
return 0;
}
int main() {
//取模运算的本质就是求余数
int a1 = 10;
int b1 = 3;
cout << a1 % b1 << endl;
int a2 = 10;
int b2 = 20;
cout << a2 % b2 << endl;
int a3 = 10;
int b3 = 0;
//两个数相除 除数不可以为0 所以也不能取模
//cout << a3 / b3 << endl;
//两个小数是不可以做取模运算的
double d1 = 3.14;
double d2 = 1.1;
//cout << d1 % d2 << endl;
system("pause");
return 0;
}
只有整型变量可以取模
前置:先自增在运算;
后置:先运算后自增;
跟Java C一样
作用:用于表达式比较,返回真或假
运算符 | 术语 | 名称 | 运算规则 |
---|---|---|---|
&& | 与运算符 | 逻辑与 | 运算符左右两端的操作数都为true,表达式结果才为true,其它情况表达式结果为false |
|| | 或运算符 | 逻辑或 | 运算符左右两端的操作数都为false,表达式结果才为false,其它情况表达式结果为true |
! | 非运算符 | 逻辑取反 | 操作数为true,结果为false;操作数为false,结果为true |
同Java和C
&& 同真为真,其余为假
|| 同假为真,其余为假
顺序结构
选择结构
循环结构
作用:执行满足条件的语句
三种形式:单行、多行、多条件
if条件表达式后不要加分号
if(条件){条件满足执行的语句}
int main() {
//选择结构 单行if语句
//用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出
//1.用户输入分数
int score = 0;
cout << "请输入一个分数:" << endl;
//2.打印用户输入的分数
cout << "您输入的分数为:" << score << endl;
//3.判断分数是否大于600,如果大于,那么输出
//注意事项 , if条件后面不要加分号 如果加了分号,无论条件是否满足都会被执行
if (score > 600) {
cout << "恭喜您考上了一本大学" << endl;
}
system("pause");
return 0;
}
if(条件){条件满足执行的语句};
int main() {
//选择结构 - 多行if语句
//输入考试分数,如果大于600.打印考上一本大学
//小于等于600 打印未考上
//1.输入考试分数
int score = 0;
cout << "请输入考试分数" << endl;
cin >> score;
//2.提示用户输入的分数
cout << "您输入的分数为" << score << endl;
//3.判断 如果大于600 打印考上一本,否则打印未考上
if (score > 600) {
cout << "恭喜考上一本" << endl;
}
else {
cout << "未考上一本大学" << endl;
}
system("pause");
return 0;
}
if(条件1){条件满足执行的语句}else if(条件2){条件满足执行的语句}...else{都不满足执行的语句}
在if语句中,可以嵌套使用,达到更精确的条件判断
int main() {
//嵌套if
//1.输入考试分数
int score = 0;
cout << "请输入考试分数" << endl;
cin >> score;
//2.提示用户输入的分数
cout << "您输入的分数为" << score << endl;
//3.判断
//大于600 一本
//大于700 北大
//大于650 清华
//其余 人大
//大于500 二本
//大于400 三本
//其余 未考上
if (score > 600) {
cout << "恭喜考上一本" << endl;
if (score > 700) {
cout << "恭喜考上北大" << endl;
}else if (score > 650) {
cout << "考上清华" << endl;
}else {
cout << "考上人大" << endl;
}
}
else if (score > 500) {
cout << "考上二本大学" << endl;
}
else if (score > 400) {
cout << "考上三本大学" << endl;
}
else {
cout << "未考上" << endl;
}
system("pause");
return 0;
}
作用:通过三目运算符实现简单的判断
语法:表达式1?表达式2:表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果;
在C++中三目运算符返回的是变量,可以继续赋值
作用:执行多条分支语句
语法:
switch(表达式){
case 结果1:执行语句;break;
case 结果2:执行语句;break;
......
default:执行语句;break;
}
作用:满足循环条件,执行循环语句
语法:while(循环条件){循环语句}
解释:只要循环条件结果为真,就执行循环语句
int main() {
/*猜数字
系统随机生成一个1到100之间的数字,玩家进行猜测,
如果猜错,提示玩家数字过大或过小,
如果猜对 恭喜玩家胜利,并且退出游戏*/
//添加随机数种子 作用利用当前系统时间生成随机数 防止每次随机数都一样
srand((unsigned int)time(NULL));
//1.系统生成随机数
int num = rand() % 100 + 1; //rand()%100 生成 0~99 随机数
int guess = 0;
while (num != guess) {
cout << "请猜测num=" << endl;
cin >> guess;
if (num > guess) {
cout << "过小" << endl;
}
else if (num < guess) {
cout << "过大" << endl;
}
else {
cout << "恭喜猜对" << endl;
//猜对退出游戏
break; //break 退出当前循环
}
}
system("pause");
return 0;
}
语法:do{循环语句}while(循环条件);
注意:与while的区别在于do…while会先执行一次循环语句,在判断循环条件
/*水仙花数
水仙花数是指一个3位数,他的每个位上的数字的3的幂次之和等于它本身
请利用do-while语句求出所有3位数的水仙花数
1.将所有的三位数输出
2.在所有的三位数中找水仙花数
获取个位 %10
获取十位 /10%10
获取百位 /100
*/
int main(){
int num=100;
int a = 0;
int b = 0;
int c = 0;
do {
int a = num / 100;//百位
int b = num / 10 % 10;//十位
int c = num % 100 % 10;//个位
if (num == a * a * a + b * b * b + c * c * c) {
cout << num << endl;
}
num++;
} while (num<1000);
system("pause");
return 0;
}
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
int main() {
/*敲桌子
从1开始数到数字100,
如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,
打印敲桌子 其余直接打印输出
1.输出1-100
2.找特殊数字打印敲桌子
*/
for (int i =1; i <= 100; i++)
{
if (i % 10 == 7 || i / 10 == 7 || i % 7 == 0) {
cout << "敲桌子" << endl;
}
else {
cout << i << endl;
}
}
system("pause");
return 0;
}
作用:在循环体中在嵌套一层循环,解决实际问题
int main() {
//利用嵌套循环实现星图
//打印一行星图
//外层执行一次 内层执行一周
//外层循环
for (int j = 0; j < 10; j++) {
//内层循环
for (int i = 0; i < 10; i++) {
cout << "* ";
}
cout << endl;
}
system("pause");
return 0;
}
/*乘法口诀表
利用嵌套循环,实现九九乘法表
*/
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
if (i * j < 10) {
cout << i << "*" << j << "=" << i * j<<" ";
}else {
cout << i << "*" << j << "=" << i * j<<" ";
}
}
cout << endl;
}
system("pause");
return 0;
}
作用:用于跳出选择结构或者循环结构
break的使用时机:
出现在switch条件语句中,作用是终止case并跳出switch
出现在循环语句中,作用是跳出当前循环语句
出现在嵌套循环中,跳出最近的内层循环语句
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注意:continue并没有使整个循环终止,而break会跳出循环
作用:可以无条件跳转语句
语法:goto 标记
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记位置
概述:存放相同类型的数据元素的集合
特点1: 数组中的每个数据元素都是相同的数据类型
特点2: 数组是由连续的内存位置组成的
一维数组的定义方式
数据类型 数组名[数组长度];
数据类型 数组名[数组长度]={值1,值2 ...}
数据类型 数组名[]={值1,值2...}
总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名
总结2:数组中下标是从0开始索引
一维数组名称用途
1.可以统计整个数组所占内存大小 sizeof(数组名)
每个元素所占内存大小 sizeof(数组名[下标])
数组中元素个数sizeof(数组名)/sizeof(数组名[下标])
2.可以获取数组在内存中的首地址cout<<(int)数组名<
数组中第i个元素地址(int)&arr[i]<
注意数组名是一个常量,不可以进行赋值操作
int main() {
/*五只小猪称体重
* 在一个数组中记录了五只小猪的体重
* 打印并输出最重的小猪的体重
*/
int weight[5];
int i = 0;
int max = 0;
while (i < 5) {
cout << "请输入体重" << endl;
cin >> weight[i];
i++;
}
for (int j = 0; j < 5; j++) {
if (weight[j] > max) {
max = weight[j];
}
}
cout << "最重的体重为:" <<max<< endl;
system("pause");
return 0;
}
1.比较相邻的元素。如果第一个比第二个大,就交换。
2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
3.重复以上的步骤,每次比较次数-1,直到不需要比较
排序总轮数 = 元素个数-1;
每轮对比次数 = 元素个数-排序轮数-1;
int main() {
//利用冒泡排序实现升序排序
int arr[9] = { 4,2,8,0,5,7,1,3,9 };
cout << "排序前" << endl;
for (int i = 0; i < 9; i++) {
cout << arr[i] << " ";
}
cout << endl;
//开始冒泡排序
//总共排序轮数为 元素个数 - 1
for (int i = 0; i < 9 - 1; i++) {
//内层循环对比 次数 = 元素个数-当前轮数-1
for (int j = 0; j < 9 - i - 1; j++) {
//如果第一个数字,比第二个数字大,交换两个数字
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//排序后结果
cout <<"排序后" << endl;
for (int i = 0; i < 9; i++) {
cout << arr[i] << " ";
}
cout << endl;
system("pause");
return 0;