用c语言实现随机输入n个正整数,存放在数组中,设计一个算法从中选出3个数,组成周长最长的三角形并输出周长,无法组成三角形的则输出为0
时间: 2024-05-01 19:23:52 浏览: 122
以下是用C语言实现的算法,实现随机输入n个正整数,存放在数组中,然后从中选出3个数,组成周长最长的三角形并输出周长,无法组成三角形的则输出为0。
```c
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int n;
printf("请输入正整数的个数n:");
scanf("%d", &n);
int *num = (int*)malloc(n * sizeof(int));
printf("请输入%d个正整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &num[i]);
}
qsort(num, n, sizeof(int), cmp);
int max_perimeter = 0;
for (int i = n - 1; i >= 2; i--) {
int a = num[i], b = num[i - 1], c = num[i - 2];
if (a < b + c) {
int perimeter = a + b + c;
if (perimeter > max_perimeter) {
max_perimeter = perimeter;
}
}
}
if (max_perimeter == 0) {
printf("无法组成三角形\n");
} else {
printf("最大周长为%d\n", max_perimeter);
}
free(num);
return 0;
}
```
算法的思路是先将输入的正整数从小到大排序,然后从数组的最后三个元素往前依次遍历,判断是否能够组成三角形,如果能够组成,则计算周长,与之前的最大周长进行比较,更新最大周长。如果遍历完所有的元素都无法组成三角形,则输出无法组成三角形。
阅读全文