怎么做到由键盘输入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]