作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 04:47:51
以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上.请填空
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