矩阵列清零,C语言
问题描述:
我需要做一个小项目,但我完全不知道如何。 Im给出大小为n的矩阵A,并且它必须返回矩阵B,其是矩阵A,具有归零的第一列和倒数第二列。我所做的全部是矩阵列清零,C语言
#include<stdio.h>
#include<math.h>
int main()
{
int i,n,j,;
int tab[n][n];
printf("Size of matrix:");
scanf("%d",&n);
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
printf("A[%d][%d]=",i,j);
scanf("%lf",&tab[i][j]);
}
printf("Data:");
printf("Matrix A[%d][%d]",n,m);
}
我认为应该让我键入我的矩阵。接下来我应该做什么?请帮帮我。
答
代码中存在很多错误,变量m未声明,双数组声明为n未初始化。由于矩阵的大小只有在运行时才知道(由用户输入),您需要使用动态内存分配函数为矩阵分配内存。
试试这个代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, n;
printf("Size of matrix: ");
scanf("%d", &n);
int *tab = (int*)malloc(sizeof(int)*n*n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("A[%d][%d]=",i,j);
scanf("%d",(tab+i*n+j));
}
}
for (i = 0; i < n; i++)
{
*(tab+i*n) = 0;
*(tab+i*n+n-2) = 0;
}
//Print tab
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", *(tab+i*n+j));
}
printf("\n");
}
return 0;
}
提示:随着'INT I,N,J,; int tab [n] [n];',在'int tab [n] [n];'中使用的'n'的值是多少? – chux
最好发布真正的可编译代码:'printf(“Matrix A [%d] [%d]”,n,m);'m'定义在哪里? – chux
注意'int [n]'是非标准的c。为了达到标准,如果你想要一个动态调整大小的数组,你需要使用malloc,free等。 – pm100