c++写程序:给定一个整数数组,请求出该数组中两数之差(绝对值)的最小值,并确定对应元素的位置。 输入 第一行为一个正整数n,随后第二行为n个整数a。 输出 该数组中两数之差(绝对值)的最小值及对应元素在输入数组中的位置索引,索引从1开始计数,以空格分隔。若有多组,输出任意一组即可。 示例输入 5 105 7 9 16 -31 示例输出 2 2 3
时间: 2023-05-12 18:03:26 浏览: 139
C++经典源代码练习题
3星 · 编辑精心推荐
可以使用以下代码来解决这个问题:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main() {
int n, i, j, min_diff = INT_MAX, index1, index2;
scanf("%d", &n);
int *a = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
int diff = abs(a[i] - a[j]);
if (diff < min_diff) {
min_diff = diff;
index1 = i + 1;
index2 = j + 1;
}
}
}
printf("%d %d %d", min_diff, index1, index2);
free(a);
return 0;
}
这个程序首先读入一个整数n,表示数组中元素的个数。然后读入n个整数,存储在数组a中。接下来,程序使用两重循环来计算数组中任意两个元素之间的差的绝对值,并找到其中最小的差。最后,程序输出最小差的值以及对应的两个元素在数组中的位置索引。
阅读全文