#include
#include
int b[1000];
int* runningSum(int* nums, int numsSize, int* returnSize) {
int i = 1;
*returnSize = numsSize;
nums[0] = nums[0];
for (; i < numsSize; i++) {
nums[i] += nums[i - 1];
}free(returnSize);
return nums;
}
int main() {
int a;
int* c;
char f;
a = 0;
scanf_s("nums=");
f = getchar();
while (f!= ']') {
scanf_s("%d", &b[a]);
a++;
f= getchar();
}
c = runningSum(b, a, (int*)malloc(sizeof(int) * a));
printf("[");
for (b[0] = 0; b[0] < a; b[0]++) {
printf("%d", *(c+b[0]));
if (b[0] != a - 1) {
printf(",");
}
else {
printf("]");
}
}
return 0;
}
为什么输入为nums=[1,1,1,1,1]结果输出来为[0,2,3,4,5]?
你这runningSum整个就怪怪的,外面malloc一个数组进去,然后里面free了,那为什么不在里面直接malloc呢,
returnSize这个数组只用到了第一个数,后面的都没用上,为什么不直接定义个int来计算,非要这么搞呢
索引从0开始,i为什么初始是1呢
你为什么要直接修改传入的nums数组呢,你这把原始数据给改了
但凡你能给这个函数加个注释,自己就能看出来哪些是不对劲的地方
写代码之前要先会读代码,不要读不懂自己写的代码