输出下列程序运行结果 #include using namespace std; class Demo{ public: Demo(){data=1;} Demo(int d):data(d){} void setDama(int d){data=d;} int getData(){return data;} private :int data; }; int main{Demo array[6]={10,20,30},*pa=arrat+5; pa->setData(pa->getData()+15); while(pa>array){ int d=(pa--)->getData(); pa->setData(d+pa->getData()); cout<getData()<<".";}return 0; }
时间: 2023-11-27 07:50:31 浏览: 78
这段程序有一些语法错误。下面是已经修复后的代码:
```
#include <iostream>
using namespace std;
class Demo{
public:
Demo(){data=1;}
Demo(int d):data(d){}
void setData(int d){data=d;}
int getData(){return data;}
private:
int data;
};
int main(){
Demo array[6]={10,20,30},*pa=array+5;
pa->setData(pa->getData()+15);
while(pa>array){
int d=(pa--)->getData();
pa->setData(d+pa->getData());
cout<<pa->getData()<<".";
}
return 0;
}
```
程序的输出结果为:
```
45.35.20.
```
解释如下:
- 首先创建了一个包含6个Demo对象的数组array,其中前三个对象的data分别为10、20和30。
- 创建了一个指向array+5的指针pa,即指向最后一个元素。
- 对pa所指向的对象,即最后一个元素,执行了setData(pa->getData()+15),即把最后一个元素的data值加上15。
- 进入while循环,先执行了(pa--)->getData(),即先取出当前指向的元素的data值(35),然后将指针pa往前移动一个位置,指向倒数第二个元素。
- 接着执行pa->setData(d+pa->getData()),即将当前指向的元素的data值设置为之前取出的35和当前元素的data值相加的结果(20+35=55)。
- 最后输出当前指向的元素的data值,即55,以及一个点号。
- 循环继续,重复以上步骤,直到指针pa指向数组的第一个元素为止。
阅读全文