if (b > a) { max = b; }
else if (b < a) { min = b; }
这段代码的逻辑不对,应该用max和min跟b进行比较,而且也不应该用else if。正确的逻辑应该是:
if(b>max) max = b;
if(b<min) min = b;
代码修改如下:
#include <stdio.h>
int main()
{
long int n, i, a, b, c, max, min;
i = 1;
scanf("%ld", &n);
scanf("%ld", &a);
max = min = a;
for (; i < n; i++) {
scanf("%ld", &b);
if (b>max) { max = b; }
if (b<min) { min = b; }
}
c = max - min;
if (c >= 0)printf("%ld\n", c);
else printf("-%ld\n", c);
return 0;
}
题目要求 输入应该是一个数组 是找出数组中 任意两数之差的绝对值的最大值 你这里只可以两个数 所以结果不对哟
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
int func(int nums[], int n)
{
int max = 0;
for (int i = 0; i < n; ++i){
for (int j = i+1; j < n; ++j){
if (abs(nums[i] - nums[j]) > max)
max = abs(nums[i] - nums[j]);
if (abs(nums[j] - nums[i]) > max)
max = abs(nums[j] - nums[i]);
}
}
return max;
}
int main(void)
{
int n;
int nums[100];
scanf("%d", &n);
for (int i = 0; i < n; ++i){
scanf("%d", &nums[i]);
}
int max = func(nums, n);
printf("%d", max);
system("pause");
return 0;
}
首先我们要解决的问题是max和min的初始值该怎么设置呢?
题目并没给我们整数输入的范围,最好的方法是将第一个数组的元素给max和min做初始值。
然后if(max<数组元素),就把它们交换。
if(min>数组元素),就把它们交换。
最后跳出循环,c=max-min,直接打印c就好,不用判断c大于0还是小于0
题目要求单独定义函数
ld改为d
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!