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

(1)定义一整型数组intnum[3][4],任意给定初始值,分别使用数组指针和地址的方法,求出其中最大的元素。(2)用指针数组的方法,实现对给定六个地市名称的升序排序(... (1)定义一整型数组 int num[3][4],任意给定初始值,分别使用数组指针和地址的方法,求出其中最大的元素。
(2)用指针数组的方法,实现对给定六个地市名称的升序排序(使用常字符串,选择法排序)。
(3)用动态分配内存的方法,读入多个整数,输出其中出现次数最多的数。
(如输入2,2,3,5,5,5,1则输出5)
(4)编写一个程序,使用指针的方式访问数组,读入10个数,输出其中不同的数。(提示:读入一个数,如果未出现过,将其存入数组,如果已在数组中,则忽略之。输入完毕后,数组中保存的就是不同的数。)
展开
 我来答
匿名用户
推荐于2016-11-29
展开全部
#include <iostream>
#include <cstring>//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;
}

 执行结果:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式