*2、 分别求取王华、李阳两同学三门课(数学、外语、计算机)的平均成绩,并作出评价( 大于80为优秀、大于60为 合格、小于60为不合格)。(要求: 使用指针函数、素。_函数指针、指针数组。_.数组指钍).
时间: 2023-08-31 18:22:22 浏览: 49
### 回答1:
王华的平均成绩为:(数学+外语+计算机)/3
李阳的平均成绩为:(数学+外语+计算机)/3
使用指针函数和数组指针的代码如下:
```c
#include <stdio.h>
#define COURSE_NUM 3
void get_average(int *scores, int num, float (*average)[COURSE_NUM]);
void evaluate(float (*average)[COURSE_NUM]);
int main()
{
int scores[2][COURSE_NUM] = {{90, 85, 95}, {70, 80, 75}};
float average[2][COURSE_NUM];
get_average(scores[0], COURSE_NUM, &average[0]);
get_average(scores[1], COURSE_NUM, &average[1]);
evaluate(&average[0]);
evaluate(&average[1]);
return 0;
}
void get_average(int *scores, int num, float (*average)[COURSE_NUM])
{
int i;
float sum = 0;
for (i = 0; i < num; i++)
{
sum += *(scores + i);
}
**average = sum / num;
*average += 1;
}
void evaluate(float (*average)[COURSE_NUM])
{
int i;
int flag = 0;
for (i = 0; i < COURSE_NUM; i++)
{
if (*(*average + i) < 60)
{
flag = 1;
break;
}
else if (*(*average + i) < 80)
{
continue;
}
else
{
flag = 2;
}
}
switch (flag)
{
case 0:
printf("优秀\n");
break;
case 1:
printf("不合格\n");
break;
case 2:
printf("合格\n");
break;
}
}
```
使用函数指针和指针数组的代码如下:
```c
#include <stdio.h>
#define COURSE_NUM 3
void get_average(int *scores, int num, float **average);
void evaluate(float **average);
int main()
{
int scores[2][COURSE_NUM] = {{90, 85, 95}, {70, 80, 75}};
float *average[2];
get_average(scores[0], COURSE_NUM, &average[0]);
get_average(scores[1], COURSE_NUM, &average[1]);
evaluate(&average[0]);
evaluate(&average[1]);
return 0;
}
void get_average(int *scores, int num, float **average)
{
int i;
float sum = 0;
*average = (float *)malloc(num * sizeof(float));
for (i = 0; i < num; i++)
{
sum += *(scores + i);
}
**average = sum / num;
}
void evaluate(float **average)
{
int i;
int flag = 0;
for (i = 0; i < COURSE_NUM; i++)
{
if (*(*average + i) < 60)
{
flag = 1;
break;
}
else if (*(*average + i) < 80)
{
continue;
}
else
{
flag = 2;
}
}
switch (flag)
{
case 0:
printf("优秀\n");
break;
case 1:
printf("不合格\n");
break;
case 2:
printf("合格\n");
break;
}
}
```
以上两种方法都可以求取平均成绩并作出评价。
### 回答2:
为了求取王华和李阳两位同学的平均成绩,我们可以使用指针数组和指针函数来进行操作。
首先,我们定义一个包含3个指针的指针数组,用来存储王华和李阳两位同学的数学、外语和计算机成绩。然后,我们为每门课程分别定义一个指针函数,用来计算每个同学的平均成绩。
下面是具体的实现过程:
```cpp
#include <iostream>
// 定义指针数组,存储两位同学的成绩
float* scores[2];
// 计算平均成绩的函数
float getAverage(float* scores) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += scores[i];
}
return sum / 3;
}
int main() {
// 输入王华的三门课成绩
float w_score_math, w_score_foreign, w_score_computer;
std::cout << "请输入王华的数学成绩:";
std::cin >> w_score_math;
std::cout << "请输入王华的外语成绩:";
std::cin >> w_score_foreign;
std::cout << "请输入王华的计算机成绩:";
std::cin >> w_score_computer;
// 输入李阳的三门课成绩
float l_score_math, l_score_foreign, l_score_computer;
std::cout << "请输入李阳的数学成绩:";
std::cin >> l_score_math;
std::cout << "请输入李阳的外语成绩:";
std::cin >> l_score_foreign;
std::cout << "请输入李阳的计算机成绩:";
std::cin >> l_score_computer;
// 分配空间,并将成绩存入指针数组中
scores[0] = new float[3]{w_score_math, w_score_foreign, w_score_computer};
scores[1] = new float[3]{l_score_math, l_score_foreign, l_score_computer};
// 求取平均成绩并作出相应评价
for (int i = 0; i < 2; i++) {
float average = getAverage(scores[i]);
std::cout << "第" << (i+1) << "位同学的平均成绩为:" << average << ",评价为:";
if (average > 80) {
std::cout << "优秀" << std::endl;
} else if (average > 60) {
std::cout << "合格" << std::endl;
} else {
std::cout << "不合格" << std::endl;
}
}
// 释放内存
delete[] scores[0];
delete[] scores[1];
return 0;
}
```
运行程序后,输入两位同学的各门课成绩,即可得到评价结果。