【发布时间】:2012-07-05 23:31:19
【问题描述】:
编译时遇到了一些麻烦
#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;
}
编译时出错
- sekuensial.c(16): 错误 C2143: 语法错误: 缺少 ')' 之前 '类型'
- sekuensial.c(16):错误 C2198:“randomMatriks”:参数太少 来电
- sekuensial.c(16):错误 C2059:语法错误:')'
- sekuensial.c(29):错误 C2059:语法错误:'%'
- sekuensial.c(45):错误 C2065:“n_order”:未声明的标识符
有人可以帮我解决这个问题吗?
【问题讨论】:
-
scanf("%d", %n_order);需要scanf("%d", &n_order);
-
是的,我已经改过了。抱歉,错字.. 然后是错误?
-
randomMatriks的 [不完整] 声明在您的main函数中间做了什么?你已经在main之前声明了randomMatriks。你为什么决定在main里面再做一次??? -
@AndreyT 我的意思是调用函数randomMatriks(随机生成矩阵)
-
程序现在编译。如果您在调试它时遇到问题,那就是另一个问题了。
标签: c visual-studio-2010 compiler-warnings