求大神用c++帮忙做一下这几道题

2025-03-22 18:03:20
推荐回答(1个)
回答1:

#include 
#include //strcmp
using namespace std;

//第(1)题
void q1()
{
int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int(*p)[4];
p = a;

int num[3][4] = {
18, 19, 20, 21,
14, 15, 16, 17,
10, 11, 12, 13
};
//指针数组
int(*p1)[4] = num;
int max1 = p1[0][0];
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 4; ++j)
if (p1[i][j] > max1)
max1 = p1[i][j];
cout << "max1:" << max1 << endl;

//地址法
int *p2 = num[0];
int max2 = p2[0];
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 4; ++j)
if (p2[i * 3 + j] > max2)
max2 = p2[i * 3 + j];
cout << "max2:" << max2 << endl;

}

//第(2)题
void q2()
{
char *p[6] = {
"New York", "Canberra", "Los Angeles",
"Beijing", "Berlin", "London"
};
//输出
cout << "待排序城市:" << endl;
for (int i = 0; i != 6; ++i)
{
cout << p[i] << " ";
}
cout << endl;

for (int i = 0; i < 5; ++i)
{
int k = i;
for (int j = k; j < 6;++j)
if (strcmp(p[k], p[j]) > 0)
k = j;
if (k != i)
{
char *temp = p[k];
p[k] = p[i];
p[i] = temp;
}
}
//输出
cout << "排序结果:" << endl;
for (int i = 0; i != 6; ++i)
{
cout << p[i] << " ";
}
cout << endl;

}

//第(3)题
void q3()
{
int len = 100;
int *cnt = new int[len];
for (int i = 0; i != len; ++i){
cnt[i] = 0;
}

int val = 0;
cout << "输入数字,以-1结束:" << endl;
while (true)
{
cin >> val;
if (val == -1)
break;
if (val < len){
++cnt[val];
}
else{
int len2 = val + 1;
int *cnt2 = new int[len2];
for (int i = 0; i < len; ++i)
cnt2[i] = cnt[i];
for (int i = len; i != len2; ++i){
cnt2[i] = 0;
}

len = len2;
delete cnt;
cnt = cnt2;
++cnt[val];
}
}
int max = cnt[0];
int idx = 0;
for (int i = 0; i < len;++i)
if (max < cnt[i]){
max = cnt[i];
idx = i;
}
cout << "结果:" << idx << endl;
}

//第(4)题
void q4()
{
int arr[10] = { 0 };
int hasNum = 0;
int val = 0;
while (hasNum != 10)
{
cin >> val;
int i = 0;
for (;i != hasNum;++i)
if (val == arr[i])
break;
if (i == hasNum)
{
arr[hasNum++] = val;
}
}
cout << "结果:" << endl;
for (size_t i = 0; i != 10; ++i)
{
cout << arr[i] << " ";
}
cout << endl;

}

int main()
{
cout << "第(1)题:" << endl;
q1();
cout << "第(2)题:" << endl;
q2();
cout << "第(3)题:" << endl;
q3();
cout << "第(4)题:" << endl;
q4();

system("pause");
return 0;
}

 执行结果: