求助!!c语言作业(新了解的

img


8号截止

用srand和rand产生随机数
100以内是指m和n的范围,还是矩阵元素值范围?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    srand(time(NULL));
    int m,n,a[100][100],t,k;
    printf("请输入矩阵行列值:");
    scanf("%d%d",&m,&n);
    while(m<=0 || n<=0)
    {
        printf("行列值必须大于0,请重新输入:");
        scanf("%d%d",&m,&n);
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            a[i][j] = rand()%100+1;
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m-1;j++)
        {
            for(k=0;k<m-1-j;k++)
            {
                if(a[k][i] < a[k+1][i])
                {
                    t = a[k][i];
                    a[k][i] = a[k+1][i];
                    a[k+1][i] = t;
                }
            }
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }

    return 0;
}

供参考:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 101
int main()
{
    int m, n, i, j, k, t, a[N][N];
    srand((unsigned int)time(NULL));
    do {
        scanf("%d%d", &m, &n);
    } while (m <= 0 || n <= 0 || m > 100 || n > 100);
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            a[i][j] = rand() % 100 + 1;
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    printf("按列降序排序:\n");
    for (j = 0; j < n; j++) {
        for (i = 0; i < m - 1; i++) {
            for (k = 0; k < m - 1 - i; k++)
            {
                if (a[k][j] < a[k + 1][j])
                    t = a[k][j], a[k][j] = a[k + 1][j], a[k + 1][j] = t;
            }
        }
    }
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++)
            printf("%4d", a[i][j]);
        printf("\n");
    }
    return 0;
}