题目:输入10个完整成绩,完成函数double fun1(int *score,int num)
时间: 2024-02-22 12:55:13 浏览: 96
好的,这是一个计算平均成绩的函数,具体实现如下:
```c++
double fun1(int *score, int num) {
int sum = 0;
for (int i = 0; i < num; i++) {
sum += score[i];
}
return (double)sum / num;
}
```
函数`fun1`接受两个参数:`score`和`num`,分别表示成绩数组和成绩数量。函数首先定义了一个变量`sum`用于累加成绩总和,然后使用循环遍历成绩数组,将每个成绩加到`sum`中。最后,函数返回平均成绩,计算方法是将成绩总和除以成绩数量,并强制转换为`double`类型,以确保返回值为浮点数。
相关问题
题目:输入10个完整成绩,完成函数double fun1(int *score,int num)如果输入的10个整数成绩中有小于零分或大于一百分的,不计算平均,返回-1要求成绩部分用指针完成
好的,这是一个带有错误处理的计算平均成绩的函数,具体实现如下:
```c++
double fun1(int *score, int num) {
int sum = 0;
for (int i = 0; i < num; i++) {
if (score[i] < 0 || score[i] > 100) {
// 如果成绩小于0分或大于100分,直接返回-1
return -1;
}
sum += score[i];
}
return (double)sum / num;
}
```
函数`fun1`与上一个函数的区别在于添加了错误处理的逻辑,如果成绩数组中有任何一个成绩小于0或大于100,函数会立即返回-1表示无法计算平均成绩。在循环过程中,如果发现有成绩不符合要求,就会使用`return`语句直接退出函数。如果所有成绩都符合要求,函数会返回平均成绩,计算方法与上一个函数相同。请注意,这里的成绩数组仍然是通过指针传递的。
班级共有 m个人,该班C语言的成绩存放在score(score为整数)数组中,计算该班成绩的平均分,并将小于平均分的成绩存储在一个数组中,并打印该数组的值。 要求: 1. 请编写函数fun, 它的功能是:计算平均分,并将低于平均分的成绩和相应的数组下标分别存在不同的数组中(打印语句放在主函数中),声明如下: int fun(int score[], int m, int below_score[], int below_index[]); 2. 请编写函数ReadScore,读入成绩,返回输入的有效人数,声明如下: int ReadScore(int score[]); 3. 需要对数组越界做判断,如:在输入时,直接输入-1的情况,此时显示“there are no valid scores”,并终止程序。 4. 班机最多有40人,用宏定义数组的所含最多的元素数量。 输入:每一行输入一个人的成绩,直到输入值为负数时,结束成绩的输入,并将此时拥有的成绩数量,作为班机人数,如: 45 67 98 -1 输出:打印班机的总人数,低于平均分的,低于平均分的成绩及该成绩在输入时的序号,从1开始计数,如: the number of the class:3 the number under the average score: 2 the 1th score is: 45 the 2th score is: 67
好的,以下是代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 40
int ReadScore(int score[]);
int fun(int score[], int m, int below_score[], int below_index[]);
int main() {
int score[MAX_NUM];
int below_score[MAX_NUM];
int below_index[MAX_NUM];
int m, num_below, i;
m = ReadScore(score);
if (m == 0) {
printf("there are no valid scores\n");
return 0;
}
num_below = fun(score, m, below_score, below_index);
printf("the number of the class:%d\n", m);
printf("the number under the average score: %d\n", num_below);
for (i = 0; i < num_below; i++) {
printf("the %dth score is: %d\n", below_index[i], below_score[i]);
}
return 0;
}
int ReadScore(int score[]) {
int i, s, count = 0;
printf("please input the score of each student:\n");
for (i = 0; i < MAX_NUM; i++) {
scanf("%d", &s);
if (s < 0) {
break;
}
score[i] = s;
count++;
}
if (count == 0) {
return 0;
}
return count;
}
int fun(int score[], int m, int below_score[], int below_index[]) {
int i, sum = 0, count = 0;
double avg;
for (i = 0; i < m; i++) {
sum += score[i];
}
avg = ((double) sum) / m;
for (i = 0; i < m; i++) {
if (score[i] < avg) {
below_score[count] = score[i];
below_index[count] = i + 1;
count++;
}
}
return count;
}
```
代码的思路是先通过 `ReadScore` 函数读入成绩并返回有效人数 `m`,然后通过 `fun` 函数计算平均分并将低于平均分的成绩和相应的数组下标分别存在 `below_score` 和 `below_index` 数组中,并返回低于平均分的成绩数量 `num_below`。最后在主函数中打印班级总人数 `m` 和低于平均分的成绩及相应下标。同时,还需要对数组越界做判断,如输入 -1 的情况。
阅读全文