中国银行白金卡的好处:c语言的问题!

来源:百度文库 编辑:高校问答 时间:2024/05/09 20:06:18
#include <stdio.h>
int func(int a,int *p);

void main()
{
int a=1,b=2,c;

c=func(a,&b);
b=func(c,&a);
a=func(b,&c);

printf("a=%d,b=%d,c=%d",a,b,c);
}

int func(int a,int *p)
{
a++;
*p=a+2;
return(*p+a);
}
=func(a,&b); /* 这句运行完后a=1,b=4,c=6 */
b=func(c,&a); /* 这句完后a=9,b=16,c=6 */
a=func(b,&c); /* 这句完后a=36,b=16,c=19 */

请问这都是怎么算出来的啊???????

拜托…… printf用的是没错的,C的就是这样子的
最后输出是a=36,b=16,c=19
给你分析一下
func的功能是返回一个int型,但是由于*p传的是指针,在func运行过程中*p指向的内容也被改变了,但形参a的值在func结束后不变(func运行完后形参p对应的实参指向的内容值变为a+1+2,而形参a对应的实参值不变)。
int a=1,b=2,c;
c=func(a,&b); /* 这句运行完后a=1,b=4,c=6 */
b=func(c,&a); /* 这句完后a=9,b=16,c=6 */
a=func(b,&c); /* 这句完后a=36,b=16,c=19 */
所以最后a=36,b=16,c=19

这道题目主要考形参实参的用法区别以及指针类型数据做参数的用法,很基础的问题。

我没学过C 但凭直觉
printf语句错了吧?
应该是printf("a="%d," b="%d," c="%d",a,b,c);

西门说的对,printf("a="%d," b="%d," c="%d",a,b,c); 这个是对的

对于写作业的人来说,不给与回答