C/C++数组基础题目

  题目一

创建一维数组逆序输出10个数

//创建数组逆序输出10个数
int main()
{
	int a;
	int arr[10] = { 0 };
	for (a = 0; a < 10; a++)
	{
		cin >> arr[a];
	}
	for (a = 9; a >= 0; a--)
	{
		cout << arr[a]<<" ";
		
	}
	return 0;
}

91ca2005b35648288d01c7d0acb59442.png

题目二 

从键盘上输入一行数字,按照从大到小输出。

冒泡排序法:对N个数进行N-1次排序,升序中大数下沉,小数上浮,降序则相反。基本思想是:对于一组有n个记录的数据,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换这两个记录,进行一轮比较和交换后,n个数据中的最大记录将位于第n位;然后对前(n-1)个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个为止。

int main()
{
	//首先从键盘输入数组中元素个数
	int n;
	cin >> n;
	//依次存储元素
	int arr[100] = { 0 };
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	//冒泡法排序
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = 0; j < n - 1 - i; j++)
		{
			if (arr[j] < arr[j + 1]) //<改为>则变为升序输出
			{
				int t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
	for (int i = 0; i < n; i++)
	{
		cout << arr[i]<<" ";
	}

}

06f7175d17fa4808992e9e648881eef0.png

题目三

矩阵转置

int main() {

	int a[2][3] = { {1,2,3,} ,{4,5,6} };
	int b[3][2] = { };
	int i, j;
	for (i = 0; i < 2; i++) {
		for (j = 0; j < 3; j++)
			b[j][i] = a[i][j];
	}
	cout << "array b:\n";
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 2; j++)
			cout << b[i][j] << ' ';
		cout << "\n"; //每行输出完后换行
return 0;
	}

改进

不引入另一个数组

int main()
{
      int n,m;
	  cin >> n >> m;
	  int arr[500][500] = { 0 };
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < m; j++)
			{
				cin >> arr[i][j];
			}
		}
	    //到此储存好二维数组的数据
		cout << endl;
		//转置
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				cout << setw(3) << arr[j][i];//用stew()使得输出对齐
                //注意包含头文件  #include<iomanip>
			}
			cout << endl;
		}
}

ba4e05686eec4f5e98e93e448f59988c.png

注意:VS不支持arr中存放变量,只能是常量或者表达式。

eeadf41ea4e342539414a4c9b3bebf51.png

题目四

交换数组

int main()
{
	int arr1[5] = { 1,2,3,4,5 };
	int arr2[5] = { 54,23,4,5,7 };
	
	for (int i = 0; i < 5; i++)
	{
		int change = arr1[i];
		arr1 [i] = arr2[i];
		arr2[i] = change;
	}
	for (int i = 0; i < 5; i++)
	{
		cout << arr1[i]<<" ";
	}
	cout << endl;
	for (int i = 0; i < 5; i++)
	{
		cout << arr2[i]<<" ";
	}
	return 0;
}

ad87c559b16e4bd3acd42b0f48a7140e.png

 错误做法

3c9145ebe2494fa783dbd27fe78af110.png

题目五

有序序列的合并,注意输入时每行数据从小到大输入。

4f9ecb632066432b97acd6e9afa69497.png

int main()
{
	int n ,m;
	cin >> n >> m;
	int arr1[1000] = { 0 };
	int arr2[1000] = { 0 };
	for (int i = 0; i < n; i++)
	{
		cin >> arr1[i];
	}
	for (int j = 0; j <m; j++)
	{
		cin >> arr2[j];
	}
	//到此处 数组数据全部储存好
	cout << endl;
	int i = 0, j = 0;
	while (i < n && j < m)
	{
		if (arr1[i] < arr2[j]) //两个数组数据进行比较
		{
			cout << arr1[i]<<" ";
			i++;
		}
		if (arr2[j] < arr1[i])
		{
			cout << arr2[j]<< " ";
			j++;
		}
	}
	//剩下的全部打印
	//i中的数据全部与j比较完成,j中数据还有剩下的
	//说明j中的数据全部比i大,全部输出
	//反之也如此
	while (i < n)
	{
		cout << arr1[i]<<" ";
		i++;
	}
	while (j < m)
	{
		cout << arr2[j]<<" ";
		j++;
	}
	return 0;
}


 7e43a8e058c14d1ba6d7422e08b3b0c0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zik----

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值