#include<stdio.h>
void daxiao(int *p, int g, int *da, int *xiao)
{
for (int i = 1; i < g; i++)
{
int _da = p[0];
if (p[i]>_da)
_da = p[i];
*da = _da;
}
for (int k = 1; k < g; k++)
{
int _xiao = p[0];
if (p[k] < _xiao)
_xiao = p[k];
*xiao = _xiao;
}
}
int main()
{
int array[5] = { 69, 25, 6, 99, 0};
int a, b;
daxiao(array, 5, &a, &b);
printf(“最大值是:%d\n”, a);
printf(“最小值是:%d\n”, b);
return 0;
}
为什么一定要把int _da=p[0]和int _xiao=p[0]放到循环外呢?像上面那样写为什么不行?
void daxiao(int *p, int g, int *da, int *xiao)
{
for (int i = 1; i < g; i++)
{
int _da = p[0];
if (p[i]>_da)
_da = p[i];
*da = _da;
}
for (int k = 1; k < g; k++)
{
int _xiao = p[0];
if (p[k] < _xiao)
_xiao = p[k];
*xiao = _xiao;
}
}
int main()
{
int array[5] = { 69, 25, 6, 99, 0};
int a, b;
daxiao(array, 5, &a, &b);
printf(“最大值是:%d\n”, a);
printf(“最小值是:%d\n”, b);
return 0;
}
为什么一定要把int _da=p[0]和int _xiao=p[0]放到循环外呢?像上面那样写为什么不行?
解决方案
30
你写在里面,那么你你每次的比较都是和p[0]在比较,所以根本就不是在求最值,而是在求大于第一个数的最后一个数。(注意if、for的使用都要加花括号,不加括号这个习惯是很不好的,你这个代码原因是没花括号,逻辑都出问题了)
20
if 后面用大括号, 否则只有一条语句属于if
#include<stdio.h> void daxiao(int *p, int g, int *da, int *xiao) { for (int i = 1; i < g; i++) { int _da = p[0]; if (p[i]>_da) { _da = p[i]; *da = _da; } } for (int k = 1; k < g; k++) { int _xiao = p[0]; if (p[k] < _xiao) { _xiao = p[k]; *xiao = _xiao; } } } int main() { int array[5] = { 69, 25, 6, 99, 0}; int a, b; daxiao(array, 5, &a, &b); printf("最大值是:%d\n", a); printf("最小值是:%d\n", b); return 0; }