标题:一维数组
只看楼主
堕落的那个人
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-12-20
结帖率:100%
已结贴  问题点数:20 回复次数:4 
一维数组
一维数组(下列题目任选一题)
一、从键盘录入若干个整数,计算其中三个最大的偶数之和。
例如:录入:1,2,5, 8,8,17,4,13,11,22,23。则三个最大的偶数之和为:22+8+8=38。



这个程序怎么编写啊?跪求!!!!!!

搜索更多相关主题的帖子: 最大的 键盘 
2016-12-20 11:33
堕落的那个人
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-12-20
得分:0 

2016-12-20 11:39
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:7 
这个涉及到数组重复取值处理问题:
第一种:可以先排序再求大小~
第二种:在第一种的基础上改一下,第一次,找到最大的一个偶数,记录其值并把它和第一个数交换(类似于选择法排序),排序3次就可以了,第二次,直接从第二个数开始搜索(由于此时第一个最大偶数已经交换到第一个位置,已被忽略)……
先自己动手敲敲,应该不算太难(如果你会选择法排序的话)~



[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-20 12:49
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
得分:7 
#include<stdio.h>
int main()
{
    int a[11],b[11],i=0,j=0,t,s;
    printf("请输入一维数组:");
    for(i=0;i<11;i++)
    scanf("%d",&a[i]);
    for(i=0,j=0;i<11;i++)
    {
        if(a[i]%2==0)
        {
            b[j]=a[i];
            j++;
        }
    }
    for(j=0;j<11;j++)//冒泡排序法
    {
        if(b[j]<=b[j+1])
        {
            t=b[j];b[j]=b[j+1];b[j+1]=t;
        }
        
    };
    s=b[0]+b[1]+b[2];
    printf("三个最大偶数的和为:s=%d\n",s);
return 0;   
}
不知道哪有问题,请大神指教
2016-12-20 12:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
#include <stdio.h>
main()
{
    int a[] = {1,2,5,8,8,17,4,13,11,22,23}; //22+8+8=38。
    int i, i1=0,i2=0,i3=0, n=sizeof(a)/sizeof(int);
    for (i=1; i<n; i++)
    {
        if (a[i]%2==0 && a[i]>=a[i1])
        {
             i3 = i2;
             i2 = i1;
             i1 = i;
         }
    }
    printf("%d+%d+%d=%d ", a[i1],a[i2],a[i3],a[i1]+a[i2]+a[i3]);
}
2016-12-20 16:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472649-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.162834 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved