解题思路:
1、输入n

2、数组存放n个整数

3、用sum叠加

注意事项:
1、直接在主函数里定义数组a,大小为变量n,感觉有问题,不能赋初值

赋初值时,如  int a[n]={0};

则有错误提示: error: variable-sized object `a' may not be initialized

参考代码:

刚开始想的,

#include "stdio.h"
main(){
    int n;
    scanf("%d",&n);
    int a[n]; //这里虽然可以运行,但还是有问题,这样做感觉是不好的 
    int sum=0;
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
        if(a[i]%2==0)
            sum+=a[i];
    }
    printf("%d\n",sum);
}

上面的有点问题,但不知道,大佬们可以指出谢谢


后来直接改成函数调用的

#include "stdio.h"
void fun(int n){ //输入并求偶数之和,同时输出 
    int a[n],sum=0;
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);//输入 
        if(a[i]%2==0) //判断偶数 
            sum+=a[i]; //是偶数则叠加 
    }
    printf("%d\n",sum); //不返回直接输出 
}
int main(){
    int n; //n个整数 
    scanf("%d",&n);
    fun(n);//调用函数 
    return 0;
}


点赞(0)
 

0.0分

26 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 29 条评论

有卷的心的菜鸡 3年前 回复TA
@每天至少八杯水 @OX64 数组的下标必须 是常量,如果你想用这种数组,可以去网上了解一下可变数组的用法
浅梦 3年前 回复TA
#include <stdio.h>
#include <string.h>
#include <math.h>
int main ()
{
   int n,i,s;
   scanf("%d",&n);
   for(i=0,s=0;i<=n;i+=2)
   {
   	s+=i;
   }
   printf("%d",s);
}
Velpro514 3年前 回复TA
你这个a[n]不报错真是奇迹,Visual Studio直接报4个错误,真不知道你用的什么编译器(-_-||)
用动态数组需要用到指针,正确代码如下:

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int *num;
	int	n=0;
	scanf("%d", &n);
	num = (int*)malloc(n * sizeof(int));
	
	int i,sum = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", num + i);
		int m;
		m = *(num + i);
		if (m % 2 == 0)
			sum += m;
	}
	printf("%d\n", sum);

	return 0;
}
询文 3年前 回复TA
@dongaibo 。C语言中不允许动态数组类型。例如: int n;scanf("%d",&n);int a[n]; 用变量表示长度,想对数组的大小作动态说明, 这是错误的。个人感觉这个解释是可以理解,你也可以百度一下
询文 3年前 回复TA
@每天至少八杯水 请大佬指明哪里错,我只是我小白,根据自己的理解,我不懂的,也请你指教
柯南的滑板 3年前 回复TA
因为n是变量,不能写成a[n],要是按你的意思先要#define N 100后面再写a[N]
每天至少八杯水 3年前 回复TA
你tm的这是什么,有十多个错。请你以后不要乱写题解免得误人子弟,你个laji .
3120000893 3年前 回复TA
你这arr[n]不报错????
dongaibo 3年前 回复TA
#include<stdio.h>
int main()
{
    int a,b=0,d=0;
    int c[a];
    scanf("%d",&a);
    for(b<a;;b++)
    {   
        scanf("%d",&c[b]);
        if(c[b]%2==0)
        d=d+c[b];
        
    }
    printf("%d",d);
    
    
	return 0;

}
大佬求解 为啥我的运行时间超时