阅读程序,写出运行结果 #include<stdio.h> int fun() {static int x=1; x*=2; return x; } int main() { int i,s=1; for(i=1;i<=3;i++) s*=fun(); printf("%d\n",s); return 0; }
时间: 2024-04-04 09:30:31 浏览: 68
运行结果为:8
解释:
程序中的 `fun()` 函数是一个静态变量,且初始值为1,每次调用 `fun()` 函数时,变量 x 的值会翻倍。在 `main()` 函数中,使用 for 循环调用 `fun()` 函数三次,并将返回值累乘到变量 s 中。因此,最终输出的结果为 `s = 1*2*4 = 8`。
相关问题
程序运行结果是( )。 #include<stdio.h> int fun() { static int x=1; x+=1; return x; } int main() { } A) 6 int i,s=1; for(i=1;i<=3;i++) s+=fun(); printf("%d\n",s);
程序运行结果是 8。
虽然在 main 函数中没有调用 fun 函数,但是由于 fun 函数中定义了静态变量 x,并且初始化为 1,所以 x 的值会在程序运行过程中一直存在,每次调用 fun 函数时,x 的值会加 1。在 for 循环中,fun 函数被调用了三次,所以 x 的值变为 4,加上 s 的初始值 1,总和为 5,输出结果为 8。
//程序阅读,输出结果 #include <stdio.h> int fun(int n); int a; int main() { fun(4); printf("%d", a); return 0; } int fun(int n) { static int count = 0; count++; if (n <= 2) return 1; int r = fun(n - 1) + fun(n - 2); a = count; return r; }
这段程序的输出结果是 7。程序的执行过程是这样的:
1. main 函数调用 fun(4)。
2. fun(4) 内部执行 fun(3) 和 fun(2)。
3. fun(3) 内部执行 fun(2) 和 fun(1)。
4. fun(2) 和 fun(1) 都返回 1。
5. fun(3) 返回 fun(2) + fun(1) = 2。
6. fun(4) 内部执行 fun(3) 和 fun(2)。
7. fun(2) 已经被执行过了,不再执行,直接返回 1。
8. fun(3) 已经被执行过了,不再执行,直接返回 2。
9. fun(4) 返回 fun(3) + fun(2) = 3。
10. fun(4) 执行完毕,a 的值为3。
11. main 函数输出 a 的值,即输出 3。
12. 程序执行完毕,返回 0。
阅读全文