新数组求和
思考的问题是 :
牛牛学习了指针相关的知识,想实现一个 int cal(int *array,int n) 的函数求出长度为 n 的数组的和。
输入描述:
第一行输入一个正整数 n ,表示数组的长度
第二行输入 n 个正整数,表示数组中每个数字的值
输出描述:
实现 int cal(int *array,int n) 求出数组array的和。
这个问题来自于牛客网,我在写码的过程中发现,如果直接将数组及其每个元素在主函数中定义出来(也就是把数组赋完值),并执行,则可以准确算出结果;但是如果使用scanf函数,在小窗口中输入 该数组的元素总个数 和n个正整数时,则会出现无法运算的情况。
我使用 5(数组长度)和 1 2 2 2 3 这几个数进行测试的时候,发现执行结果为1;而输入 2 2 2 2 2 ,则结果为4。
#include <stdio.h>
int sum(int *c,int n);
int main()
{
int z;//作为数组a的下标
int a[z];
int b;//实际参数,数组元素的数量
int total;//数组元素相加总和
scanf("%d",&b);//有几个 元素参加运算
for(z=0;z<b;z++)
{
scanf("%d",&a[z]);// 给数组循环赋值
}
total = sum(a,b);//调用函数,并接受函数返回的数值
printf("%d",total);
return 0;
}
int sum(int *c,int n)//调用函数模块 ,数组名a将地址发给指针c,然后数组中元素的总数 是n个
{
int sum1;//sum函数中 计算之和
for(int i=0;i<n;i++)
{
sum1 = *c + sum1;
c++;//指针 地址加一
}
return sum1;
}
。
。