1、 请编一函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,
求出二维数组每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主
函数中赋予。
#include "conio.h"
#include "stdio.h"
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{ int i,j;
for(i=0;i<=M;i++)
{
pp[i]=tt[i][0];
for(j=0;j<=N;j++)
if(tt[i][j+1]<pp[j])pp[i]=tt[i][j+1];
}
}
main()
{ int t[M][N]={ {22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
int p[N],i,j,k;
clrscr();
printf("the original data is:\n");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nthe result is:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
我看着没有什么问题啊?
----------------解决方案--------------------------------------------------------
可是输出杂就不对呢!
----------------解决方案--------------------------------------------------------
发现2个错误:1,行和列还分不清;
2,算法有误;
您看看是要这结果吗?
#include "conio.h"
#include "stdio.h"
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{ int i,j;
for(i=0;i<=M;i++)
{
pp[i]=tt[0][i];
for(j=0;j<N-1;j++)
if(tt[j+1][i]<pp[i]) pp[i]=tt[j+1][i];
}
}
main()
{ int t[M][N]={ {22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
int p[N],i,j,k;
clrscr();
printf("the original data is:\n");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nthe result is:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
----------------解决方案--------------------------------------------------------
你的也不对啊
----------------解决方案--------------------------------------------------------
睡了个不好的觉,所以起得好早哟
----------------解决方案--------------------------------------------------------
#include "conio.h"
#include "stdio.h"
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{ int i,j;
for(j=0;j<N;j++)
{
pp[j]=tt[0][j];
for (i=0;i<M;i++)
if (tt[i][j]<pp[j]) pp[j]=tt[i][j];
}
}
main()
{ int t[M][N]={ {22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
int p[N],i,j,k;
clrscr();
printf("the original data is:\n");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nthe result is:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
----------------解决方案--------------------------------------------------------
改了一下,你看看吧:
#include "conio.h"
#include "stdio.h"
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{ int i,j=0,k=0;
pp[i]=tt[i][0];
for(j=0;j<N;j++)
for(i=0;i<M;i++)
if(tt[i][j]<pp[j])
pp[j]=tt[i][j];
}
main()
{
int t[M][N]={ {22,45,56,30},
{19,33,45,38},
{20,252,66,40}};
int p[N],i,j,k;
printf("the original data is:\n");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nthe result is:\n");
for(k=0;k<N;k++)
printf("%10d",p[k]);
printf("\n");
}
----------------解决方案--------------------------------------------------------
你的也不对啊
不好意思,我太马虎了,确实做得不对
----------------解决方案--------------------------------------------------------
结果是没错.......却用了非常奇怪的东西.....
----------------解决方案--------------------------------------------------------
#include "conio.h"
#include "stdio.h"
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{ int i,j;
for(i=0;i<=M;i++)
{
pp[i]=tt[0][i];
for(j=0;j<N-1;j++)
if(tt[j+1][i]<pp[i]) pp[i]=tt[j+1][i];
}
}
main()
{ int t[M][N]={ {22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
int p[N],i,j,k;
clrscr();
printf("the original data is:\n");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nthe result is:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
getch();
}
----------------解决方案--------------------------------------------------------