C++学习心得第一期 分支 循环 数组
前言
第二天学习心得
一、分支结构
1、三目运算符
通过三目运算符实现简单的判断
#include<iostream>
using namespace std;
int main()
{
int a = 0;
int b = 9;
int c = 10;
a= b > c ? b : c;
cout << a << endl;
//C++中三目运算符返回的是变量,可以继续赋值
(a > b ? a : b) = 100;
cout << a << endl;
system("pause");
return 0;
}
2、循环练习
提示用户输入一个高考考试分数,根据分数做如下判断
分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上本科;
在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大。
#include<iostream>
using namespace std;
int main()
{
int score = 0;
cout << "请输入你的分数" << endl;
cin >> score;
if (score > 600)
{
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;
}
3、Switch-Case 练习
注意1:switch语句中表达式类型只能是整型或者字符型‘注意2:case里如果没有break,那么程序会一直向下执行
总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间
#include<iostream>
using namespace std;
int main()
{
int score = 0;
cout << "请输入你的评分" << endl;
cin >> score;
switch (score)
{
case 10:
case 9:
cout << "经典" << endl;
break;
case 8:
cout << "非常好" << endl;
break;
case 7:
case 6:
cout << "一般" << endl;
break;
default:
cout << "烂片" << endl;
break;
}
system("pause");
return 0;
}
二、循环练习
1.猜数字(while)
系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
//产生随机种子
srand((unsigned int)time(NULL));
//系统生成随机数
int num = rand() % 100 + 1;
while (1)
{
//玩家进行猜测
cout <<"请进行猜测" << endl;
int val = 0;
cin >> val;
//判断玩家的猜测
if (num == val)
{
cout << "猜对了"<< endl;
//猜对 退出游戏
break;
}
//猜错 提示猜错或者猜对重新返回第二步
else
{
if (num < val)
{
cout <<"猜大了" << endl;
}
else
{
cout <<"猜小了" << endl;
}
}
}
system("pause");
return 0;
}
2.水仙花数(do while)
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
//设置循环的范围是所有的3位数
//使每个位置上的数字立方和是数字本身
int num = 100;
do
{
//获取个位 十位 百位
int ge = num % 10;
int shi = (num / 10) % 10;
int bai = num / 100;
if (ge*ge*ge+bai*bai*bai+shi*shi*shi==num)
{
cout << num<< endl;
}
num++;
} while (num<1000);
system("pause");
return 0;
}
3.敲桌子(for)
从1开始数到数字100, 如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
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;
}
4,乘法口诀(双重for)
利用嵌套循环,实现九九乘法表
#include<iostream>
using namespace std;
int main()
{
//输出乘法口诀 双重for 循环
for (int r = 1;r<=9;r++)
{
for (int c=1;c<r+1;c++)
{
cout << c << "*" << r << "=" << c*r<< "\t";
}
cout << endl;
}
system("pause");
return 0;
}
三、数组联系
1.一维数组名应用
可以统计整个数组在内存中的长度
可以获取数组在内存中的首地址
直接打印数组名,可以查看数组所占内存的首地址
对数组名进行sizeof,可以获取整个数组占内存空间的大小
#include<iostream>
using namespace std;
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
cout << "数组所占的内存空间" << sizeof(arr) << endl;
cout <<"每个元素所占的内存空间" << sizeof(arr[0])<<endl;
cout << "数组元素个数" <<sizeof(arr)/sizeof(arr[0]) << endl;
cout <<"数组首地址为" << (int)arr<< endl;
cout <<"数组首元素地址"<<(int)&arr[0] << endl;
cout << "数组第二个元素的地址"<<(int)&arr[1] << endl;
system("pause");
return 0;
}
2.冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
重复以上的步骤,每次比较次数-1,直到不需要比较
#include<iostream>
using namespace std;
int main()
{
int arr[9] = { 5, 8, 2, 4, 1, 9, 7, 3, 6};
for (int i = 0;i<9-1;i++)
{
for (int j = 0;j<9-1-i;j++)
{
if (arr[j]>arr[j + 1])
{
int temp=0;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0;i<9;i++)
{
cout <<arr[i] << endl;
}
system("pause");
return 0;
}
3.二维数组名的应用
查看二维数组所占内存空间
获取二维数组首地址
二维数组名就是这个数组的首地址
对二维数组名进行sizeof时,可以获取整个二维数组占用的内存空间大小
#include<iostream>
using namespace std;
int main()
{
int arr[2][3]=
{
{1,2,3},
{4,5,6}
};
cout <<"二维数组的大小"<< sizeof(arr) << endl;
cout << "二维数组一行的大小" << sizeof(arr[0])<< endl;
cout << "二维数组元素的大小" <<sizeof(arr[0][0]) << endl;
cout <<"二维数组的行数" <<sizeof(arr)/sizeof(arr[0]) << endl;
cout <<"二维数组的列数" <<sizeof(arr[0])/sizeof(arr[0][0]) << endl;
cout <<"二维数组的首地址" <<(int)arr << endl;
cout << "二维数组第一行的地址" <<(int)arr[0] << endl;
cout << "二维数组第二行的地址" <<(int)arr[1] << endl;
cout <<"二维数组第一个元素的地址" <<(int)&arr[0][0] << endl;
cout <<"二维数组第二个元素的地址" <<(int)&arr[0][1] << endl;
system("pause");
return 0;
}