一道简单的C语言程序设计题

产生30个[10,100]之间的随机整数到5行6列的数组中,求其中最大值和最小值,并把最大值元素和右上角元素对调,把最小值元素和左上角元素对调。按行、列格式输出重排前、后的情况。(提示:随机函数rand( )的函数值产生一个0~32767之间的随机数, rand( )和 srand(seed)定义在stdlib.h头文件中。先利用以下两条语句:scanf("%u", &seed); srand(seed); 来初始化rand( )的起始值。seed变量为一个无符号整数,每次运行,键盘任意输入一个值)

c

3个回答

 #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");
    }
}

图片说明

qq_35021563
qq_35021563 好的,谢谢
大约 4 年之前 回复

这机器人小D ,也是无奈了,,,, 楼主还是先学C语言吧,这题C的一些基本操作都可以解决

qq_35021563
qq_35021563 好像少了一步,就是没有输出最大值和最小值
大约 4 年之前 回复

我觉得思路可以是这样的:首先对每一行
====>将最大值放到左端,将最小值放到右端;
====>对第一列和最后一列进行值比较,将最大的值放大上面,将最小的值放到下面。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐