#include
int main()
{
int i, n, sum = 0;
int a[] = {0};
scanf_s("%d", &n);
for (i = 0; i < n; i++) {
scanf_s("%d", a[i]);
sum += a[i];
}
printf("%d", sum);
return 0;
}
你include了什么。。
1.先注意int a[]={0};这一条语句,它只是做了下面这样一个工作:定义一个a整型数组,大小为1,内容为{0}。所以下面访问到i(>1)的时候就越界了。应该改成:
int \*a=(int\*)malloc(sizeof(int)\*4);
memset(a,0,sizeof(a));
2.scanf后面要加一个地址,而a[i]不是一个地址,所以出错。应该改成&a[i]或a+i。
最终程序:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
int main()
{
int i, n, sum = 0;
int *a=(int*)malloc(sizeof(int)*4);
memset(a,0,sizeof(a));
scanf_s("%d", &n);
for (i = 0; i < n; i++) {
scanf_s("%d", &a[i]);
sum += a[i];
}
printf("%d", sum);
return 0;
}
把a数组定义为全局变量:
#include .........
int a[10000];
using namespace std;
int main(){
........
}