2021-01-23クロックインしてC ++を学習する3日目


1つは、配列です

いわゆる配列は、同じタイプのデータ要素が格納されているコレクションです。

特徴:

  • 配列内の各データ要素は同じデータ型

  • アレイはで構成されています連続したメモリの場所からなる

  • 合格できます添字配列内の要素にアクセスするには、配列要素の添え字は0から始まります

1.1次元配列

1.数据类型  数组名[ 数组长度 ]2.数据类型  数组名[ 数组长度 ]={
    
    1,值2...}3.数据类型  数组名[  ] = {
    
    1,值2...}

1次元配列名の目的:

  • メモリ内の配列全体の長さをカウントします:sizeof(配列名)

  • メモリ内の配列の最初のアドレスを取得します。cout<< array name << endl;

例:配列の長さと配列の最初のアドレスを表示する

#include<iostream>
using namespace std;

int main()
{
    
    
	int arr[] = {
    
     1,2,3,4,5,6 };
	cout << "整个数组所占内存空间:" << sizeof(arr) << endl;
	cout << "每个元素占用内存空间: " << sizeof(arr[0]) << endl;
	cout << "数组中元素个数:" << sizeof(arr) / sizeof(arr[0]) << endl;
	cout << "数组在内存中的首地址:" << arr << endl;
	cout << "数组中第一个元素地址:" << &arr[0] << endl;
	cout << "数组中第二个元素地址:" << &arr[1] << endl;
	



	system("pause");
	return 0;

}

出力結果
ここに画像の説明を挿入

バブルソート

配列内の要素を並べ替えるために最も一般的に使用される並べ替えアルゴリズム
練習:

  1. 隣接する要素を比較します。最初の要素が2番目の要素よりも大きい場合は、2つ交換します。

  2. 隣接する要素の各ペアに対して同じ作業を行い、実行後の最初の最大値を見つけます

  3. 比較が不要になるまで、上記の手順を繰り返します。比較の数は毎回-1です。

ソートラウンドの総数=要素の数-1
各ラウンド比較の数=要素の数-ソートラウンドの数-1

ケース分析
一連のデータ{4,2,8,0,5,7,1,3,9}が与えられた場合、バブルソート方法に従って昇順でソートします。
ここに画像の説明を挿入

#include<iostream>
using namespace std;

//利用冒泡排序进行升序排列
int main()
{
    
    
	int arr[] = {
    
     4,2,8,0,5,7,1,3,9 }, count, i, j, num;
	count = sizeof(arr) / sizeof(arr[0]);
	cout << "给出一组数:" << arr[0];
	for (i = 1; i < count; i++)
	{
    
    
		cout << ","<< arr[i];
	}
	cout << "\n对这组数进行升序排列" << endl;
	
	for (i = 0; i < count-1; i++)
	{
    
    
		for (j = 0; j < count-i-1; j++)
		{
    
    
			if (arr[j] > arr[j + 1])
			{
    
    
				num = arr[j+1];
				arr[j+1] = arr[j];
				arr[j] = num;
			}
		}
	}

	cout << "利用冒泡排序进行升序排列后:" << arr[0];
	for (i = 1; i < count; i++)
	{
    
    
		cout << "," << arr[i];
	}
	cout << "\n";
	system("pause");
	return 0;

}

出力結果
ここに画像の説明を挿入

(2)2次元配列

1.数据类型 数组名[ 行数 ] [ 列数 ]2.数据类型 数组名[ 行数 ] [ 列数 ] = {
    
     {
    
    数据1,数据2}{
    
    数据3,数据4} }3.数据类型 数组名[ 行数 ] [ 列数 ] = {
    
    数据1,数据2,数据3,数据4}4.数据类型 数组名[  ] [ 列数 ] = {
    
    数据1,数据2,数据3,数据4}

2次元配列名の目的:

  • 2次元配列が占めるメモリを表示する

  • 2次元配列の最初のアドレスを取得します

#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 << "二维数组首地址为:" << arr << endl;
	cout << "二维数组第一行首地址为" << arr[0] << endl;
	cout << "二维数组第一个元素首地址为:" << &arr[0][0] << endl;


	system("pause");
	return 0;

}

出力結果
ここに画像の説明を挿入

第二に、機能

頻繁に使用されるコードをカプセル化して、繰り返しのコードを減らします
より大きなプログラムは一般にいくつかのプログラムブロックに分割され、各モジュールは特定の機能を実現します

1.関数の定義:

  1. 戻り値のタイプ

  2. 関数名

  3. パラメータリスト

  4. 関数本体ステートメント

  5. 式を返す

返回值类型  函数名(参数列表)
{
    
    
	函数体语句
		
	return表达式	
}

ここに画像の説明を挿入

2.関数呼び出し

函数名(参数);

関数定義の括弧は仮パラメーターと呼ばれ、関数が呼び出されたときに渡されるパラメーターは実パラメーターと呼ばれます。

#include<iostream>
using namespace std;

//求和
int add(int num1, int num2)
{
    
    
	int sum = num1 + num2;
	return sum;
}
int main()
{
    
    
	int a = 10;
	int b = 20;
	int c = add(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	system("pause");
	return 0;

}

出力結果
ここに画像の説明を挿入

3.価値の移転

いわゆる値転送とは、関数が呼び出されたときに、実際のパラメーターが値を仮パラメーターに渡すことです。

値が渡されたときに、仮パラメーターが発生しても、実際のパラメーターには影響しません。

関数が値を返す必要がない場合は、宣言するときにvoidと書くことができます

#include<iostream>
using namespace std;

//交换两值
void swap(int num1, int num2)
{
    
    
	cout << "交换前:" << num1 << " " << num2 << endl;
	int temp = num1;
	num1 = num2;
	num2 = temp;
	cout << "交换后:" << num1 << " " << num2 << endl;
}

int main()
{
    
    
	int a = 10;
	int b = 20;
	cout << "调用函数前:a = " << a << " b = " << b << endl;
	swap(a, b);
	cout << "调用函数后:a = " << a << " b = " << b << endl;

	system("pause");
	return 0;
}

出力結果
ここに画像の説明を挿入

4.関数の一般的なスタイル

  1. 参加なし、返品不可

  2. 返品なしの参加

  3. 参加せずに戻る

  4. 参加して戻る

#include<iostream>
using namespace std;

//1、无参无返
void test01()
{
    
    
	cout << "this is test01 " << endl;
}

//2、有参无返
void test02(int num)
{
    
    
	cout << "this is test02 X = " << num << endl;
}

//3、无参有返
int test03()
{
    
    
	int flag = 1;
	return flag;
}

//4、有参有返
int test04(int num1, int num2)
{
    
    
	int sum = num1 + num2;
	return sum;
}

int main()
{
    
    
	test01();
	int a = 10;
	test02(a);
	int b = test03();
	cout << "this is test03 b = " << b << endl;
	int c = test04(a, b);
	cout << "this is test04 c = " << c << endl;

	system("pause");
	return 0;

}

出力結果
ここに画像の説明を挿入

5.関数宣言

関数の名前と関数の呼び出し方法をコンパイラーに伝えます。関数の実際の本体は個別に定義できます。

関数は複数回宣言できますが、関数は1回しか定義できません

#include<iostream>
using namespace std;

int add(int num1, int num2);
int main()
{
    
    
	int a = 10;
	int b = 20;
	int c = add(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	system("pause");
	return 0;

}

int add(int num1, int num2)
{
    
    
	int sum = num1 + num2;
	return sum;
}

出力結果
ここに画像の説明を挿入

6.関数のサブファイル書き込み

関数ファイルを作成するには、通常4つの手順があります。

  1. 拡張子が.hのヘッダーファイルを作成します

  2. 接尾辞が.cppのソースファイルを作成します

  3. 関数宣言をヘッダーファイルに書き込みます

  4. 関数の定義をソースファイルに書き込みます

ヘッダーファイル.h

#include<iostream>
using namespace std;

void swap(int a, int b);

Function.cpp

#include"swap.h"

void swap(int a, int b)
{
    
    
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

メインプログラムは.cppを呼び出します

#include"swap.h"

void swap(int a, int b)
{
    
    
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

[注]学習コースは-ダークホースプログラムC ++チュートリアル

おすすめ

転載: blog.csdn.net/qq_42616280/article/details/113029537