.有三个学生,各四门课,定义二维数组score[3][4]来存放成绩。要求找出其中有不及格课程的学生并输出该学生的全部成绩。要求编写返回指针的函数search来查询学生成绩。 3.
时间: 2023-11-27 14:00:05 浏览: 29
好的,问题已经记录。下面是对你的问题的回答:
可以使用以下代码实现要求,其中返回的指针指向二维数组中有不及格课程的学生的全部成绩:
```
#include <iostream>
using namespace std;
int** search(int (*score)[4], int n, int m) {
int count = 0;
for (int i = 0; i < n; i++) {
bool flag = false;
for (int j = 0; j < m; j++) {
if (score[i][j] < 60) {
flag = true;
break;
}
}
if (flag) {
count++;
}
}
if (count == 0) {
return NULL;
}
int** ret = new int*[count];
count = 0;
for (int i = 0; i < n; i++) {
bool flag = false;
for (int j = 0; j < m; j++) {
if (score[i][j] < 60) {
flag = true;
break;
}
}
if (flag) {
ret[count] = new int[m];
for (int j = 0; j < m; j++) {
ret[count][j] = score[i][j];
}
count++;
}
}
return ret;
}
int main() {
int score[3][4] = {{70, 80, 90, 60}, {50, 60, 70, 80}, {40, 50, 60, 70}};
int** result = search(score, 3, 4);
if (result == NULL) {
cout << "No student has failed courses." << endl;
} else {
for (int i = 0; i < 3; i++) {
if (result[i] != NULL) {
cout << "Student " << i+1 << ": ";
for (int j = 0; j < 4; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}
}
}
return 0;
}
```
其中,函数search的参数score是二维数组的指针,n和m分别是二维数组的行数和列数。函数中先遍历二维数组,找出有不及格课程的学生的数量。如果没有这样的学生,则返回NULL。如果存在这样的学生,则根据数量动态创建一个二维数组,用于存放这些学生的全部成绩。再次遍历二维数组,将符合条件的学生的全部成绩存入动态创建的二维数组中。最后返回这个动态创建的二维数组的指针。
在主函数中,先定义一个二维数组score用于存放成绩。然后调用函数search,得到一个指向动态创建的二维数组的指针result。如果这个指针为NULL,则说明没有学生不及格,输出相应的信息。否则,逐个输出有不及格课程的学生的全部成绩。
请问是否满意我的回答呢?