题目
从键盘输入n (个数不限)个整形数字,放入数组PArray, 调用函数 int *Calc(int *PA,int Num); 计算数组中所有元素的和返回到 main 函数,输出计算结果。
解题步骤
(1)定义数组、变量;
(2)接收设定值;
(3)分配内存空间;
(4)元素求和;
(5)输出;
C语言
#include <stdio.h> #include <stdlib.h> int *Calc(int *PA, int Num) { int sum = 0, i; for (i = 0; i < Num; i++) { sum += PA[i]; } PA[0] = sum; return PA; } int main() { int *PArray = NULL; int Total = 0, i = 0; printf("enter the number of elements in arrays:\n"); scanf("%d", &Total); PArray = (int *)malloc(Total * sizeof(int)); printf("give %d element assignment:\n", Total); for (i = 0; i < Total; i++) { scanf("%d", &PArray[i]); } PArray = Calc(PArray, Total); printf("Sum=%d\n", *PArray); free(PArray); return 0; }
说明
- 使用指针,及时初始化;
- 动态分配内存空间,包含头文件
<stdlib.h>
,函数原型void* malloc (size_t size);
返回值类型是void *
,void 表示返回未知指针类型。- 通常,
malloc()
使用时需要进行强制类型转换,如(int *)malloc(Total * sizeof(int));
修改 void 指针为所需类型;Calc()
为指针类型函数,值 sum 返回主函数时不可直接返回。将 sum 值存入数组首地址,也就是作为第一个元素,返回数组首地址即可;- 动态申请的内存空间最后要使用
free()
释放;