求问,这个程序怎么选最小数。
#include <stdio.h>int main (void)
{
int Y, M;
int i, j;
float min = 0, max = 0;
float pm = {
{0, 0, 0, 0, 0, 0, 0, 31},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34}
};
float *p = pm;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 8; j++)
{
if (max < pm){
max = pm;
}
}
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 8; j++)
{
}
}
printf ("%.2f\n%.2f\n", max, min);
return 0;
}
min怎么求?要求数值为0的元素不参与比较。试了几次都得不出正确答案。 第26-32行 本帖最后由 3-3 于 2018-1-1 14:38 编辑
#include <stdio.h>
int main (void)
{
int Y, M;
int i, j;
float min, max ;
float pm = {
{0, 0, 0, 0, 0, 0, 0, 31},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34}
};
max = pm;
float *p = pm;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 8; j++)
{
if (max < pm){
max = pm;
}
}
}
min = max ;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 8; j++)
{
if (min > pm &&0 != pm){
min = pm;
}
}
}
printf ("%.2f\n%.2f\n", max, min);
return 0;
}
初值的选取是关键。 要求max,,那么max的初值应该是最小;要求出min ,那么min的初值应该是最大。 #include <stdio.h>
int main(void)
{
int i, j;
double min = 0;
double pm =
{
{0, 0, 0, 0, 0, 0, 0, 31},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34}
};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 8; j++)
{
if(pm != 0)
{
min = pm;
goto FIRST_DONE;
}
}
}
FIRST_DONE:
for(i = 0; i < 3; i++)
{
for(j = 0; j < 8; j++)
{
if(pm != 0)
{
if(pm < min)
{
min = pm;
}
}
}
}
printf("%.2lf\n", min);
return 0;
}
20.50
请按任意键继续. . . 人造人 发表于 2017-12-29 22:48
为啥FIRST_DONE:后面啥也没有?
3-3 发表于 2017-12-29 21:28
#include
int main (void)
if (min > pm &&0 != pm){
min = pm;
pm是二维数组呀,为啥只用pm ilsoviet1917 发表于 2018-1-1 11:04
为啥FIRST_DONE:后面啥也没有?
那就是个标签啊!遇到goto就直接跳到标签那里。 你在求最小的代码里面的最前面加一个判断
如果你数组的值等于0就跳过这次循环比较。。。。。
{
if(!pm[][])
continue;
if (mix>pm[][])
mix =pm[][];
}
手机党请见谅!!!!!! ilsoviet1917 发表于 2018-1-1 11:04
为啥FIRST_DONE:后面啥也没有?
不需要有呀
第一个循环就是寻找不是0的第一个数,二层循环用break比较费劲,直接goto出去
ilsoviet1917 发表于 2018-1-1 11:08
if (min > pm &&0 != pm){
min = pm;
我提交的代码 是:
if (min > pm &&0 != pm)
min = pm;
不知道为什么,颜色变红以后始终没法正确显示。 这就是可以正确运行的代码。 #include <stdio.h>
int main (void)
{
int Y, M;
int i, j;
// float min = 0, max = 0;
float pm = {
{0, 0, 0, 0, 0, 0, 0, 31},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34}
};
float max = pm;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 8; j++)
{
if (max < pm){
max = pm;
}
}
}
float min = max;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 8; j++)
{
if (min > pm && pm != 0){
min = pm;
}
}
}
printf ("%.2f\n%.2f\n", max, min);
return 0;
}
页:
[1]