拿到题目我们可以分析题目具体要求。
输入
无
输出
随机数排列与最大值
输出案例
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;
}