題目一:統計陣列中能被 5 整除的個數、列出能被 3 整除的元素
// 返回能被 5 整除的個數
int count_div5(const int *arr, int n)
{
int cnt = 0;
for (int i = 0; i < n; i++)
if (arr[i] % 5 == 0) cnt++;
return cnt;
}
// 將能被 3 整除的元素複製到 out,返回複製個數
int filter_div3(const int *arr, int n, int *out)
{
int cnt = 0;
for (int i = 0; i < n; i++)
if (arr[i] % 3 == 0)
out[cnt++] = arr[i];
return cnt;
}
題目二:學生成績管理 (平行陣列)
// 計算平均分
float average_score(const float *scores, int n)
{
float sum = 0;
for (int i = 0; i < n; i++) sum += scores[i];
return n ? sum / n : 0;
}
// 依學號查詢成績,找不到返回 -1
float query_score(int target_id, const int *ids, const float *scores, int n)
{
for (int i = 0; i < n; i++)
if (ids[i] == target_id)
return scores[i];
return -1;
}
主程式測試架構
int main()
{
int nums[] = {101, 102, 103, 104, 105};
float scores[] = {85.5, 90.0, 78.5, 92.0, 88.0};
int n = 5;
printf("平均: %.1f\n", average_score(scores, n));
printf("學號 103 成績: %.1f\n", query_score(103, nums, scores, n));
int div3[10];
int c3 = filter_div3(nums, n, div3);
printf("能被3整除: ");
for (int i = 0; i < c3; i++) printf("%d ", div3[i]);
return 0;
}