c语言 2023专接本试题

img


解题思路和流程是怎么样的。 如何求fun c 的值。是令c=b吗 有无返回值

  1. 在主函数中定义变量 c 并将其初始化为 5。
     
  2. 调用 fun(c) 两次,将返回值相加赋值给变量 x。
     
  3. 进入 fun 函数中,将静态变量 a 初始化为 10。
     
  4. 定义变量 c,并计算 a++ + --b 的值,即先使用 a 的值进行加法运算,再对 a 执行后缀自增运算,对 b 执行前缀自减运算,然后再将加法的结果赋值给 c。
     
  5. 返回变量 c 的值。
     
  6. 第一次调用 fun 函数返回 c 的值为 14,第二次调用 fun 函数时变量 a 的值已经变为 11,b 的值也已经发生了改变,因此返回 c 的值为 15。
     
  7. 将两次调用 fun 函数的返回值相加,并将结果赋值给变量 x。
     
  8. 输出变量 x 的值,即 29。
     
    如果答案对您有所帮助,望采纳。

fun(b)的返回值为((a++)+(--b))=a+(b-1)=a+b-1

第一次fun(c)=fun(5)=a+c-1=10+5-1=14

第二次a++后fun(c)=fun(5)=a+c-1=11+5-1=15

x=14+15=29

首先要搞清楚,自定义函数内的a
static是静态的意思,会把a存储在静态区,也就是说a只被初始化一次。

其次要清楚
a+++--b是如何组合的,
它们是从左到右逐个字符组合的,直到不能成为合法标记就停止组合的,像这个只能这样组合
a ++ + --b
也就是
a++ + --b

理清楚这些答案是很明显的
第一次调用返回值是
10++ + --5
14
此时a=11了;
第二次调用返回值是
11++ + --5
15
此时a=12了

所以
14+15=29
答案就是29

说的那么明白清楚了么?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^