由键盘输入20个整数,任选两个数相乘,输出最大乘积

怎么做到由键盘输入20个整数,任选两个数相乘,输出最大乘积?
是用数组的冒泡排序吗?
就比如输入:1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
输出:81(9*9=81)

#include<stdio.h>
#include<math.h>
int main() {
    int n;
    int i=0,a[20];
    for(i=0; i<20; i++) {
        scanf("%d",&a[i]);
    }
    int t,sum=0;
    for(i=0; i<20; i++) {
        if(a[i]>a[i+1]) {
            t=a[i+1];
            a[i+1]=a[i];
            a[i]=t;
            sum=t*a[i+1];
        }

    }
    printf("%d",sum);
}

这是我的代码,就是过不了,好奇怪

按从大到小,冒泡两次就行了,取索引是 0 和 1 的数据,相乘

冒泡参考【从小到大,需要改下】:


#include<stdio.h>

void sort(int a[],int n)
{
    int i,j,t,noswap;
    for(i=0;i< n-1; i++)
    {
        noswap=1;
        for(j=n-1;j>i;j--)
            if(a[j-1]>a[j])
            {
                t=a[j-1];
                a[j-1]=a[j];
                a[j]=t;
                noswap=0;
            }
        if(noswap)    
            break;
    }
}

int main() 
{
     
    int n;
    printf("Input n:");
    scanf("%d", &n);
     
    printf("Input %d numbers:", n);

    int a[n];
    for (int i = 0; i < 5; i++) {
        scanf("%d", &a[i]);
    }

    sort(a, n);

    printf("Sorting results:");
    for (int i = 0; i < 5; i++) {
        printf("%4d", a[i]);
    }

    return 0;
}

用冒泡从小到大排序,然后最后两个元素相乘就可以了呀

任意选两个数不一定是最大吧?哈哈,有点矛盾这个描述。应该就是选两个最大数相乘,排序可行

大可不必,你这20个数应该放在一个数组 arr[20]中,定义一个整数Max,使其等于数组中的第一个数,Max=arr[0]
之后Max与后面的数逐个进行比较
如果Max小于等于后面的数,就交换这两个数,并用k记录Max的下标,之后继续直到比较结束
最后结果:Max*arr[k]