C++下列程序的运行结果是( )

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:42:10
下列程序的运行结果是( )
#include <stdio.h>
int d=1;
fun(p)
int p;
{int d=5;
d+=p++;
printf("%d",d);
}
main()
{int a=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
A.44 B.84 C.95 D.以上结果均不正确
我自己运行结果是81但答案不是这个,另外最好能帮我把每一步都注明上是什么过程,还有我的C++程序怎么能让他一步一步运行啊,我才学不久,还不太会用,还要应付自学考试,麻烦大家了!
知道选B了,可是我不会读每步啊,可以帮我写写每步的意义吗?

答案应该是B,84。
从主函数开始看,
main()
{int a=3;
fun(a);
到这要调用fun(p)函数,
fun(p)
{int p;
int d=5;
d+=p++; //p++因为++放后面,所以要用形参a=3加上d再赋给d.(d=5+3=8)
printf("%d",d);//所以先打印出8
}
接着到这部分
d+=a++; //这个跟上面那个也一样,但d的值是第二行的定义,所以可以
得出d=1+3=4.
printf("%d\n",d); //所以这里打印出4,跟前面8合起来就是84。
}

最后答案为84 选B
源文件有错误,应该是:
#include <stdio.h>
int d=1; //全局变量d赋值1
void fun(int p)
{int d=5; //局部变量d赋值5
d+=p++; //先做局部变量d=d+p,为8,再p自加1为4
printf("%d",d); //输出8
}

void main() //从这里开始执行
{int a=3; //局部变量a赋值3
fun(a); //将3传给fun
d+=a++; //先做全局变量d=d+a,为4,再a自加1为4
printf("%d\n",d); //输出全局变量d为4
}