利用动态内存分配,要求能处理任意人数的成绩,总人数由用户输入,然后输入对应数量的成绩,最后根据根据输入的号码(最小号码是1)输出对应学生的成绩,当输入号码不合法时,输出Error。 注: 第一个数为总人数 随后是相应数量的成绩 最后一个是输入的查询号码 效果如下: 输入: 10 78 86.5 65 99 91 77.5 56 72 84 88 4 输出:99
时间: 2024-03-05 21:53:08 浏览: 55
以下是实现该功能的C++代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
double* scores = new double[n]; // 动态分配存储成绩的数组
for (int i = 0; i < n; i++) {
cin >> scores[i];
}
int id;
cin >> id;
if (id < 1 || id > n) { // 判断输入的号码是否合法
cout << "Error" << endl;
} else {
cout << scores[id-1] << endl; // 输出对应学生的成绩
}
delete[] scores; // 释放成绩数组
return 0;
}
```
代码中使用了一维动态数组来存储学生成绩,首先动态分配了一个长度为n的double类型数组,然后在循环中读入所有成绩。最后根据输入的号码输出对应学生的成绩。需要注意的是,当输入的号码不合法时,需要输出Error。最后记得释放动态分配的内存。
相关问题
利用动态内存分配,要求能处理任意人数的成绩,总人数由用户输入,然后输入对应数量的成绩,最后根据根据输入的号码(最小号码是1)输出对应学生的成绩,当输入号码不合法时,输出Error。
以下是实现上述要求的代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入学生人数:";
cin >> n;
double* scores = new double[n];
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个学生的成绩:";
cin >> scores[i];
}
int id;
cout << "请输入要查询的学生号码:";
cin >> id;
if (id < 1 || id > n) {
cout << "Error" << endl;
} else {
cout << "第" << id << "个学生的成绩为:" << scores[id-1] << endl;
}
delete[] scores;
return 0;
}
```
首先,程序通过 `cin` 读取用户输入的学生人数 `n`,然后使用 `new` 动态分配大小为 `n` 的 double 数组 `scores` 来保存每个学生的成绩。
接下来,使用 `for` 循环读取每个学生的成绩,并存储到 `scores` 数组中。在循环中,使用 `cout` 输出提示信息,让用户输入每个学生的成绩。
然后,程序读取用户输入的要查询的学生号码 `id`,并进行条件判断。如果 `id` 的值小于 1 或者大于 `n`,则输出 "Error";否则,输出该学生的成绩。
最后,使用 `delete[]` 释放 `scores` 数组占用的内存空间,并返回 0 退出程序。
用c++写利用动态内存分配,要求能处理任意人数的成绩,总人数由用户输入,然后输入对应数量的成绩,最后根据根据输入的号码(最小号码是1)输出对应学生的成绩,当输入号码不合法时,输出Error。 注: 第一个数为总人数 随后是相应数量的成绩 最后一个是输入的查询号码 效果如下: 输入: 10 78 86.5 65 99 91 77.5 56 72 84 88 4 输出:99
好的,我理解了你的问题。下面是 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
int main() {
int n; // 总人数
cout << "请输入总人数:" << endl;
cin >> n;
// 动态分配数组空间
double* scores = new double[n];
for (int i = 0; i < n; i++) {
cout << "请输入第 " << i + 1 << " 个人的成绩:" << endl;
cin >> scores[i];
}
int num; // 查询号码
cout << "请输入查询号码:" << endl;
cin >> num;
// 输出对应学生的成绩
if (num >= 1 && num <= n) {
cout << scores[num-1] << endl;
} else {
cout << "Error" << endl;
}
// 释放动态分配的数组空间
delete[] scores;
return 0;
}
```
程序首先要求用户输入总人数,然后动态分配一个 double 类型的数组空间,大小为总人数。接着让用户输入每个人的成绩,保存到数组中。最后要求用户输入查询号码,如果号码合法,就输出对应学生的成绩;否则输出 "Error"。最后释放动态分配的数组空间。
这样就实现了你的要求。如果还有其他问题,请随时提出。
阅读全文