2350595389 发表于 2021-9-19 11:29:37

烦请大佬帮我看看这个答案

本帖最后由 2350595389 于 2021-9-19 14:41 编辑

大佬帮我讲一些答案为什么是这样的

竹梦 发表于 2021-9-19 11:29:38

void fun (int (*s), int *b, int *n,int mm, int nn)
{
    int i, j, k;
    for (j = 0; j < nn; j++) {
      for (i = 0; i < mm; i++) {
            b= *(*(s + i) + j); // b = s;
            k++;
      }
    }
    *n = k;
}

wp231957 发表于 2021-9-20 13:00:45

发文本代码及相关

jhq999 发表于 2021-9-20 15:17:17

本帖最后由 jhq999 于 2021-9-20 15:22 编辑

/*void Fun(int* s,int *b,int mm,int nn)
{
        for(int i=0;i<mm*nn;i++)
        {
                b=s[(i%mm)*nn+i/mm];
        }
}*/
void Fun(int(*s) ,int *b,int mm,int nn);
void Fun(int(*s) ,int *b,int mm,int nn)
{
        for (int i = 0; i < nn; i++)
        {
                for (int j = 0; j < mm; j++)
                {
                        b=s;
                }
        }
}
int main(void)
{
        int a={{33,33,33,33},{44,44,44,44},{55,55,55,55}},b={0};
      //Fun((int*)a,b,3,4);
        Fun(a,b,3,4);
        return 0;
}

用这个主函数更明了
int main(void)
{
        int a={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b={0};
        Fun(a,b,3,4);
        return 0;
}

2350595389 发表于 2021-9-22 21:25:57

wp231957 发表于 2021-9-20 13:00
发文本代码及相关

这是题目中的代码,要求编写fun函数
#include <stdio.h>
void fun (int (*s), int *b, int *n,int mm, int nn)
{

}
void main()
{
int w={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
int a={0},n=0 ;
FILE *out;
printf("The matrix:\n");
for (i=0; i<3; i++)
    {for (j=0;j<4;j++)
      printf("%3d",w);
   printf("\n");
    }
fun(w,a,&n,3,4);
/******************************/
out=fopen("out.dat","w");
printf("The A array:\n");
for(i=0; i<n; i++)
{   printf("%3d",a);
        fprintf(out,"%d ",a);
}
printf("\n\n");
fclose(out);
/******************************/
}

2350595389 发表于 2021-9-22 21:34:43

wp231957 发表于 2021-9-20 13:00
发文本代码及相关

我自己写的是这样的,运行之后结果仍然是题目中的那个二维数组,没有得到要求的一维数组
#include <stdio.h>
void fun (int (*s), int *b, int *n,int mm, int nn)
{
        int i,j;*n=0;
        for(j=0;j<nn;j++)
                for(i=0;i<mm;i++){
                        b[*n]=s;
                        *n++;}
}
void main()
{
int w={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
int a={0},n=0 ;
FILE *out;
printf("The matrix:\n");
for (i=0; i<3; i++)
    {for (j=0;j<4;j++)
      printf("%3d",w);
   printf("\n");
    }
fun(w,a,&n,3,4);
/******************************/
out=fopen("out.dat","w");
printf("The A array:\n");
for(i=0; i<n; i++)
{   printf("%3d",a);
        fprintf(out,"%d ",a);
}
printf("\n\n");
fclose(out);
/******************************/
}

2350595389 发表于 2021-9-22 21:36:20

jhq999 发表于 2021-9-20 15:17
用这个主函数更明了

没懂{:9_241:}

jhq999 发表于 2021-9-22 22:00:54

本帖最后由 jhq999 于 2021-9-22 22:12 编辑

2350595389 发表于 2021-9-22 21:36
没懂

你把代码运行一下不就知道为什么明了
/*void Fun(int* s,int *b,int mm,int nn)
{
      for(int i=0;i<mm*nn;i++)
      {
                b=s[(i%mm)*nn+i/mm];
      }
}*/
void Fun(int(*s) ,int *b,int mm,int nn);
void Fun(int(*s) ,int *b,int mm,int nn)
{
      for (int i = 0; i < nn; i++)
      {
                for (int j = 0; j < mm; j++)
                {
                        b=s;
                }
      }
}
int main(void)
{
      int a={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b={0};
      Fun(a,b,3,4);
      for (int i = 0; i < 3; i++)
      {
                for (int j = 0; j < 4; j++)
                {
                        printf("%*.d,",2,a);
               }
               printf("\n");
      }
      for (int i = 0; i < 3*4; i++)
      {
            printf("%d,",b);
      }
      return 0;
}

竹梦 发表于 2021-9-22 22:12:57

本帖最后由 竹梦 于 2021-9-22 22:14 编辑

竹梦 发表于 2021-9-22 22:05


int i,j;*n=0;
for(j=0;j<nn;j++) {
    for(i=0;i<mm;i++){
         b[*n]=s; // b[*n]=s;
      *n++;
    }
}

routty 发表于 2021-9-22 22:26:03

能运行结果没问题就行
页: [1]
查看完整版本: 烦请大佬帮我看看这个答案