#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//第二題
void calcu(int);//處理和分數相關的功能
int main()
{
int num; //小組人數
printf("小組共有多少名同學?");
scanf("%d", &num);
if (num >= 50)
{
printf("輸入人超過50,輸入錯誤");
exit(0);
}
else
calcu(num);
return 0;
}
void calcu(int num)//輸入num名同學的成績
{
double std_dev = 0, ave, temp_sum = 0;//標準差
int count_max = 0, count_min = 0,sum=0;
int max_score[50], min_score[50];
int score[50]; //保存成績的數組,不會超過50名
int i,temp_score;
int max, min;
printf("請輸入學生成績:\n");
for (i = 0; i < num; i++)
{
printf("請輸入第%d名學生的成績:", i + 1);
scanf("%d", &temp_score);
if (temp_score >= 0 && temp_score <= 100)
score[i] = temp_score;
else
{
printf("分數輸入範圍錯誤,請重新輸入\n");
i--;
}
}
max = score[0];
min = score[0];
for (i = 0; i < num; i++)
{
sum += score[i];
if (score[i] >= max)
max = score[i];
if (score[i] <= min)
min = score[i];
}
ave = sum / num;
printf("最高成績爲%d,最低成績爲%d,平均成績爲%.1lf\n",max,min,ave);
for (i = 0; i < num; i++)
{
if (score[i] == max)
{
max_score[count_max] = i;
count_max++;
}
if (score[i] == min)
{
min_score[count_min] = i;
count_min++;
}
}
printf("取得最高分%d分共%d人,他們的學號是:", max, count_max);
for (i = 0; i < count_max; i++)
printf("%d ", max_score[i]+1);
printf("\n");
printf("取得最低分%d分共%d人,他們的學號是:", min, count_min);
for (i = 0; i < count_min; i++)
printf("%d ", min_score[i]+1);
printf("\n");
for (i = 0; i < num; i++)
{
temp_sum += (score[i] - ave)*(score[i] - ave);
}
temp_sum /= num - 1;
std_dev = sqrt(temp_sum);
printf("標準偏差爲%.3lf\n", std_dev);
}
提高篇16-19第二題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.