数组
#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
int main42()
{
//数组
//数组中每个数据元素都是相同的数据类型
//数组由连续内存位置组成的
int arr[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
cout << arr[4] << endl;
int arr2[5] = { 10,20,30,40,50 };
//初始化时,没有赋值的元素变量会自动补为0
for (int i = 0; i < 5; i++)
{
cout << arr2[i] << endl;
}
int arr3[] = { 50,60,70,80,90 };
//定义数组的时候,必须定义初始长度
//一维数组数组名用途
//统计整个数组在内存中的长度
//获取数组在内存中的首地址
cout << sizeof(arr) << endl;
cout << sizeof(arr[0]) << endl;
cout << arr << endl;//数组中的首地址
cout << &arr[0] << endl;//&加数组中的元素,为该元素地址
cout << (int)arr << endl;//将地址的16位进制转换为10进制数
//数组名是常量,代表这个数组的首地址,不可以进行赋值
//五只小猪称体重
int arr4[5] = { 300, 350, 200, 400, 250 };
int max = 0;
for (int i = 0; i < 5; i++)
{
if (max < arr4[i])
{
max = arr4[i];
}
}
cout << max << endl;
//数组元素逆置,即首尾交换
int start = 0;
int end = sizeof(arr) / sizeof(arr[0]) - 1;
int temp;
for (;start < end;)
{
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
for (int a = 0; a < sizeof(arr) / sizeof(arr[0]) ; a++)
{
cout << arr[a] << "\t" << endl;;
}
//冒泡排序
//排序的总轮数等于元素个数减一
//每轮对比的次数等于元素的个数减去排序的轮数减一
int a[] = { 4,2,8,0,5,7,1,3,9 };
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
cout<<a[i];
}
cout << endl;
for (int i = 1; i < sizeof(a) / sizeof(a[0]) ; i++)//排序的总轮数等于元素个数减一
{
for (int j = 0; j < sizeof(a) / sizeof(a[0]) - i ; j++)
{
if(a[j]>a[j+1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
cout << a[i];
}
cout<<endl;
//二维数组定义方式
int A[2][3];
A[0][0] = 1;
A[0][1] = 2;
A[0][2] = 3;
A[1][0] = 4;
A[1][1] = 5;
A[1][2] = 6;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << A[i][j] << endl;
}
}
int B[2][3] =
{
{1,2,3},
{4,5,6}
};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << B[i][j] << "\t";
}
cout << endl;
}
int C[2][3] = { 1,2,3,4,5,6 };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << C[i][j] << "\t";
}
cout << endl;
}
int D[][3]= { 1,2,3,4,5,6 };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << D[i][j] << "\t";
}
cout << endl;
}
//二维数组的数组名称
//查看二维数组所占的内存空间
//查看二维数组的首地址
cout << sizeof(A) << endl;
cout << sizeof(A[0]) << endl;
cout << sizeof(A[0][0]) << endl;
cout << sizeof(A) / sizeof(A[0]) << endl;//列数
cout << sizeof(A[0])/ sizeof(A[0][0]) << endl;//行数
cout << A << endl;
cout << A[0]<< endl;
cout << A[1] << endl;
cout << &A[0][0] << endl;
//考试成绩的统计
string name[3] = { "张三","李四","王五" };
int score[3][3] = { 100,100,100,90,50,100,60,70,80 };
for (int i = 0; i < 3; i++)
{
int sum=0;
for (int j = 0; j < 3; j++)
{
sum = sum + score[i][j];
cout << score[i][j] << "\t";
}
cout << name[i]<<"总分" << sum;
cout << endl;
}
system("pause");//不知道为什么system突然标红,显示system不明确,但不影响程序。加一个头文件<cstdlib>解决问题
return 0;
}
函数
#include<iostream>
using namespace std;
//函数
//将一个经常使用的代码封装起来,减少重复代码
/*
返回值类型 函数名 (参数列表)
{
函数体语句
return表达式
}
*/
//如果函数不需要返回值,声明的时候可以写void
//加法函数
int add(int num1, int num2)
//mun1,mun2没有实际的值,叫做形参
{
int sum = num1 + num2;
return sum;
}
//两个数字进行交换的函数
void swap(int num1, int num2)
{
cout << "交换前" << endl;
cout << num1 << num2 << endl;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "交换后" << endl;
cout << num1 << num2 << endl;
return;//返回值不需要的时候,可以不写return
}
//函数的调用
//函数名(传入参数)
//值传递,函数调用时实参数值传入形参
//如果形参发生改变,并不会影响到实参
/*
函数的常见样式
1.无参无返
2.有参无返
3.无参有返
4.有参有返
*/
//1.无参无返
void test01()
{
cout << "this is test01" << endl;
}
//2.有参无返
void test02(int a)
{
cout << "this is test02 a=" << a << endl;
}
//3.无参有返
int test03()
{
cout << "this is test03" << endl;
return 1000;
}
//4.有参有返
int test04(int a)
{
cout << "this is test04 a=" <<a<< endl;
return a;
}
//函数的声明
//告诉编译器函数的名称以及如何调用函数,函数的主题可以单独定义
//函数可以声明多次,但是函数的定义只能有一次
int max(int a, int b);//提前告诉编译器函数的存在(函数的声明)
//函数份文件的编写
//1.创建.h后缀名的头文件
//2.创建.cpp后缀名的源文件
//3.在头文件中写函数的声明
//4.在源文件中写函数的定义
int main()
{
int a = 99;
int b = 10;
//a,b是实际的参数,叫实参
int c=add(a, b);
cout << c << endl;
swap(a, b);
cout << a<< b<< endl;//形参发生改变,实参不变
test01();
test02(100);
int A = test03();
cout << A << endl;
int num2=test04(10000);//赋予函数返回值
cout << num2 << endl;
cout << max(9999, 999) << endl;
system("pause");
return 0;
}
//比较函数
int max(int a, int b)
{
return a > b ? a : b;
}