为什么这段代码算出来的结果不是数组里的各个元素之和#include <stdio.h> int main(void) { int sum=0; int x; int marbles[5]={1,2,3,4,5}; for(int i=0;i<6;i++) { x = marbles[i]; sum=sum+x;} printf("the sum of the arr is %d.\n",sum); return 0; }
时间: 2023-02-12 16:12:45 浏览: 83
这段代码使用了 JavaScript 的 reduce() 方法来累加数组里的元素,但是 reduce() 方法的第二个参数是初始值,而这里的初始值是整个数组,导致累加的不是数组里的各个元素,而是整个数组。应该将初始值改为 0,让 reduce() 方法从 0 开始累加数组里的元素。
相关问题
#include<stdio.h> #include<string.h> void main() { char str[10]="Ch\nina"; printf("%d",strlen(str)); }
这段代码的作用是输出字符串 "Ch\nina" 的长度,即 6。但是可以看出,在数组定义时,只分配了 10 个字符的空间,而 "Ch\nina" 长度为 7,因此存在字符串溢出的问题。建议将数组大小定义为至少 8 个字符。同时,main 函数的返回值应该为 int 而不是 void。修改后的代码如下所示:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[8] = "Ch\nina";
printf("%d", strlen(str));
return 0;
}
```
逆序输出数组各元素/*逆序输出数组各元素*/ #include <stdio.h> void main() { /*********** Begin **********/ /*********** End **********/ }
逆序输出数组各元素的代码如下:
```c
#include <stdio.h>
void main()
{
int a[] = {1, 2, 3, 4, 5};
int len = sizeof(a) / sizeof(int);
for (int i = len - 1; i >= 0; i--)
{
printf("%d%c", a[i], " \n"[i == 0]);
}
}
```
阅读全文