C 简单二维

C 简单二维,c,ansi,C,Ansi,我正在努力解决这个问题 然而,在我当前的代码中,我将此作为一个输出 目前这是我的代码 #include <stdio.h> #include <stdlib.h> #define r 3 #define c 5 int main(int argc, char *argv[]) { int i, j; float *a[r], sum; freopen("testdata2", "r", stdin); for(i = 0; i < r; i++) {

我正在努力解决这个问题

然而,在我当前的代码中,我将此作为一个输出

目前这是我的代码

#include <stdio.h>
#include <stdlib.h>
#define r 3
#define c 5

int main(int argc, char *argv[])
{
int i, j;
float *a[r], sum;

freopen("testdata2", "r", stdin);

for(i = 0; i < r; i++)
{
  float *row = (float*)malloc(sizeof(float)*c);
  for(i = 0; i < c; i++)
{
  scanf("%f", &row[i]);
}
  a[i] = row;
}

printf("The average values for the three rows are: ");
for(i = 0; i < r; i++)
{
  sum = 0;
  for(j = 0; j < c; j++)
{
  sum += a[i][j];
}
  printf("%.2f", sum/c);
}

printf("\nThe average values for the three columns are: ");
for(i = 0; i < c; i++)
{
  sum = 0;
  for(j = 0; j < r; i++)
{
  sum += a[i][j];
}
  printf("%.2f", sum/r);
}
return 0;
}
#包括
#包括
#定义R3
#定义C5
int main(int argc,char*argv[])
{
int i,j;
浮点数*a[r],总和;
freopen(“testdata2”、“r”、stdin);
对于(i=0;i
您声明的原因不正确

float *a[r] /* r = 3 */
int i;
打电话

for(i = 0; i < r; i++) {
  float *row = (float*)malloc(sizeof(float)*c);

  for(i = 0; i < c; i++) { // just write for(int i =0; i < c ; i++) {
    scanf("%f", &row[i]);  // or use j here;
  }

  a[i] = row; // i = c /* 5 */ here
              // a[4] and a[5] are not located
}
(i=0;i{ 浮动*行=(浮动*)malloc(sizeof(浮动)*c); 对于(i=0;i 根据内存中的一些数据,最好的方法是得到错误的数据; 另一种方式是,您的程序将被访问冲突压碎,试图使用其他程序占用的内存

事情会是这样的

for(int i = 0; i < r; i++) {
    float *row = (float*)malloc(sizeof(float)*c);

    for(int j = 0; j < c; j++) { 
        scanf("%f", &row[j]);
    }

    a[i] = row;                     
}
for(int i=0;i
如果你认为你使用的是2D数组:你没有。指针不是数组,指针数组也不是2D数组。查看
for(i=0;i
我无论如何都看不懂。修复缩进。