笔记复习
1.数组
数据是一个集合,里面存放了相同类型的元素
定义方法有三种:
a.数据类型 数组名[数组长度];
arr[元素位置]=值;
b.数据类型 数组名[数组长度]={值1,值2...};
c.数据类型 数组名[]={值1,值2...}
示例:
//第一种
#include<iostream>
using namespace std;
int main() {
int arr[5];//说明数组的元素个数是五个
arr[0]=10;
cout << arr[0] << endl;//第一种
return 0;
}
//------------
//第二种
#include<iostream>
using namespace std;
int main() {
int arr2[5] = { 10,20,30,40,50 };
//cout << arr2[0] << endl;这样操作想要打印出数组中所有的元素个数很麻烦,所以可以考虑用循环的方式
int i = 0;
while (i <= 4) {
cout << arr2[i] << endl;
i++;
}
return 0;
}
//----------------
//第三种
#include<iostream>
using namespace std;
int main() {
int arr3[] = { 90,80,70,60,50,40,30,20,10 };//初始化数组之后元素的个数已经确定,因此可以不用输入数组长度,系统会自动推算出
return 0;
}
数组的数据类型也可以用string
示例:
#include <string>
#include <iostream>
int main() {
std::string strArray[5]; // 定义一个包含5个std::string对象的数组
// 初始化数组中的元素
strArray[0] = "Hello";
strArray[1] = "World";
strArray[2] = "C++";
strArray[3] = "Programming";
strArray[4] = "Language";
// 访问数组中的元素
for (int i = 0; i < 5; ++i) {
std::cout << strArray[i] << " ";
}
return 0;
}
2.数组的首地址
首地址指的是数组或指针所指向的内存区域的起始位置,即该内存区域的第一个字节的地址
直接调用数组的名字调用的是数组的首地址,该首地址是十六进制的,可以在数组名前加上(int),将十六进制转换为十进制 ps:(int)转换与int()转换效果一样,都是将变量的数据类型变为整型
示例:
#include<iostream>
using namespace std;
int main() {
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//定义一个数组,前面的int应填的是数组类型
cout << "整个数组占用的内存为:" << sizeof(arr) << endl;
cout << "每个元素所占用的内存空间为:" << sizeof(arr[0]) << endl;
int a = sizeof(arr);
int b = sizeof(arr[0]);
cout << "数组中的元素个数为:" << a / b << endl;
//获取首地址
//直接调用数组的名称调用的是首地址
cout << "这个数组的首地址为:" << int(arr) << endl;//首地址出现的形式为十六进制,可以用int,强行转换为十进制
cout << "数组中第一个元素的地址为:" << (int)&arr[0] << endl;//第一个元素的地址即数组的首地址,需要输入取址&才能得到元素的地址
cout << "数组的第二个元素的地址为:" << (int)&arr[1] << endl;
//数组名是一个常量,不可以赋值
system("pause");
return 0;
}
3.找出一个数组中的最大值/最小值
int arr[]={1,5,6,4,9}
int max=0;
for(int i=0;i<5;i++){
if(max<arr[i]){
max=arr[i];
}
}
原理分析:定义max=0存储最大值,写一个for循环,在for循环中按顺序比较数组中的每个元素与max的大小,如果该元素比max大,则赋值给max,循环结束后max即为最大值。最小值同理。
4.数组元素的倒置
原理:将数组中的元素互换实现倒置的效果,如下图
代码实现:
分析:以1,9为例,直接使用赋值语法arr[0]=arr[8] , arr[8]=arr[0]会出现两个9,并不会使1和9交换位置,因为在第一个语句中1数组的第0个元素已经从1变为9;那么把这两个语句放在同一行,同时进行呢?很遗憾,c++并不像python一样支持多重赋值操作,因此代码arr[0],arr[8]=arr[8],arr[0]是无法实现的。接下来我们学习使用临时变量的方法:
for (int a = 0; start < end; a++) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
原理分析:这里引入了一个临时变量temp,用于存储arr[start]中的值,再将arr[end]赋值给arr[start],最后将temp的值赋值给arr[end],如此便实现了首尾两个元素的互换,同时start+1,end-1以第二个和倒数第二个元素进行该操作,在循环的一开始更新temp中的值,如此便实现了数组中元素的倒置
5.switch语句
当程序需要根据用户输入的数字不同而有3种以上的处理和输出时,可以考虑用switch语句
语法及示例:
/*语法:
int a=0;
cin>>a;
switch(a){
case 1:
执行语句;
break;
case 2:
执行语句;
break;
......
default:(当上面的case都没有执行时会执行这里的代码)
执行语句;
break;
}
*/
//-------------------------------------------------------------------------------
//案例
#include<iostream>
using namespace std;
int main()
{
cout << "请给电影进行打分" << endl;
int score = 0;
cin >> score;
cout << "您打的分数为:" << score << endl;
switch (score)
{
case 10:
cout << "您认为这是一部经典电影" << endl;
break;
case 9:
cout << "您认为这是一部经典电影" << endl;
break;
case 8:
cout << "您认为这是一部非常好的电影" << endl;
break;
case 7:
cout << "您认为这是一部非常好的电影" << endl;
break;
case 6:
cout << "您认为这是一部一般的电影" << endl;
break;
case 5:
cout << "您认为这是一部一般的电影" << endl;
break;
default:
cout << "您认为这是一部烂片" << endl;
break;
}
system("pause");
return 0;
}
注意事项:
1.case与数字之间必须用空格隔开,否则编译器无法将case识别出来。
2.每一个case的执行语句中都必须要有break,否则当程序执行该case时,会继续执行下一个case,直到遇到break或者switch语句结束。
6.continue语句
在循环语句中,用于跳过本次循环中余下的语句,继续执行下一次循环
int main() {
for (int i = 0; i <= 100; i++) {
cout << "鸡";
continue;
cout << "尼太美" << endl;
}
cout << "尼太美" << endl;
return 0;
}
在条件语句中,用于跳出本次条件语句
int main(){
for (int i = 0; i <= 100; i++) {
//如果是奇数输出,偶数不输出
if (i%2==0) {//continue语句可以用于条件语句,如果满足这一条件那么不执行下面的程序
continue;
}
cout << i << endl;
}
return 0;
}
下期预告
冒泡排序
标签:语句,学习,arr,int,元素,---,case,数组,日记 From: https://blog.csdn.net/wlyyywwq/article/details/143743745