第六章函数-2作业题解
一、有一个一维数组,内放10个运动员的年龄,编写一个函数,当主函数调用此函数后,能求出最大年龄、最小年龄和平均年龄。
#include <stdio.h>
void home6_2_1(int a[], int n) {
int temp, sum = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = 0; i < n; i++) {
sum += a[i];
}
printf("最大年龄:%d,最小年龄:%d,平均年龄:%.2f", a[9], a[0], sum/10.0);
}
int home62_1() {
int a[10] = { 22,25,32,19,22,27,29,23,26,25 }, n = 10;
home6_2_1(a, n);
return 0;
}
二、设有10名歌手(编号为1-10)参加歌咏比赛,另有6名评委打分,每位歌手的得分从键盘输入:先提示“Please enter singer’s score: ”,再依次输入第1个歌手的6位评委打分(满分10分,分数为实数,分数之间使用空格分隔),第2个歌手的6位评委打分…以此类推。编写函数实现如下功能:
(1)计算出每位歌手的最终得分(扣除一个最高分和一个最低分后的平均分,最终得分保留2位小数)。
(2)按最终得分由高到低的顺序显示每位歌手的编号和最终得分。
(3)按歌手编号查找该歌手的排名。
提示:使用结构体数组。
#include <stdio.h>
#include <string.h>
struct Singer
{
int num;
int score[6];
float finalscore;
};
void home6_2_2(struct Singer player[10]) {
int temp;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 6; j++) {
for (int k = 0; k < 5; k++) {
if (player[i].score[k] > player[i].score[k + 1]) {
temp = player[i].score[k];
player[i].score[k] = player[i].score[k + 1];
player[i].score[k + 1] = temp;
}
}
}
}
for (int i = 0; i < 10; i++) {
player[i].finalscore = (player[i].score[1] + player[i].score[2] + player[i].score[3] + player[i].score[4]) / 4.0;
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 9; j++) {
if (player[j].finalscore < player[j + 1].finalscore) {
struct Singer tempdata = player[j];
player[j] = player[j + 1];
player[j + 1] = tempdata;
}
}
}
for (int i = 0; i < 10; i++) {
printf("歌手编号:%d,最终得分:%.2f。\n", player[i].num, player[i].finalscore);
}
}
void home6_2_2_search(struct Singer player[10], int num) {
for (int i = 0; i < 10; i++) {
if (player[i].num == num) {
printf("该歌手排名为:%d", i + 1);
}
}
}
int main() {
int number;
struct Singer player[10];
printf("Please enter singer’s score: \n");
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 6; j++) {
scanf("%d", &player[i].score[j]);
}
}
for (int i = 0; i < 10; i++) {
player[i].num = i + 1;
}
home6_2_2(player);
printf("请输入歌手编号:\n");
scanf("%d", &number);
home6_2_2_search(player, number);
return 0;
}