用户:
留梦灵溪查看:2 回复:8 评论:2 创建时间:2023-03-30T08:34:23
提问一下,我这下面哪块出错了,为什么代码运行输入两行后会强制中断

wycfgqykqlyy#include<iostream>
#include<iomanip>
using namespace std;
double s;
int n;
int main() {
cin>>n;
cout<<fixed<<setprecision(1);
if(n>=30) {
cout<<n*1.0;
} else {
if(n<=29 && n>=20) {
cout<<n*1.2;
} else {
if(n<=19 && n>=10) {
cout<<n*1.5;
} else {
if(n<10) {
cout<<n*1.8;
}
}
}
}
return 0;
}
点赞0
评论
留梦灵溪我这里出错其实不是重载函数的问题,而是没给输入的数组一个默认的长度,在原题里面我给类中的私有赋了两个值,一个是长度int len,另一个是指针int *p,要用指针构建数组的话就需要先判断原来数组是否存在,然后用先输入的len给p构建new 数组我大概是这么理解的
点赞0
评论
留梦灵溪附一下更改后的代码
istream& operator>>(istream & in,SortedArray& sa){
in >>sa.len;
if(sa.p){
delete []sa.p;
}
if (sa.len>0)
{
sa.p=new int[sa.len];
}
else{
sa.p=nullptr;
}
for (int i = 0; i < sa.len; i++)
{
in >>sa.p[i];
}
return in;
};点赞0
评论