1、数组
实例,五只小猪
int arr[5] = { 200,300,400,350,500 };
int max = 0;
for (int i = 0; i < 5; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
cout << "最重小猪重量" << max << endl;
//1.创建数组
int arr[5] = { 1,2,3,4,5 };
cout << "逆置钱数组:" << endl;
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
//2、实现逆置
//记录开始下标,记录结束小标,互换
int start = 0;
int end = sizeof(arr) / sizeof(arr[0]) - 1;
//要注意写在外边,不是while内部,否则下面无法判断。
while (start < end)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
cout << endl;
cout << "逆置后数组:" << endl;
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
2、冒泡排序
//1.创建数组
int arr[9] = { 1,8,9,3,2,4,6,5,7 };
cout << "排序前:" << endl;
for (int i = 0; i < 9; i++)
{
cout << arr[i] << " ";
}
cout << endl;
//2、排序
for (int i = 0; i < 9 - 1; i++)
{
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] << " ";
}
注意事项,变量名要正确,逻辑上从内到外,现行确定内部,如交换
当arr 中j位的数大于j+1就交换二者、
具体实现,为创建一个空值复制j位的数字,然后让j等于j+1(注意逻辑顺序,前者被后者替换)此时j和j+1相等,然后令j+1等于temp,就相当于二者交换了位置
然后持续交换
外循环是次数循环,要比较九次,这里九次可以由sizeeof(arr)/ sizeof(arr[0])-1得出、减一是因为从零开始,
第二层循环是因为每一次循环都要挑出交换一组的,为避免重复运算,减去i,外层循环次数,来缩短计算步骤。
3、二维数组
二维数
-
数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };
-
数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
组就是在一维数组上,多加一个维度。
最常用的两种
int arr[2][4] =
{
{1,2,3,7},
{4,5,6,8} //两行三列
};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 4; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;//打印完一行换行
}
int arr[2][4] = { 1,2,3,7,4,5,6,8 }; //两行三列};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 4; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;//打印完一行换行
}
第一种简单明了,第二种快捷便利
二维数组实例
#include<iostream>
#include<string>
using namespace std;
int main()
{
//创建二维数组
int scores_chengji[3][3] = //成绩的二维数组
{
{100,100,100},
{90,50,100},
{60,70,85}
};
string name[3] = { "张三","李四","王五" }; //美观使用的个人姓名数组
for (int i = 0; i < 3; i++) //循环打印每行的数组内容
{
cout <<name[i] << "每科成绩:" << endl;
int sum_chengji = 0; //引入一个成绩的总和变量
for (int j = 0; j < 3; j++) //循环打印每列的数组内容
{
sum_chengji += scores_chengji[i][j]; //计算总和
cout << scores_chengji[i][j] << " "; //打印每行每列数组内容
}
cout << endl;
cout << "总分为:" << sum_chengji << endl; // 打印总分
}
system("pause");
return 0;
}
二维数组并不限制多少行多少列,但要先进行优秀的规划,以防错误,其中最常用的是本代码段的方法,简洁明了,易懂。
嵌套for循环打印要明知逻辑顺序与关系,那个在外边,先打印行,那个在里面,先打印列,还有cout的输出,要谨记,清楚顺序。
重点:函数
作用:将一段经常使用的代码封装起来,减少重复代码
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
在我理解中,这一个功能组件,就像一个流水线上的加热仓,经过的数据,都会按照既定目的进行处理,相乘,相加或者别的。这样一个个重复使用的功能仓被单独建立,并独立与主函数main之外,就可以避免主函数中反复操作。
1、返回值类型 int/string/float
2、函数名 中文/english
3、参数表列 (int num1,int num2) 以整型数据为例
4、函数体语句 int sum= num1+ num2 以整型数据为例
5、return 表达式 return sum
实例
#include<iostream>
#include<string>
using namespace std;
int sum(int num1, int num2) //编写加法函数 返回值类型(int) 函数名(sum) 参数表列 (int num1,int num2)
{
int sum_jieguo = num1 + num2; //内部函数
return sum_jieguo; //返回值
}
int main()
{
cout << "请输入需要数据1:" << endl;
int num_1 = 0;
cin >> num_1; //引导输入
cout << "请输入需要数据2:" << endl;
int num_2 = 0;
cin >> num_2;
int sum_jieguo=sum(num_1, num_2); //将数据引用到sum上,并用sum_jieguo体现
cout << "结果为: " << sum_jieguo << endl;
system("pause");
return 0;
}
值传递——重点
-
所谓值传递,就是函数调用时实参将数值(原参数)传入给形参(临时),对原参数不会改变,
-
值传递时,==如果形参发生,并不会影响实参=
#include<iostream>
#include<string>
using namespace std;
void swap(int num1, int num2)
{
cout << "交换前:" << endl;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
int temp = num1; //创建临时空间接受数据
num1 = num2;
num2 = temp;
cout << "交换后:" << endl;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << endl;
//return ; 当函数声明时候,不需要返回值,可以不写return
}
int main() {
int a = 10;
int b = 20;
swap(a, b);
cout << "mian中的 a = " << a << endl;
cout << "mian中的 b = " << b << endl;
cout << "请对比转换前是否一致? " << endl;
system("pause");
return 0;
}
虽然值传递看起来没有太大用处,但是其意义重大,这种不改变原值的操作可以运用到很多地方,甚至为了避免改变原值,使用count来锁死原值,例如游戏中的关键数值、
q函数常见样式(详见代码段)
#include<iostream>
#include<string>
using namespace std;
void test01()//test01是无参无返
{
cout << "test01运行成功" << endl;
}
void test02(int a)//test02是有参无返
{
cout << "test02运行成功,其中引用a= "<<a << endl;
}
int test03()//无参有返,注意这里返回的参数试int整数类型,所以用int
{
cout << "this is test03 " << endl;
return 100;
}
int test04(int a) //有参有返
{
cout << "this is test04 " <<a<< endl;
return a;
}
int test04_01(int a, int b)//有参有返二类,用于计算或处理数据
{
cout << "this is test04 " << endl;
int sum = a + b;
return sum;
}
int main() {
test01(); //什么都没有,仅仅用来打印
test02(100); //有个数字100
int num1 = test03();//用于接收test03的数据,必需先写上,不然返回值没地方去去,会报错。
cout << "test03的返回值:" << num1 << endl; //一旦触发,主动返回,例如游戏中掉落道具
int num2 = test04(666);
cout << "test04的返回值:" << num2 << endl;
int num3 = test04_01(1024, 88);
cout << "test04_01的返回值(第二种用法,计算1024加88):" << num3 << endl;
system("pause");
return 0;
}
请注意无参有返系列,在书写中,需要先书写接受地,否则报错
而有参有返系列,用途较广,可以返回原值,也可以进行数值的操作与处理
在游戏上的用途:
1,无参无返,可以用于执行某些简单的打印操作,如欢迎进入游戏~
2,有参无返,进行运算并处理,但是可以不返回
3、无参有返,触发就执行某些操作,例如道具掉落等
4、有参有返,两种用法,既可以返回原值,并进行反馈,表示已接收数据,并返回,也可以进行数据的处理后再返回。在游戏多种多样的用法。
被父母pua去了,今天学习到此结束