c - 矩阵乘法无法编译

标签 c visual-studio-2010 compiler-warnings

编译时遇到了一些问题

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

int perkalianMatriks(double ** A, double ** B, double ** C, int n);
int randomMatriks(double * m, int n);

int main(int argc, char *argv[]) {
    int n_order = 0 , i, j;
    double ** A, ** B, ** C;
    time_t time1, time2;
    double diff_sec;

    randomMatriks(double * m, int n)

    A = (double **) malloc(sizeof(double) * n_order);
    B = (double **) malloc(sizeof(double) * n_order);
    C = (double **) malloc(sizeof(double) * n_order);

    for (i = 0; i < n_order; i++) {
        A[i] = (double *) calloc(sizeof(double), n_order);
        B[i] = (double *) calloc(sizeof(double), n_order);
        C[i] = (double *) calloc(sizeof(double), n_order);
    }

    printf("\nMatrix Sizes : ");
    scanf("%d", %n_order);


    time(&time1);
    perkalianMatriks(A, B, C, n_order);
    time(&time2);
    diff_sec = difftime (time2,time2);


    printf ("Total time to execute %f seconds.\n", diff_sec);
    return 0;
}

int randomMatriks(double * m, int n) {
    int i;

    for (i = 0; i < n_order; i++) {
        m[i] = (double) (rand() % 10) + 1;
    }
}

int perkalianMatriks(double ** a, double ** b, double ** c, int n) {
    int i, j, k;

    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            c[i][j]=0;          
            for (k = 0; k < n; k++)
            {
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }

    return 0;
}

编译时出错

  1. sekuensial.c(16):错误 C2143:语法错误:前面缺少“)” '类型'
  2. sekuensial.c(16):错误 C2198:“randomMatriks”:参数太少 打电话
  3. sekuensial.c(16): error C2059: 语法错误:')'
  4. sekuensial.c(29): error C2059: 语法错误:'%'
  5. sekuensial.c(45):错误 C2065:“n_order”:未声明的标识符

谁能帮我解决这个问题?

最佳答案

你少了一个分号。而且您不能将变量命名为 double。我想这一行应该被删除,因为它是上面声明的剪切和粘贴。如果你需要调用它,你应该用真正的参数来调用它。我没有看到您为第一个参数定义了任何合适的东西,我猜从后面的代码中,您打算对第二个参数使用 n_order

randomMatriks(double * m, int n)
              ^^^^^^            ^^^

这个scanf是错误的,你可能想要&:

scanf("%d", %n_order);
            ^^^

变量 dif_sec 不存在。打字错误。

dif_sec = difftime (time2,time2);
^^^^^^^
printf ("Total time to execute %f seconds.\n", dif_sec);
                                               ^^^^^^^

变量 n_order 不存在。 n 而不是可能。

for (i = 0; i < n_order; i++) {
                ^^^^^^^

randomMatriks 应该返回一些东西。它在没有 return 语句的情况下失败,即使它被声明为返回一个 int

您有一些未使用的变量和函数参数。

int main(int argc, char *argv[]) {
             ^^^^        ^^^^
    int n_order = 0 , i, j;
                         ^^^

关于c - 矩阵乘法无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11353948/

相关文章:

c# - 如何将 UserControl 放入 Visual Studio 工具箱

compiler-errors - 如何抑制IAR EW 8.1中的Pe070错误?

Delphi - 分配给 'x' 的值从未使用过

c - 调用免费电话前是否需要重置保护

c++ - 在 Windows 上编写 C++,但通过 Linux 模拟器使用 Linux 系统调用

c - 在 C 中切片字符串的开头

c# - 用于在 ASP MVC 中同时发布 Action 和 Script 的按钮

c# - C#编译器相关的对象引用未设置为对象的实例

编译器警告涉及数组的不匹配函数声明

c++ - 共享库和语言标准