有以下程序 #include <stdio.h> void fun(int *s) { static int j = 0; do { s[j] += s[j + 1]; } while (++j < 2); } int main() { int i, a[10] = {1, 2, 3, 4, 5}; for (i = 1; i < 3; i++) fun(a); for (i = 1; i < 5; i++) printf("%d", a[i]); printf("\n"); return 0; } 程序运行后的输出结果是? 5745为什么结果是这个
时间: 2024-03-29 15:41:39 浏览: 135
C语言中static关键字的几种用法总结
程序运行后的输出结果应该是 5745。
函数 fun 中定义了静态变量 j,每次执行 fun 函数时,j 的值会保留上一次的值。在 main 函数中,循环两次调用 fun 函数,每次执行 fun 函数时,都会将数组 a 中相邻的两个元素相加,也就是将 a[0] 和 a[1] 相加,以及将 a[1] 和 a[2] 相加。由于 j 是静态变量,第一次执行 fun 函数时,j 的值为 2,第二次执行 fun 函数时,j 的值为 4,所以实际上对于数组 a,执行了以下操作:
a[0] = a[0] + a[1] = 1 + 2 = 3
a[1] = a[1] + a[2] = 2 + 3 = 5
a[2] = a[2] + a[3] = 3 + 4 = 7
a[3] = a[3] + a[4] = 4 + 5 = 9
a[4] = a[4] + 0 = 5 + 0 = 5
最后循环输出 a 数组中下标从 1 到 4 的元素,即 3、5、7、9,结果为 5745。
阅读全文