c语言编程题!

我们有一些小木棒,可以选取其中的三根,组成一个三角形,我们的问题:在我们能够得到最大面积的三角形时,周长最小是多少。
输入
输入数据包含多个测试实例,每个实例占两行,第一行有一个数据N(3 <= N <= 100).接下来一行输入N个正整数,其中每个数都是1到100之间。如果N = 0则表示输入数据的结束,不做处理。
输出
对于每个测试实例,请输出在我们能够得到最大面积的三角形时,周长最小是多少。如果组不成三角形,输出0.每个输出占一行。
样例输入
5
1 2 3 4 5
7
1 2 3 4 6 6 6
0
样例输出
12
18

第1个回答  2014-12-10
#include <stdio.h>

void swap(int *a, int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

void sort(int *a, int n)
{
    int i, j;

    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (a[j] < a[j + 1])
                swap(&a[j], &a[j + 1]);
}

int main(void)
{
    int n, a[100];

    while (scanf("%d", &n) != EOF && n != 0) {
        int i;

        for (i = 0; i < n; i++)
            scanf("%d", a + i);

        sort(a, n);

        for (i = 0; i < n - 3; i++)
            if (a[i] < a[i + 1] + a[i + 2])
                break;

        if (i < n - 3)
            printf("%d\n", a[i] + a[i + 1] + a[i + 2]);
        else
            printf("0\n");

    }

    return 0;
}

本回答被网友采纳

c语言小题目。急急急
1. 编程实现:从键盘上接收10个整数,并对其进行排序(要求排成升序)main(){int a[10],i,j,k,t;for(i=0;i<10;i++) scanf("%d",&a[i]);for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++)if(a[j]<a[k]) k=j;if(k!=i){t=a[k];a[k]=a[i]; a[i]=t;} ...

C语言问题编程问题?
int main(){ int i,j,n=-1;float scores[30],sum=0,temp;printf("请输入n的值(0~30):");while(n<0 || n>30) scanf("%d",&n);if(!n) return 0;for(i=0;i<n;scanf("%f",&scores[i]),sum+=scores[i],i++)printf("请输入学生%d分数:",i+1);printf("%d名学生的平...

大学福音经典编程题适用于专升本
24.给数组删除重复的元素 25.C语言编程题求1! + 2! + 3! + 4!...+N 26.C语言编程题求斐波那契数(循环法与递归法 27.C语言编程输入n,k求n的k次幂(递归与非递归)28.(递归)输入一个数,把他的每一位相加在输出出来;29,实现函数把字符数组的元素逆序 如“abc“,逆序成“cba“30.递归...

谁能提供点C语言的试题给我,最好能有答案的,非常感谢!
3、编写一个程序,从标准输入中读取一个字符串,将其中的大写字母转换为小写字母,并输出转换后的字符串。答案:include <stdio.h>#include <ctype.h> int main() {char c;while ((c = getchar()) != EOF) {putchar(tolower(c));}return 0;}4、编写一个程序,从标准输入中读取一个字符...

C语言编程问题求解答
} 11题 include <stdio.h>int main(){int a[]={1,2,3,4,5,6,7,8,9};printf("* ");for(int i=0;i<9;i++){printf("%2d ",a[i]);}printf("\\n");for(int row=0;row<9;row++){printf("%d ",a[row]);for(int col=0;col<9;col++){if(col<row){printf(" "...

10道经典的C语言例题(含参考程序)
1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。include include int main(){ int bai_wei,shi_wei,ge_wei,i,sum=0;for(i=100;i<1000;i++){ bai_wei=i\/100;shi_wei=(i%100)\/...

急!急!简单c语言编程题,求编写代码
\/\/第一题#include<stdio.h>void fun(int n){ int i,j,k,t;for(k=0;k<n;k++)\/\/控制总行数{ for(i=0;i<n-k-1;i++)\/\/控制输出空格,因为空格不好看见,就用*代替 printf("%c",'*'); for(j=0;j<2*k+1;j++)\/\/控制输出字母 { printf("%c",65+j)...

1.用C语言编程实现1、3、5、7.奇数的累加。(一般用while或者do while...
第一题#include<stdio.h>int main(void){int i = 1,sum = 0;do{sum = sum + i;i = i + 2;}while(i <= 7);printf("sum:%d\\n",sum);return 0;}第二题#include<stdio.h>int main(void){int i,count = 1;for(i = 0; i <= 100; i++){if(i%9 == 0){printf(" ...

C语言编程题目
下面是一些C编程题目:1. 编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数。2. 编写程序,从键盘输入三角形的三条边长,判断它们是否可以构成三角形,并输出三角形的类型(等边、等腰、一般)。3. 编写程序,从键盘输入字符串,统计其中的大写字母、小写字母、数字和其他字符的个数,并...

c语言编程题,用for循环!急急急
include<stdio.h>int main(){int hg,bhg;for(hg=1;hg<2000;hg++)for(bhg=0;bhg<2000;bhg++)if(hg*5-bhg*18==9931){printf("%d",hg);}return 0;}

相似回答