鱼C论坛

 找回密码
 立即注册
查看: 1649|回复: 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
  1. void fun (int (*s)[10], int *b, int *n,int mm, int nn)
  2. {
  3.     int i, j, k;
  4.     for (j = 0; j < nn; j++) {
  5.         for (i = 0; i < mm; i++) {
  6.             b[k]= *(*(s + i) + j); // b[k] = s[i][j];
  7.             k++;
  8.         }
  9.     }
  10.     *n = k;
  11. }
复制代码

最佳答案

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

使用道具 举报

发表于 2021-9-19 11:29:38 | 显示全部楼层    本楼为最佳答案   
  1. void fun (int (*s)[10], int *b, int *n,int mm, int nn)
  2. {
  3.     int i, j, k;
  4.     for (j = 0; j < nn; j++) {
  5.         for (i = 0; i < mm; i++) {
  6.             b[k]= *(*(s + i) + j); // b[k] = s[i][j];
  7.             k++;
  8.         }
  9.     }
  10.     *n = k;
  11. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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 编辑
  1. /*void Fun(int* s,int *b,int mm,int nn)
  2. {
  3.         for(int i=0;i<mm*nn;i++)
  4.         {
  5.                 b[i]=s[(i%mm)*nn+i/mm];
  6.         }
  7. }*/
  8. void Fun(int(*s)[4] ,int *b,int mm,int nn);
  9. void Fun(int(*s)[4] ,int *b,int mm,int nn)
  10. {
  11.         for (int i = 0; i < nn; i++)
  12.         {
  13.                 for (int j = 0; j < mm; j++)
  14.                 {
  15.                         b[i*mm+j]=s[j][i];
  16.                 }
  17.         }
  18. }
  19. int main(void)
  20. {
  21.         int a[3][4]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},b[12]={0};
  22.         //Fun((int*)a,b,3,4);
  23.         Fun(a,b,3,4);
  24.         return 0;
  25. }
复制代码

用这个主函数更明了
  1. int main(void)
  2. {
  3.         int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[12]={0};
  4.         Fun(a,b,3,4);
  5.         return 0;
  6. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

  4. }
  5. void main()
  6. {
  7.   int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
  8.   int a[100]={0},n=0 ;
  9.   FILE *out;
  10.   printf("The matrix:\n");
  11.   for (i=0; i<3; i++)
  12.     {for (j=0;j<4;j++)  
  13.         printf("%3d",w[i][j]);
  14.      printf("\n");
  15.     }
  16.   fun(w,a,&n,3,4);
  17.   /******************************/
  18.   out=fopen("out.dat","w");
  19.   printf("The A array:\n");
  20.   for(i=0; i<n; i++)  
  21.   {     printf("%3d",a[i]);
  22.         fprintf(out,"%d ",a[i]);
  23.   }
  24.   printf("\n\n");
  25.   fclose(out);
  26.   /******************************/
  27. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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[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);
        fprintf(out,"%d ",a);
  }
  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 编辑


你把代码运行一下不就知道为什么明了
  1. /*void Fun(int* s,int *b,int mm,int nn)
  2. {
  3.         for(int i=0;i<mm*nn;i++)
  4.         {
  5.                 b[i]=s[(i%mm)*nn+i/mm];
  6.         }
  7. }*/
  8. void Fun(int(*s)[4] ,int *b,int mm,int nn);
  9. void Fun(int(*s)[4] ,int *b,int mm,int nn)
  10. {
  11.         for (int i = 0; i < nn; i++)
  12.         {
  13.                 for (int j = 0; j < mm; j++)
  14.                 {
  15.                         b[i*mm+j]=s[j][i];
  16.                 }
  17.         }
  18. }
  19. int main(void)
  20. {
  21.         int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[12]={0};
  22.         Fun(a,b,3,4);
  23.         for (int i = 0; i < 3; i++)
  24.         {
  25.                 for (int j = 0; j < 4; j++)
  26.                 {
  27.                         printf("%*.d,",2,a[i][j]);
  28.                  }
  29.                printf("\n");
  30.         }
  31.         for (int i = 0; i < 3*4; i++)
  32.         {
  33.               printf("%d,",b[i]);
  34.         }
  35.         return 0;
  36. }

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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