烦请大佬帮我看看这个答案
本帖最后由 2350595389 于 2021-9-19 14:41 编辑大佬帮我讲一些答案为什么是这样的 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;
} 发文本代码及相关 本帖最后由 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;
} 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);
/******************************/
} 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);
/******************************/
}
jhq999 发表于 2021-9-20 15:17
用这个主函数更明了
没懂{:9_241:} 本帖最后由 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: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++;
}
} 能运行结果没问题就行
页:
[1]