C语言好难学啊,各位大神能帮帮忙么,做一下这道题最好能讲解一下思

C语言好难学啊,各位大神能帮帮忙么,做一下这道题最好能讲解一下思路😩呃拍得不清楚了,题目是:从键盘录取若干个整数,计算其中三个最大的偶数之和。例如:录入1... C语言好难学啊,各位大神能帮帮忙么,做一下这道题最好能讲解一下思路😩
呃拍得不清楚了,题目是:从键盘录取若干个整数,计算其中三个最大的偶数之和。例如:录入1,2,5,8,8,17,4,13,22,23。则三个最大的整数和为:22+8+8=38
展开
 我来答
cdyzxy
2016-12-13 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3605万
展开全部
  1. 首先,要分析,你的输入是如何结束的,比如先输入要输入数据的个数,将这个数先保存到变量n中

  2. 开设一个数组,将输入的偶数顺序存放起来,假设数组元素个数的最大值为N,程序中可以用#define的方法来设定,比如:

    #define N 1024

    int a[N],nn; //这个数组将用来保存输入的所有偶数,nn存放存储偶数的个数

  3. 利用循环输入每一个数,遇到偶数存入a数组,nn自加1

  4. 给数组a排序,从大到小

  5. 将前3个数加起来输出

#include<stdio.h>

#define N 1024

void main() { int a[N],n,nn,i,j,k;

  scanf("%d",&n); nn=0;

  for ( i=0;i<n;i++ ) {

    scanf("%d",&k); //注意不要用逗号分隔输入,用空格即可

    if ( k%2==0 ) { a[nn]=k; nn++; }

  }

  for ( i=0;i<nn-1;i++ ) for ( j=i+1;j<nn;j++ ) if ( a[i]<a[j] ) { k=a[i];a[i]=a[j];a[j]=k; }

  for ( i=k=0;i<3;i++ ) k+=a[i];

  printf("%d\n",k);

}

My_Persistence
2016-12-13 · TA获得超过3465个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:417万
展开全部
#include <stdio.h>
#define N 10  //定义一个符号常量
int main()
{
int a[N],tmp[N],i,j,temp; //tmp数组是辅助数组

for(i=0;i<N;i++)
scanf("%d",&a[i]);  //从键盘输入10个整数
for(i=0,j=0;i<N;i++)
{
if(a[i]%2 == 0) //如果是偶数,存放到辅助数组tmp中
{
tmp[j]=a[i];
j++;
}
}
int len=j; //tmp数组的元素个数
int k;
//用选择法从tmp数组中选出三个最大的整数分别放在tmp[0],tmp[1],tmp[2]中
for(i=0;i<3;i++)
{
k=i;
for(j=i+1;j<len;j++)
{
if(tmp[k]<tmp[j]) //用k来记录当前最大元素的下标
k=j;
if(k!=i)
{
temp=tmp[k];
tmp[k]=tmp[i];
tmp[i]=temp;
}
}
}
int sum=tmp[0]+tmp[1]+tmp[2];
printf("三个最大的偶数之和=%4d\n",sum);
return 0;
}

示例运行结果:

1 2 5 8 8 17 4 13 22 23

三个最大的偶数之和=  38

追问
这个程序运行不了啊
追答
怎么可能,我都给出示例运行结果了,你用的是什么编译器?如果你用的是VC++ 6.0可能是运行不了的,它不支持C99标准,建议你用GCC或者更高版本的编译器来编译就没问题的了,还有什么问题请留言吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呵呵哒3cF
2016-12-14 · TA获得超过343个赞
知道小有建树答主
回答量:600
采纳率:37%
帮助的人:117万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int v[11]={1,2,5,8,8,17,4,13,11,22,23} ;
   int a=0,b=0,c=0;
   int temp1=0,temp2=0;
for (int i = 0; i < 11; ++i)
{
       if (v[i]%2==0)
        if(v[i]>a)
        {
            temp1=a;
            temp2=b;
            a=v[i];
            b=temp1;
            c=temp2;
        }
            
        else if(v[i]>b)
        {
            temp1=b;
            b=v[i];
            c=temp1;
        }
            
         else if(v[i]>c)
            c=v[i];
}
printf("%d ",a+b+c);

    return 0;
}


感觉写的有点麻烦 将就吧

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式