大学C语言课后题---生成二维随机数组,逐行查找最大值

本文介绍了如何使用C++编写程序,包括gen_array函数生成随机数矩阵,print_array函数输出矩阵,以及find_array_max函数查找并输出矩阵中最大值及其位置。在查找过程中,代码还实现了动态更新显示和暂停效果。
摘要由CSDN通过智能技术生成

        拿到题目我们可以分析题目具体要求。

输入

输出

随机数排列与最大值

输出案例

45      50      56      94      25
80      59      76      25      38
10      52      33      97      25
86      14      23      97      97
93      41      63      62      32
4行5列97                查找中:4行5列97

题目要求使用以下几个函数实现要求:

    gen_array(matrix,5,1,99);
	print_array(matrix,5);
	find_array_max(matrix,5,max);

所以,我们要在main函数中调用它们,如下:

int main()
{
	int max[3]; int matrix[5][5] = {}; 
	gen_array(matrix,5,1,99);
	print_array(matrix,5);
	find_array_max(matrix,5,max);
	return 0;
}

下一步,我们就需要写每一个函数所实现的功能:

第一步,生成一个随机的rows*5的二维矩阵数组,这里我们可以声明一个5*5的数组来储存随机函数种子生成的数字,而随机数又可以通过srand()函数来生成,这里的种子我们使用系统时间函数time()函数,以上两个函数分别包含在<stdlib.h>和<time.h>两个头文件中,所以我们需要调用两个头文件。具体实现如下:

#include <stdlib.h>
#include <time.h>
void gen_array(int array[][5],int rows, int min, int max)
{
	srand((unsigned)time(NULL));
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			array[i][j] = (int)rand() % max + min;
		}
	}
}

下一步,当我们拿到随机数二维矩阵之后,我们需要对它进行输出,这里直接简单遍历一遍就好。实现如下:

void print_array(int matrix[][5], int rows)
{
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			printf("%2d\t", matrix[i][j]);
		}
		printf("\n");
	}
}

下一步,我们需要找出矩阵中的最大数,每一行遍历一次,找到每一行的最大数,进行比较,最后,把最大数的值,所在行,所在列分别储存在result[3]数组中,然后按照题目要求格式输出。实现如下:

void find_array_max(int array[][5], int rows, int result[3])
{
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			if (tmp > array[i][j])
			{
			}
			else {
				tmp = array[i][j];
				result[0] = tmp; result[1] = i + 1; result[2] = j + 1;
			}
			system("cls");
			print_array(array,5);
			printf("最大值:%d行%d列%d\t\t查找中:%d行%d列%d", result[1], result[2], result[0], result[1], result[2], result[0]);
			Sleep(tmp);
			
		}
	}
	system("cls");
	print_array(array,5);
	printf("最大值:%d行%d列%d\t\t已完成:共计25个", result[1], result[2], result[0]);
}

这里为了实现查找过程中的停顿和屏幕的刷新,我们使用了Sleep()和system("cls")函数,当然,也可以不使用。所以我们要包含头文件<Windows.h>。

总体代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
int tmp = 0;
void gen_array(int array[][5],int rows, int min, int max)
{
	srand((unsigned)time(NULL));
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			array[i][j] = (int)rand() % max + min;
		}
	}
}
void print_array(int matrix[][5], int rows)
{
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			printf("%2d\t", matrix[i][j]);
		}
		printf("\n");
	}
}
void find_array_max(int array[][5], int rows, int result[3])
{
	for (int i = 0; i < rows; ++i)
	{
		for (int j = 0; j <= 4; ++j)
		{
			if (tmp > array[i][j])
			{
			}
			else {
				tmp = array[i][j];
				result[0] = tmp; result[1] = i + 1; result[2] = j + 1;
			}
			system("cls");
			print_array(array,5);
			printf("最大值:%d行%d列%d\t\t查找中:%d行%d列%d", result[1], result[2], result[0], result[1], result[2], result[0]);
			Sleep(tmp);
			
		}
	}
	system("cls");
	print_array(array,5);
	printf("最大值:%d行%d列%d\t\t已完成:共计25个", result[1], result[2], result[0]);
}

int main()
{
	int max[3]; int matrix[5][5] = {}; 
	gen_array(matrix,5,1,99);
	print_array(matrix,5);
	find_array_max(matrix,5,max);
	return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一种聪明的缘猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值