矩阵列清零,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); 
} 

我认为应该让我键入我的矩阵。接下来我应该做什么?请帮帮我。

+1

提示:随着'INT I,N,J,; int tab [n] [n];',在'int tab [n] [n];'中使用的'n'的值是多少? – chux

+0

最好发布真正的可编译代码:'printf(“Matrix A [%d] [%d]”,n,m);'m'定义在哪里? – chux

+0

注意'int [n]'是非标准的c。为了达到标准,如果你想要一个动态调整大小的数组,你需要使用malloc,free等。 – pm100

代码中存在很多错误,变量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; 
}