有关C语言求最小值的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:27:46
我用同样方法求最大值,一点问题都没有。然后就大于号小于号变了一个方向,求最小值就不成。请大家帮帮忙。

题目要求2*5的数组,分别输两组数,每组各求最小值,然后总体求最小值。下面是我编的程序。帮忙挑下错。

#include<stdio.h>
#define numrows 2
#define numcols 5
int main()
{
float num[numrows][numcols],min[numrows];
for(int i=0;i<numrows;i++)
{
min[i]=num[i][0];
for(int j=0;j<numcols;j++)
{
printf("\nPlease input a number of row %d",i+1);
scanf("%f",&num[i][j]);
if(min[i]>num[i][j])
min[i]=num[i][j];
if(min[i]<=num[i][j])
min[i]=min[i];
}
printf("\nThe smallest number of row %d is %.2f",i+1,min[i]);
}
if (min[0]>min[1])
printf("\nThe smallest number of the 10 numbers is %.2f",min[1]);
if(min[0]<=min[1])
printf("\nThe smallest number of the 10 numbers is %.2f",min[0]);
return 0;
}

就只有一处错误:min[i]=num[i][0];
--num[i][0]本身都没初始化就赋值给min[i],导致错误。可以在声明时初始化一个较大的值如min[]={1000,1000};
--另外一个是把printf("\nPlease input a number of row %d",i+1);放到第一个for 循环里。

min[i]=num[i][0]; 有问题
num[i][0]; 的值还没输入就赋值,回有问题的

一般求最小值的方法是:把第一个值赋给min,然后用后面的值依次跟min比较,若比min小,就与其交换,把该值赋给min