2.开始执行程序,从main()进入程序
3.声明结构体变量,把指针(*pd)和md变量设为⼀个可以使⽤data结构体的结构体变量,则指针(*pd)和md这个变量就包含了其data结构体中的所有元素
4.通过变量md寻找结构体中变量,为其赋值,然后赋值后结构体的地址给指针接收
5.执行调用函数fun,将指针寻找到的变量(64,14)传递到fun函数中,用形参x,y接收传递的参数
1).进入while循环,判断x是否不等于y,成立进入循环,不成立则结束循环
2).如果(x>y),计算x-y,将结果赋给x;否则就计算y-x,将结果赋给y(ps:x与y在进入循环就不可能等于,所以结果只有两种情况,再写else if的条件判断就有些多余,用else即可)
3).结束循环,函数返回x的值,结束fun函数的周期
(循环7-8次,没仔细数,最后x=2,y=2)
将得函数返回到的值,通过指针,赋给结构体中res的变量(传值res=2)
6.打印结构体res的最后得到的数据
res=2
第一次进入第一个for循环,i=0满足判断条件i<2,所以执行第一个for循环{}里的内容:
首先运行到语句x++;x值原本是0,运行x++后x值变为1
其中,执行循环体的内容后执行i++,i值变为1
程序继续执行,来到第2个for循环。
【在C里面非零值都为true.只有当表达式等于0的时候才为false
j%2是求余数,当j为奇数的时候j%2余数不是0,即为真,就执行continue。故当j为奇数的时候执行
continue,而执行continue会回到循环的开始处(注意: 不是回到if())】
首次第2个for循环:j=0,j%2的值是0;执行if{}里的x++,x值变成2
执行j++后j=1,满足j<3,继续执行第2个for循环里的内容:
j=1,j%2的值是1,为真。会执行continue,而执行continue会回到第2个for循环的开始处
j=2,j%2的值是0,为假。会执行if{}里的内容 x++,x值变成3
j=3后,不满足第2个for循环的判断条件,故不再执行第2个for循环了。
程序继续运行,来到又下一行的x++;x值变为4.。
此时,第一个for循环执行完第一次。我们回到开头,继续判断第1个for循环是否继续循环下去
i=1,满足判断条件i<2,所以继续执行第一个for循环的内容。
程序继续执行,【 注意,此时的x值已经是4了】。
首先,执行第一行的x++,x值从4变成5
再度来到第2个for循环 :
j=0,j%2的值是0;执行if{}里的x++,x值变成6
执行j++后
j=1,j%2的值是1,为真。会执行continue,而执行continue会回到第2个for循环的开始处
j=2,j%2的值是0,为假。会执行if{}里的内容 x++,x值变成7
j=3后,不满足第2个for循环的判断条件,故不再执行第2个for循环了。
跳出第2个for循环后,下面还有一行 x++,执行后x值从7变成8.
我也是刚学,自己看视频的。看到你这个题目,我先复制代码调试运行后发现结果是8,自己也搞不懂。忙了几个小时,才终于弄懂了。呵呵。