求c++高手解释一下程序的输出结果 ,谢谢!

供稿:hz-xin.com     日期:2025-01-13
紧急求救!!!!!c++高手进!!请解释一下下面这个程序的输出结果???

数组第一个元素取地址 其实就是等于数组本身。
所以,两个cout是相同的。
因为数组名其实就是一个指向数组首元素的一个地址

这样的程序都要解释,那你就要好好学习基础了,这里连继承都没有,只要看到程序跳到哪个函数就往哪个函数跳就行了。

Point pt[60];
定义一个数组60个点,则构造函数被调用60次,此时point::i=60;
注意Point::i是静态变量,其实就是统计Point的个数,所以所有的
Point::i都一样,等于60,但是n不同,是普通数据成员,属于某个对象所有,
所以pt[0].n=1,pt[1].n=2,pt[2].n=3...,pt[59].n=60;
你输入:
1,2
执行:if(a < b) ShowPoint(pt[l], a, b);
调用
void ShowPoint(Point &p, double x, double y)
{
cout<<std::setprecision(16)
<<"Point : ("<<p.x(x)<<", "<<p.x(y)<<")"<<endl;
}//需要说明的是,你的这个函数的第二个p.x(y)应该是写错了,应该为p.y(y)

按照你的程序,此时l=0,则pt[0].x1=1,pt[0].y1=0,之后执行l++,则l=1;

再输入:
3,3
执行:if(a == b) ShowPoint(pt[l].setPoint(a, b));
调用了两个函数,先调用 Point& setPoint(double a,double b);函数
再调用void ShowPoint(Point p)函数;

当调用函数setPoint时,使得pt[1].x1=3; pt[1].y1=3;
当调用 ShowPoint函数时,由于传递的是对象,则调用拷贝构造函数初始化p,
则有Point::i=61; p.n=61;p.x1=3;p.y1=3;
,之后执行l++,则l=2;

再输入:
2,1
执行:if(a > b) ShowPoint(a, b);
在调用此函数时执行Point p(x, y);来构造对象p,则有:
Point::i=62; p.n=62;p.x1=2;p.y1=1;
,之后执行l++,则l=3;

然后再输入Ctrl + z则循环结束;
之后执行Point p(a), q(b); 构造了2个对象
则有:Point::i=64;
p.x1=2;p.y1=2;p.n=63;
q.x1=1;q.y1=1;q.n=64;

再执行 ShowPoint(q);调用ShowPoint(Point p)函数,又执行拷贝构造函数,
因此此时Point::i=65;
之后执行for循环:
for(i = 0; i < l; i++)
x += pt[i].getX(), y -= pt[i].getY();

i可以取0,1,2,3
则x=1+3+0+0=4,y=0-3-0-0=-3
之后执行:ShowPoint(pt[l].setX(x), pt[l].setY(y));
此时l=4,则有pt[4].x1=4,pt[4].y1=-3;
然后在执行函数ShowPoint时有语句Point p(x, y);即构造对象p,则有:
Point::i=66; p.n=66;p.x1=4;p.y1=-3;

之后执行for循环:
for( i = 0; i <= l; i++)
pt[i].show();
显示:pt[0],pt[1],pt[2],pt[3],pt[4]

之后执行:
q.setPoint(q.x() - p.x() + a, q.y() - p.y() + b).show();
由于:
p.x1=2;p.y1=2;p.n=63;
q.x1=1;q.y1=1;q.n=64;
a=2;b=1;
所以相当于q.setPoint(1-2+2,1-2+1).show();
即q.setPoint(1,0).show();使得q.x1=1,q.y1=0
而show()函数的原型是:
void show()
{cout<<"Point["<<n<<"] : ("
<<setprecision(16)<<x1<<","<<" "<<
setprecision(16)<<y1<<")"<<endl;}

所以输出Point[64]:(1,0)
注意此时的n为对象q的n所以为64

然后执行下一句:q.show();
输出依然是:Point[64]:(1,0)

程序最后一句输出:p.showSumOfPoint();
则输出:In total :66 points.

全部讲解完毕。如果能当面解释应该很容易懂,因为要解释清楚,所以文字比

较长,有什么不周到之处,请谅解。

i 是静态变量。所有的对象都共有它。

程序太大了...

路过,不解释。。。

求c++高手解释一下程序的输出结果 ,谢谢!
setprecision(16)<<y1<<")"<<endl;} 所以输出Point[64]:(1,0)注意此时的n为对象q的n所以为64 然后执行下一句:q.show();输出依然是:Point[64]:(1,0)程序最后一句输出:p.showSumOfPoint();则输出:In total :66 points.全部讲解完毕。如果能当面解释应该很容易懂,因为要解释清楚,所以文...

二级C++程序题: 下面程序的输出结果是:_sencond__.希望给出解释,特别...
++以后,z指向第2个, 就是second字符串。然后*运算,把字符串输出 f()是void 因为不需要返回值

C语言 c++ 运行程序后 输出的结果是什么 case do while
case 如果没有break,那么就会从当前case执行遇到break或者switch循环结束。比如以此题为例,当循环到c=e时,循环从case ‘e’:case ‘E’;开始执行,直到default结束。当c=i时,循环从case ‘i’:case ‘I’;开始执行,直到default结束。

c++程序分析,请给出分析和结果,谢谢
第一次a=5,第二次a=10;所以B=15;所以 M::f1(P)输出结果就是 A=5,B=15 M::f1(Q)输出结果就是 A=10 B=15 朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。

c++从键盘输入2473<CR>,则程序的输出结果是:
输入2时,ch-‘2’=0,程序运行case 0,由于没有语句,继续运行case 1,输出一个6,然后继续运行case 2,输出第2个6,遇到break语句返回。然后输入4时,ch-‘2’=2,程序直接运行case 2,输出8,遇到break语句返回。然后输入7,ch-‘2’=5,运行default语句,输出9,遇到break语句返回。最后输入...

急!C++程序运行的结果是?void main() {int m=5;if (m++>5) cout<<m<...
m++>5\/\/m =5 该条件不成立 执行else 但此时m =6 所以输出6

如何使用c++编程语言实现程序运行结果输出?
在C语言中,if是判断语句,所以用它来对整数进行判断。if(a%2==0)是计算机认可的判断代码。4、因为需要进行结果的输出,不单单是判断而已,所以要结合else来结合进行判断,对结果进行输出。5、最后,点击“运行”,在弹出的输入页面之后,在其输入一个整数,点击回车,即可得出想要的结果了。

c++中,这个程序为什么会输出如下结果。。那些9,8之类的数字从哪来的...
因为你用的是单引号,在输出时被cout解释成数字了,所以打印出来的是一串数字,不是你要的符号,把单引号换成双引号,以字符串形式输出。以上是推测的,手上没有电脑,你自己测试一下

为什么会输出这个结果?最后一行怎么去掉前面那句?c++
不该以后的程序代码和运行结果如下。#include using namespace std;int main(){ int i,age[5],sum=0; for(i=0;i<5;i++) {if(i==0) cout<<"Enter an age:"; else cout<<"Enter another age:"; cin>>age[i]; sum+=age[i]; } cout<<"The average...

C语言 下面程序输出结果
dp=x-y;} main(){ int a,b,c,d;a=30;b=50;fun(a,b,&c,&d);printf("%d,%d,",c,d);} 有些程序要在main 的前面加上int 或者是void 的形式 可以用下面的试一下噢 include<stdio.h> int fun(int x,int y,int *cp,int *dp){*cp=x+y;dp=x-y;} int main(){ int a...