用VS2022写如下代码,哪里错了#include<iostream> using namespace std; class Product { public: Product(int a, int b, int c) : num(n), quantity(q), price(p) {}; void total(); static float average(); static float average(); private: int num; int quantity; float price; static float discount; static float sum; static int n; }; void Product::total() { float rate = 1.0; if (quantity > 10) rate = 0, 98 * rate; sum = sum + quantity * price * rate * (1 - discount); n = n + quantity; } void Product::display() { cout << sum << endl; cout << average() << endl; } float Private::avetage() { return(sum / n); } float Product::discount = 0.05; float Product::sum = 0; int Product::n = 0; int main() { ProductProd[3] = { Product(101, 5, 23, 5), Product(102,12,24.56), Product(103,100,21,5) }; for (int i = 0; i < 3; i++) Prod[i].total(); Product::display(); return 0; }
时间: 2024-01-03 22:03:59 浏览: 87
这段代码有多处错误,以下是修正后的代码:
```cpp
#include<iostream>
using namespace std;
class Product {
public:
// 修正构造函数的参数列表
Product(int n, int q, float p) : num(n), quantity(q), price(p) {};
void total();
static void display(); // 修正函数名和返回类型
static float average();
private:
int num;
int quantity;
float price;
static float discount;
static float sum;
static int n;
};
void Product::total() {
float rate = 1.0;
if (quantity > 10)
rate = 0.98; // 修正语法错误
sum = sum + quantity * price * rate * (1 - discount);
n = n + quantity;
}
void Product::display() {
cout << sum << endl;
cout << average() << endl;
}
float Product::average() { // 修正函数名和作用域
return(sum / n);
}
float Product::discount = 0.05;
float Product::sum = 0;
int Product::n = 0;
int main() {
Product Prod[3] = { // 修正数组名称
Product(101, 5, 23.5),
Product(102, 12, 24.56),
Product(103, 100, 21.5)
};
for (int i = 0; i < 3; i++)
Prod[i].total();
Product::display(); // 修正语法错误
return 0;
}
```
修正后的代码主要问题如下:
1. 构造函数的参数列表错误。
2. `display()` 函数名错误,应该为 `Product::display()`。
3. `average()` 函数名错误,应该为 `Product::average()`。
4. `average()` 函数作用域错误,应该为 `Product::average()`。
5. `rate = 0, 98 * rate;` 语句错误,应该为 `rate = 0.98;`。
6. 数组名称错误,应该为 `Prod`。
7. `Product::display()` 语法错误,应该为 `Product::display();`。
阅读全文