以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空

main()
{ int x,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x; py=&y; pz=&z; pmax=&max;
_____;
if (*pmax < *py) *pmax=*py;
if (*pmax < *pz) *pmax=*pz;
printf("max=%d\n", max);
}
.
求帮忙

首先,定义了几个指针:px指向x,py指向y,pz指向z,pmax指向最大的一个数
因为'*'是取内容运算符,也就是取指针指向的变量的内容。
所以*px就等同于x的值,*py就等同于y的值,*pz就等同于z的值,*pmax就等同于max的值。
这些明白了吧。
再看逻辑:
先让x作为最大的值,就是max=x,也就是*pmax=*px;这就是横线上应该填的内容。
然后再让max与y比较,如果max小于y的话,就让y作为最大的值,也就是*pmax=*py;
最后再让max与z比较,如果max小于z的话,就让z作为最大的值,也就是*pmax=*pz;

最终max的值就是xyz中最大的那个。

记住*是取内容运算符,&是取地址运算符。可能指针让人看着比较头疼,多看看就行了。

希望能帮到你!追问

那么如果输入abc的值分别为3,5,4,则首先是max=a=3,接下来执行if (*pmax < *py) *pmax=*py;则此时*pmax里面的数是5,接下来执行if (*pmax < *pz) *pmax=*pz; 则*pmax里面的值变为4,这样的话最后输出的结果是4吧?
(真的很感谢你的回答,希望能再帮忙一下,谢谢!)

追答

要想执行 *pmax=*pz;,得先判断if语句里的条件是不是成立。
如果*pmax < *pz成立,就会执行,如果不成立的话,是不会执行的。
当max=5的时候,跟4比较的话,5<4不成立,所以条件是假,不会执行 *pmax=*pz。
所以最大值还是5。你体会一下

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-10
*pmax=*px
第2个回答  2012-04-25
填空为: *pmax=*px追问

怎么理解呢?

相似回答