产生30个[10,100]之间的随机整数到5行6列的数组中,求其中最大值和最小值,并把最大值元素和右上角元素对调,把最小值元素和左上角元素对调。按行、列格式输出重排前、后的情况。(提示:随机函数rand( )的函数值产生一个0~32767之间的随机数, rand( )和 srand(seed)定义在stdlib.h头文件中。先利用以下两条语句:scanf("%u", &seed); srand(seed); 来初始化rand( )的起始值。seed变量为一个无符号整数,每次运行,键盘任意输入一个值)
这机器人小D ,也是无奈了,,,, 楼主还是先学C语言吧,这题C的一些基本操作都可以解决
我觉得思路可以是这样的:首先对每一行
====>将最大值放到左端,将最小值放到右端;
====>对第一列和最后一列进行值比较,将最大的值放大上面,将最小的值放到下面。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main (){
int i, j, k, min_x = 0, min_y = 0, max_x = 0, max_y = 0, arr[5][6];
srand((unsigned)time(NULL));
//产生随机数
printf("重排前:\n");
for(i = 0; i < 5; i++)
{
for(j = 0; j < 6; j++)
{
arr[i][j] = rand() % 91 + 10;
printf("%3d ", arr[i][j]);
}
printf("\n");
}
for(i = 0; i < 5; i++)
{
for(j = 0; j < 6; j++)
{
if(arr[i][j] > arr[max_x][max_y])
{
max_x = i;
max_y = j;
}
else if(arr[i][j] < arr[min_x][min_y])
{
min_x = i;
min_y = j;
}
}
}
//最大值元素和右上角元素对调
k = arr[max_x][max_y];
arr[max_x][max_y] = arr[0][5];
arr[0][5] = k;
//最小值元素和左上角元素对调
k = arr[min_x][min_y];
arr[min_x][min_y] = arr[0][0];
arr[0][0] = k;
printf("重排后:\n");
for(i = 0; i < 5; i++)
{
for(j = 0; j < 6; j++)
printf("%3d ", arr[i][j]);
printf("\n");
}
}