已知一个矩阵,存储在一个二维数组中。将矩阵中和值为最大的那一行
元素与首行对换。
#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;
}