C语言编写程序,实现以下功能并输出:(1)函数中输入某班10个同学成绩(成绩在0到100),要求放在数组score【10】中,用循环语句输出10个人的成绩,求出最高分max,最低分min,平均分ave并输出(输出时保留1位小数);调用(2)中的函数,输出数组最终结果。(2)定义函数reverse(float s[],int n),用指针p1,p2分别指向数组首元素和最后元素,用指针操作实现数组元素逆序保存。(n为数组长度)
时间: 2024-01-28 18:03:37 浏览: 27
好的,我会根据您的要求进行回答。以下是 C 语言编写程序实现您所描述的功能:
```c
#include <stdio.h>
float reverse(float s[], int n);
// 定义函数 reverse
int main() {
float score[10];
// 定义数组 score,存放成绩
float max = 0, min = 100, sum = 0, ave;
// 定义变量 max, min, sum 和 ave 分别表示最高分,最低分,总分和平均分
printf("请输入10个同学的成绩:\n");
for (int i = 0; i < 10; i++) {
scanf("%f", &score[i]);
// 输入成绩
if (score[i] > max) {
max = score[i];
}
if (score[i] < min) {
min = score[i];
}
sum += score[i];
// 计算最高分,最低分和总分
}
ave = sum / 10;
// 计算平均分
printf("10个同学的成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%.1f ", score[i]);
// 输出成绩
}
printf("\n最高分为:%.1f\n", max);
printf("最低分为:%.1f\n", min);
printf("平均分为:%.1f\n", ave);
// 输出最高分,最低分和平均分
reverse(score, 10);
// 调用函数 reverse,将数组元素逆序保存
printf("逆序输出10个同学的成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%.1f ", score[i]);
// 输出逆序后的成绩
}
return 0;
}
float reverse(float s[], int n) {
float *p1, *p2, temp;
// 定义指针 p1, p2 和 temp
p1 = s;
p2 = s + n - 1;
// p1 指向数组首元素,p2 指向数组最后元素
while (p1 < p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
// 交换指针所指向的元素
p1++;
p2--;
// 移动指针的位置
}
return *s;
}
```
输入输出示例:
```
请输入10个同学的成绩:
80 85 90 75 95 70 65 100 88 92
10个同学的成绩为:
80.0 85.0 90.0 75.0 95.0 70.0 65.0 100.0 88.0 92.0
最高分为:100.0
最低分为:65.0
平均分为:84.0
逆序输出10个同学的成绩为:
92.0 88.0 100.0 65.0 70.0 95.0 75.0 90.0 85.0 80.0
```