C++:一维数组、字符数组、二维数组代码编程

x33g5p2x  于2022-08-17 转载在 其他  
字(3.7k)|赞(0)|评价(0)|浏览(373)

① 一维数组

一维数组的插入

逆序for,把索引位置i后面的元素后移一位;
a[i] = a[i-1];
a[索引i]=2;

#include <iostream>
using namespace std;
int main() {
	//插入数字2 
	int a[10] = {1,3,4,5};
	for(int i=4;i>1;i--){ // 为什么从i=4? 
		a[i] = a[i-1]; //代码什么意思 
	}
	a[1]=2; //为什么这样写?
	 
	for(int i=0;i<5;i++){ //循环意思? 
		cout<<a[i]<<" ";
	}
	return 0;
}

一维数组的删除

将被删除元素后面的所有元素向前移动一位;
删除:a[i] = a[i+1];
顺序for;

#include <iostream>
using namespace std;
int main() {
	//删除 2 
	int a[10] = {1,2,3,4,5};
	for(int i=1;i<4;i++){ // i<4 可以=4? 
		a[i] = a[i+1]; //代码什么意思 
	}
	 
	cout<<"------------------"<<endl; 
	for(int i=0;i<=5;i++){ //循环意思? 
		cout<<a[i]<<" ";
	}
	return 0;
}

数组的简单合并

把数组a与数组b合并为数组C,循环加进去即可。

#include <iostream>
using namespace std;
int main(){
    int a[3] = {35, 72, 96};
    int b[4] = {29, 33, 56, 87};
    int c[7];//将数组a[]和数组b[]合并到数组c[]
    int len=0;
    for(int i=0;i<3;i++){
        c[len]=a[i];
        len++;
    }
    for(int j=0;j<4;j++){
        c[len]=b[j];
        len++;
    }
    for(int i=0;i<len;i++){
    	cout<<c[i]<<" ";
    }
    return 0;
}

有序的合并:把有序数组a与有序数组b合并为有序数组C;循环+判断进行。

#include <iostream>
using namespace std;
int main(){
    int a[3] = {1, 3, 5}; 
    int b[4] = {3, 4, 5, 6};
    int c[10];
    int lena = 0, lenb = 0, lenc = 0;
    // 因为 a, b 数组是有序的,所以最小的元素一定是数组最左边的数字,所以我们只要比较当前 a, b 数组的头,选择小的放入 c 数组即可
    while (lena < 3 && lenb < 4){
        if (a[lena] < b[lenb]){
            c[lenc] = a[lena];
            lena++;
            lenc++;
        } else {
            c[lenc] = b[lenb];
            lenb++;
            lenc++;
        }
    }
    // 接下来考虑一件事,必然有一个数组中的元素先被放完,那另外一个数组中剩下的元素我们只要依次放进 c 数组就可以了
    cout<<"------"<<endl;
    cout<<"a:"<<lena<<" b:"<<lenb<<" c:"<<lenc<<endl;
	cout<<"------"<<endl;
	while (lena < 3){
        c[lenc] = a[lena];
        lena++;
        lenc++;
    }
    while (lenb < 4){
        c[lenc] = b[lenb];
        lenb++;
        lenc++;
    }
    
    // 此时 c 数组中的元素为 {1, 3, 3, 4, 5, 5, 6}
    for(int i=0;i<lenc;i++){
        cout<<c[i]<<" ";
    }
    return 0;
}

② 字符数组

字符串的初始化

#include <iostream>
using namespace std;
int main() {
	char s[] = {"hello"};
//	cin>>s; 
	cout<<s<<endl;
	cout<<s[4];
	return 0;
}

字符数组的查找

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char s[] = {"ohi"};
    char a[1000];
    int ans = 0;
    cout<<"请输入字符串:"; 
    cin >> a; // hihellohi
    int len=strlen(a);
    for(int i=0;i<len-1;i++){//选取开始对比位置
        bool flag = true;
        for(int j=0;j<2;j++){   //从第a[i]个开始对比
            if(a[i+j]!=s[j]){       //发现没有匹配上
                flag = false;       //标记没配对上
                break;              //结束循环
            }
        }
        if(flag == true){
            ans++;
        }
    }
    cout <<"匹配相等有:"<< ans << endl;
    return 0;
}

字符数组的长度

#include <iostream>
using namespace std;
int main() {
    char s[1000];   
    int len = 0;//int整数 
    cin >> s;//s="hello",以'\0'结尾 
    for(int i=0; s[i] != '\0'; i++){//s[0]='h',s[1]='e'
        len++;
    }
    cout << len << endl;//len=5
    return 0;
}

倒序输出

#include <iostream>
#include<string>
using namespace std;
int main() {
    string s; //声明字符串 
    cin >> s;
    for(int i=s.size();i>0;i--){ //变量.size()获取长度 
        cout<<s[i-1]; //输出[i-1]? 
    }
    return 0;
}

③ 二维数组

#include <iostream>
using namespace std;
int main() {
	int a[2][3] = {{33,66,99},{2,4,6}}; 
	cout<<a[0][0]<<" "<<a[1][1]<<endl; // 33,4
	cout<<"----------"<<endl; 
	
	int m[3][5]; //定义不初始化 
	for (int i = 0; i < 3; i++) {		//输入i行 
        for (int j = 0; j < 5; j++) {	//输入j列 
        	cout<<"请输入第"<<i<<"行,第"<<j<<"列:"; 
        	cin>>m[i][j];
        }
	} 
	//输出m[3][5] 3行5列 
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++){
            cout << m[i][j] << " ";
        }
        cout << endl;
	}
	return 0;
}

对二维数组的列进行求和

#include <iostream>
using namespace std;
int main() {
    int matrix[3][5];
    int sum[5]={0, 0, 0, 0, 0};
    for (int i = 0; i < 3; i++) {		//输入i行 
        for (int j = 0; j < 5; j++) {	//输入j列  
        	cin>>matrix[i][j];
            sum[j]+=matrix[i][j];
        }
	}
    for (int j = 0; j < 5; j++) {
        cout<<sum[j]<<" ";
    }
    return 0;
}

对二维数组的行进行求和

#include <iostream>
using namespace std;
int main() {
    for (int i = 0; i < 3; i++) {
        int sum = 0;
        for (int j = 0; j < 5; j++) {
            int temp;
            cin >> temp;  
            sum += temp;
        }
        cout << sum << endl;
    }
    return 0;
}

相关文章