鱼C论坛

 找回密码
 立即注册
查看: 1940|回复: 9

[已解决]烦请大佬帮我看看这个答案

[复制链接]
发表于 2021-9-19 11:29:37 From FishC Mobile | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 2350595389 于 2021-9-19 14:41 编辑

PC_ScreenShot_20210919_111500917_edit_425496057420490.jpg 大佬帮我讲一些答案为什么是这样的
最佳答案
2021-9-19 11:29:38
void fun (int (*s)[10], 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[k]= *(*(s + i) + j); // b[k] = s[i][j];
            k++;
        }
    }
    *n = k;
}

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-19 11:29:38 | 显示全部楼层    本楼为最佳答案   
void fun (int (*s)[10], 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[k]= *(*(s + i) + j); // b[k] = s[i][j];
            k++;
        }
    }
    *n = k;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-20 13:00:45 From FishC Mobile | 显示全部楼层
发文本代码及相关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i]=s[(i%mm)*nn+i/mm];
        }
}*/
void Fun(int(*s)[4] ,int *b,int mm,int nn);
void Fun(int(*s)[4] ,int *b,int mm,int nn)
{
        for (int i = 0; i < nn; i++)
        {
                for (int j = 0; j < mm; j++)
                {
                        b[i*mm+j]=s[j][i];
                }
        }
}
int main(void)
{
        int a[3][4]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},b[12]={0};
        //Fun((int*)a,b,3,4);
        Fun(a,b,3,4);
        return 0;
}
用这个主函数更明了
int main(void)
{
        int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[12]={0};
        Fun(a,b,3,4);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-22 21:25:57 | 显示全部楼层
wp231957 发表于 2021-9-20 13:00
发文本代码及相关

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

}
void main()
{
  int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
  int a[100]={0},n=0 ;
  FILE *out;
  printf("The matrix:\n");
  for (i=0; i<3; i++)
    {for (j=0;j<4;j++)  
        printf("%3d",w[i][j]);
     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[i]); 
        fprintf(out,"%d ",a[i]);
  }
  printf("\n\n");
  fclose(out);
  /******************************/
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-22 21:34:43 | 显示全部楼层
wp231957 发表于 2021-9-20 13:00
发文本代码及相关

我自己写的是这样的,运行之后结果仍然是题目中的那个二维数组,没有得到要求的一维数组
#include <stdio.h>
void fun (int (*s)[10], 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[mm][nn];
                        *n++;}
}
void main()
{
  int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
  int a[100]={0},n=0 ;
  FILE *out;
  printf("The matrix:\n");
  for (i=0; i<3; i++)
    {for (j=0;j<4;j++)  
        printf("%3d",w[i][j]);
     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[i]);
        fprintf(out,"%d ",a[i]);
  }
  printf("\n\n");
  fclose(out);
  /******************************/
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-22 21:36:20 | 显示全部楼层
jhq999 发表于 2021-9-20 15:17
用这个主函数更明了

没懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-22 22:00:54 | 显示全部楼层
本帖最后由 jhq999 于 2021-9-22 22:12 编辑


你把代码运行一下不就知道为什么明了
/*void Fun(int* s,int *b,int mm,int nn)
{
        for(int i=0;i<mm*nn;i++)
        {
                b[i]=s[(i%mm)*nn+i/mm];
        }
}*/
void Fun(int(*s)[4] ,int *b,int mm,int nn);
void Fun(int(*s)[4] ,int *b,int mm,int nn)
{
        for (int i = 0; i < nn; i++)
        {
                for (int j = 0; j < mm; j++)
                {
                        b[i*mm+j]=s[j][i];
                }
        }
}
int main(void)
{
        int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[12]={0};
        Fun(a,b,3,4);
        for (int i = 0; i < 3; i++)
        {
                for (int j = 0; j < 4; j++)
                {
                        printf("%*.d,",2,a[i][j]);
                 }
               printf("\n");
        }
        for (int i = 0; i < 3*4; i++)
        {
              printf("%d,",b[i]);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-22 22:12:57 | 显示全部楼层
本帖最后由 竹梦 于 2021-9-22 22:14 编辑

int i,j;*n=0;
for(j=0;j<nn;j++) {
    for(i=0;i<mm;i++){
         b[*n]=s[mm][nn]; // b[*n]=s[i][i];
        *n++;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-22 22:26:03 | 显示全部楼层
能运行结果没问题就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 09:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表