永发信息网

帮忙看下我的这个c语言程序哪里错了?

答案:2  悬赏:10  手机版
解决时间 2021-07-31 10:32
  • 提问者网友:山高云阔
  • 2021-07-31 01:33
#include<stdio.h>
#define M 3#define N 4
void fun(int [][N], int[], int);
main(){ int r, l, i; int origin[M][N]={22, 45, 56, 30, 19, 33, 45, 38, 20, 22, 66, 40}; int result[N]={0};
printf("the original data is:\n"); for(l=0;l<=M-1;l++) { for(r=0;r<=N-1;r++) printf("%d\t", origin[l][r]); printf("\n"); }
fun(origin, result, M);
printf("the result is:\n"); for(i=0;i<=N-1;i++) printf("%d\t", result[i]);
system("pause"); return 0;}
void fun(int tt[][N], int pp[], int m){ int l, r;
for(r=0;r<=N-1;r++) { for(l=0;l<m-1;l++) { if(tt[l][r]>tt[l+1][r]) pp[r]=tt[l+1][r]; } }}
这是一个求每列最小值的题,我写的程序前三列都是对的,可是最后一列有问题。。。请大侠们看看是哪里错了。。。。谢谢
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-07-31 02:24

我知道了


是因为你的 fun 函数有错误


void fun(int tt[][N], int pp[], int m)
{
int l, r;
for(r=0;r<=N-1;r++)
{
pp[r] = tt[0][r];
for(l=0;l<m-1;l++)
{
if(tt[l][r]>tt[l+1][r])
pp[r]=tt[l+1][r];
}
}
}


加上 pp[r] = tt[0][r]; 对最小值进行初始化就可以了

全部回答
  • 1楼网友:不如潦草
  • 2021-07-31 03:21
void fun( int tt[ ][ N ], int pp[ ], int m ) { int l, r; for( r = 0; r <= N-1; r++ ) { pp[ r ] = tt[ 0 ][ r ]; //加上这句. 因为后面的if没有对第一个元素是最小值时进行操作. for( l = 0; l < m-1; l++ ) { if( tt[ l ][ r ] > tt[ l+1 ][ r ] ) pp[ r ] = tt [ l+1 ][ r ]; } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯