20191211求取二维数组中的最大值和次大值

1、直接用数值列举法

/*
要求:从女兵方针中挑出最高个的和次高个的,并打印出来
*/
#include<Windows.h>
#include<iostream>
using namespace std;

int main() {
	int girls[][4] = {
		{179,171,165,156},
		{162,157,168,166},
		{158,161,166,176},
		{171,170,173,166},
		{177,165,174,160},
	};
	int girl000 = 0;//最高女生
    int girl001=0; //次高女生
	for (int i = 0; i < 20; i++) {
		if (girls[i / 4][i % 4] >= girl000)
			girl000 = girls[i / 4][i % 4];
	}
	for (int i = 0; i < 20; i++) {
		if (girls[i / 4][i % 4] >= girl001 && girls[i / 4][i % 4] <girl000)
			girl001 = girls[i / 4][i % 4];
	}
	printf_s("最高的女生:%d,次高的女生: %d\n", girl000, girl001);

	system("pause");
	return 0;
}

2、采用指针数组的方法

/*
要求:从女兵方针中挑出最高个的和次高个的,并打印出来
*/
#include<Windows.h>
#include<iostream>
using namespace std;

int main() {
	int girls[][4] = {
		{179,171,165,156},
		{162,157,168,166},
		{158,161,166,176},
		{171,170,173,166},
		{177,165,174,160},
	};
	/*第一种方法,采用直接列举法
	int girl000 = 0;
    int girl001=0;
	for (int i = 0; i < 20; i++) {
		if (girls[i / 4][i % 4] >= girl000)
			girl000 = girls[i / 4][i % 4];
	}
	for (int i = 0; i < 20; i++) {
		if (girls[i / 4][i % 4] >= girl001 && girls[i / 4][i % 4] <girl000)
			girl001 = girls[i / 4][i % 4];
	}
	printf_s("最高的女生:%d,次高的女生: %d\n", girl000, girl001);
	*/
	//第二种方法,指针数组法
	int* qishou[2];
	if (girls[0][0] <= girls[0][1]) {
		qishou[0] = &girls[0][1];
		qishou[1] = &girls[0][0];
	}
	else {qishou[0] = &girls[0][0];
	      qishou[1] = &girls[0][1];
	}
	for (int i = 2; i < 20; i++) {
		if (girls[i / 4][i % 4] >= * qishou[0]) {
			*qishou[1] = *qishou[0];
			*qishou[0] = girls[i / 4][i % 4];
		}
		else if (girls[i / 4][i % 4] < *qishou[0] && girls[i / 4][i % 4] >=* qishou[1]) {
			*qishou[1] = girls[i / 4][i % 4];
		}
		else {
			continue;
		}
	}
	printf_s("最高的女兵:%d,次高的女兵:%d\n", *qishou[0], *qishou[1]);
	
	system("pause");
	return 0;
}
发布了51 篇原创文章 · 获赞 0 · 访问量 550

猜你喜欢

转载自blog.csdn.net/weixin_40071289/article/details/103499986