C程序将矩阵乘以标量

C program to multiply a matrix by a scalar

我是 C 的初学者,我想编写一个程序,通过用户提供的标量输入来计算随机矩阵。我认为我应该更改 scalar() 的第二部分和整个 print(),或者只是重写 matrix() 以使 int 轻松通过。我的错误在 scalar()for 循环中。我的第一个函数创建、随机化并打印出 4x3 矩阵。我的第二个函数应该从用户那里获取数字并将矩阵乘以它并打印出来。

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

#define ROW 4
#define COLUMN 3

int matrix[ROW][COLUMN];

void creatematrix() {
    unsigned short i, j;
    srand(time(0));
    for (i = 0; i < ROW; i++) {
        for (j = 0; j < COLUMN; j++) {
            matrix[ROW][COLUMN] = rand() % 22 - 11;
            printf("%d Macierz przed pomnozeniem przez skalar: \n",
                   matrix[ROW][COLUMN]);
        }
        printf("\n");
    }
}

void scalar() {
    int scalar, i, j;
    printf("Wprowadz dowolny numer do mnozenia macierzy: ");
    scanf("%d", &scalar);
    for (i = 0; i < ROW; i++) {
        for (j = 0; j < COLUMN; j++) {
            matrix[ROW][COLUMN] = scalar * matrix[ROW][COLUMN];
            printf("%d ", matrix[ROW][COLUMN]);
        }
    }
}

int main() {
    creatematrix();
    scalar();
    return 0;
}

输出:

-2 Macierz przed pomnozeniem przez skalar:
-9 Macierz przed pomnozeniem przez skalar:
-7 Macierz przed pomnozeniem przez skalar:

-2 Macierz przed pomnozeniem przez skalar:
-6 Macierz przed pomnozeniem przez skalar:
-8 Macierz przed pomnozeniem przez skalar:

-11 Macierz przed pomnozeniem przez skalar:
-4 Macierz przed pomnozeniem przez skalar:
-6 Macierz przed pomnozeniem przez skalar:

-3 Macierz przed pomnozeniem przez skalar:
7 Macierz przed pomnozeniem przez skalar:
-7 Macierz przed pomnozeniem przez skalar:

Wprowadz dowolny numer do mnozenia macierzy: 4
-28 -112 -448 -1792 -7168 -28672 -114688 -458752 -1835008 -7340032 -29360128 -117440512
Process returned 0 (0x0)   execution time : 6.421 s
Press any key to continue.

初始化和更新矩阵元素的语句不正确:您使用 matrix[ROW][COLUMN] 而不是 matrix[i][j]

这是修改后的版本:

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

#define ROWS    4
#define COLUMNS 3

int matrix[ROWS][COLUMNS];

void creatematrix(void) {
    int i, j;
    srand(time(0));
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            matrix[i][j] = rand() % 22 - 11;
        }
    }
}

void scalar(void) {
    int scalar, i, j;
    printf("Wprowadz dowolny numer do mnozenia macierzy: ");
    if (scanf("%d", &scalar) != 1)
        return;
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            matrix[i][j] *= scalar;
        }
    }
}

void print(void) {
    int i, j;
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}

int main() {
    creatematrix();
    print();
    scalar();
    print();
    return 0;
}