Can';t在C中打印用户定义的函数
每次尝试打印用户定义函数的返回值时,我的代码都无法打印该值Can';t在C中打印用户定义的函数,c,printf,user-defined-functions,C,Printf,User Defined Functions,每次尝试打印用户定义函数的返回值时,我的代码都无法打印该值 #include <stdio.h> #include <stdlib.h> int n; int *d = NULL; int **M = NULL; int **P = NULL; int minimult(int n, int *d, int **P) { int i, j, k, diagonal; for (i = 1; i <= n; i++) M[i][i
#include <stdio.h>
#include <stdlib.h>
int n;
int *d = NULL;
int **M = NULL;
int **P = NULL;
int minimult(int n, int *d, int **P)
{
int i, j, k, diagonal;
for (i = 1; i <= n; i++)
M[i][i] = 0;
for (diagonal = 1; diagonal <= n - 1; diagonal++)
for (i = 1; i <= n - diagonal; i++)
{
j = i + diagonal;
int *min = NULL;
M[i][j] = min[0];
for (k = i; k < j; k++)
{
min[k] = (M[i][k] + M[k + 1][j] + d[i - 1] * d[k] * d[j]);
if (min[k] < min[k + 1])
M[i][j] = min[k];
else
M[i][j] = min[k + 1];
}
}
return **M;
return **P;
}
void order(int i, int j)
{
int k;
if (i == j)
printf("A%d\n", i);
else
{
k = P[i][j];
printf("(");
order(i, k);
order(k + 1, j);
printf(")");
}
}
int main()
{
int i, j;
int input;
printf("Write the size of matrices.\n");
scanf("%d", &n);
M = malloc(sizeof(int*)*n);
for (i = 0; i < n; i++)
{
M = malloc(sizeof(int)*n);
}
printf("Input array d with %d elements.\n", n + 1);
d = malloc(sizeof(int)*n);
for (i = 0; i < n; i++)
{
scanf("%d", &input);
d[i] = input;
}
free(M);
free(d);
int minimult(int n, int *d, int **P);
printf("The minimum size of multiplication is,\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d\n", M[i][j]);
}
}
void order(i, j);
system("pause");
return 0;
}
#包括
#包括
int n;
int*d=NULL;
int**M=NULL;
int**P=NULL;
最小整数(整数n,整数*d,整数**P)
{
int i,j,k,对角线;
对于(i=1;i我强烈建议你开始时要简单得多。你介绍的程序中有很多内容,但正如@Some programmer dude在评论中指出的,问题远比缺少输出更根本
例如,从以下内容开始,这是程序的一小部分:
#include <stdlib.h>
#include <stdio.h>
int main(void) {
int i;
int n;
int **M = NULL;
printf("Write the size of matrices.\n");
scanf("%d", &n);
M = malloc(sizeof(int*)*n);
for (i = 0; i < n; i++)
{
M = malloc(sizeof(int)*n);
}
for (i = 0; i < n; i++) {
printf("matrix element #%d is %d\n", i, *M[i]);
}
}
使用此修复程序,程序将运行并输出,例如:
Write the size of matrices.
5
matrix element #0 is 0
matrix element #1 is 0
matrix element #2 is 0
matrix element #3 is 0
matrix element #4 is 0
从这里开始,您可以一次添加一点,并通过打印出所有内容来验证正在发生的事情是否是您预期的事情。最终,在继续操作时,您将能够删除一些早期的打印输出语句,以便输出只关注您最近添加的部分r修改
您可以慢慢地构建并备份您试图编写的函数,但有许多基本原理需要您首先理解。从简单开始,进行小的添加,然后输出所有内容。这将帮助您理解代码,并让您看到哪里出了错。您是否在之后立即使用M
e> free
d it?您也不调用函数,只需声明它们。为什么要调用free(M)
在打印出内容之前?在一个不相关的问题上,一个函数不能有多个返回值。一旦到达一个return
语句,它将立即从函数返回。任何可能的后续返回都不会到达。此外,M=malloc(sizeof(int)*n)
循环内部是错误的。你想要M[i]=malloc(sizeof(int)*n);
总之,你有很多问题,似乎你在猜测,而不是真正了解它们。因此,在继续之前,回到最开始,买几本书(甚至去上课)谢谢你教我如何处理数组问题!我会根据你的建议一步一步地添加一些代码。
Write the size of matrices.
5
matrix element #0 is 0
matrix element #1 is 0
matrix element #2 is 0
matrix element #3 is 0
matrix element #4 is 0