第二次上机作业

已知一个矩阵,存储在一个二维数组中。将矩阵中和值为最大的那一行
元素与首行对换。

#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
	int c;
	c = a;
	a = b;
	b = c;
}
int main() {
	
	int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
	int max = 0, t = 0;
	for (int i = 0; i < 3; i++) {
		int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
		int sum = 0;
		for (int j = 0; j < 3; j++) {
			sum += arr[i][j];
		}
		if (sum > max) {
			max = sum;
			t = i;
		}
		
	}
	for (int i = 0; i < 3; i++)
		swap(arr[t][i], arr[0][i]);
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++)
			cout << arr[i][j] << " ";
		cout << endl;
	}


}

已知一个方阵,存储在一个二维数组中。用指针访问数组元素的方法,计算方阵中上三角所有元素的和、下三角所有元素的和,以及主对角线上的所有元素和。

#include <iostream>
using namespace std;
int main() {
	int sum = 0,sum1=0,sum2=0;
	int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			if (i <= j) {
				sum += *(arr[i] + j);				

			}
		}
	}
	cout << sum << endl;

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			if (i >= j) {
				sum1 += *(arr[i] + j);

			}
		}
	}
	cout << sum1 << endl;

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			if (i = j) {
				sum2 += *(arr[i] + j);

			}
		}
	}
	cout << sum2 << endl;

	return 0;
}

重新定义回文为:虑去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都相同的词或短语。如“Madam,I’m adam”和“Golf,No Sir, prefer prison flog!”。改写上面程序,用string来代替字符数组来完成相同操作。

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s;
	int is_palindrome = 1;
	cout << "请输入字符串:" << endl;
	cin >> s;
	int a = s.length();
	getline(cin, s);

	for (int i = 0; i <= a / 2; i++)
    {
		if (s[i] >= 'A' && s[i] <= 'Z') {
			s[i] += 32;
		}
		if (i != a - i - 1) {
			is_palindrome = 0;
			break;
		}
	}
	if (is_palindrome = 1) {
		cout << "true "<< endl;
	}
	else {
		cout << "false" << endl;
	}

	return 0;
}

约瑟夫问题:n 个人围成一圈,从 1 开始顺序编号;游戏开始,首先生成一个 1-n 区间内的随机数,从第一个人开始由 1 到 m 循环报数,报到 m 的人``退出圈外,问最后留下的那个人原来的序号。

#include<iostream>
using namespace std;
int main() {
	int n, m;
	while ((cin >> n >> m) && !(n == 0 && m == 0))
	{
		for (int i = 0; i < n; i++)
			a[i] = i + 1;
		int k = n;
		int j = 0;
		while (k > 1)
		{
			for (int i = 0; i < n; i++)
			{
				if (a[i] == 0)
					continue;
				else
					j++;
				if (j == m)
				{
					a[i] = 0; j = 0; k--;

				}
			}

		}
		for (int i = 0; i < n; i++)
		{
			if (a[i] != 0)
				cout << a[i] << endl;

		}

	}
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值