为什么程序的输出是 2 6 而不是 2 3 4

发布于 科技 2024-07-31
3个回答
  1. 匿名用户2024-01-31

    因为,这里我们使用指针,现在我们分析从主运行开始到运行结束的值和输出:

    i=1,调用 sub(&i) 函数,在 sub() 函数中,*s +=1; 所以 s=2; 由于 s 是指针,因此 main() 函数中 i 的值在这里发生了变化,即 main() 函数中的 i 变为 2, t +=*s; 使得 t=2; reutrn t;回到 main() 函数,我们得到 sub() 函数 2 的返回值; 此时 i=2;

    在第二个循环中,由于第一个循环中 i 的值改为 2,因此在第一个循环结束时执行了 i++,因此 i=3; 判决书 i<4; 在循环中执行语句,调用 sub(& i ) 函数,*s+=1; 使得 *s=4; (main()函数 i 也变为 4),t+=*s; 使得 t=6; reutrn t;返回 t,返回 main() 函数,输出 sub() 返回值 6; 此时 i=4; 第二个循环结束,然后执行 I++; 使得 i=5; 判决书 i<4; 跳出循环; 周期结束。 程序结束。

    主要有三点需要注意,第一:sub() 的参数是一个指针,指针参数的操作会影响调用方实际参数的值,第二:t 是一个全局变量,每次调用 sub() 方法时,t 都不需要初始化, 所以上一次调用会影响下一次调用的值。

    第三:f(i=1; i<4;i++) 循环看似循环 3 次,但实际上它的值被改变了,因为 &i 是 sub() 函数的指针参数,所以它实际上循环了 2 次,而不是 3 次。

  2. 匿名用户2024-01-30

    首先看第一个循环,i=1,此时调用函数sub,*s代表i,s+=1:等价于i=i+1,所以此时i=2,然后下一步就是执行语句t+=*s,相当于t=t+i,结果为2, 所以此时输出 2;

    此时,程序需要返回到 main 函数,以 printf("%4d",sub(&i));在 的末尾,也执行默认的最后一个语句 i++,所以 i 是 3

    然后进行第二个循环,s+=1 表示 i 增加 1,所以是 4;

    t+=*s 代表 t=t+i,所以是 2+4=6;

    所以此时的输出是 6。

    回到 main 函数,执行 i++ 并将 i 设置为 5,这样就可以退出循环。

    主功能结束。

    程序简单,但叙事麻烦,瞭望塔主人。

  3. 匿名用户2024-01-29

    在第一个 for 循环中是 i,它执行两个循环;

    第二个for循环是J,如果i满足条件,它将执行三个循环;

    然后当 i=0 时进入循环的第一层,当 j=0 1 2 满足循环的第二层条件时,则 k++ 执行 3 次,即 k 为 3,m++ 执行 1 次,即 1; 当 i=1 时,满足相同的条件,再次执行 j,然后再次执行 k++,此时 k 为 6,第二次执行 m++,即 2。

    输出: k=6, m=2

相关回答
6个回答2024-07-31

第二个问题不是问题,第一个是重要的问题。 >>>More

9个回答2024-07-31

#include

int main() >>>More

20个回答2024-07-31

在你编写的程序中,a 和 c 都是浮点型变量,两个浮点型变量在 a==c 等逻辑运算之后的返回值并不是编译器可以考虑的布尔值。 >>>More

4个回答2024-07-31

词语是狭义的,而词语是非常宽泛的,包括修辞和解释。 《辞海》是中国重要的词典,所以很有价值。

14个回答2024-07-31

男人生来就是为了征服世界,因为他知道,当他征服世界时,会有无数的女人; 一个女人征服那个男人就足够了,因为她知道她已经征服了那个男人,也就是说,她已经征服了整个世界。 >>>More