題目1:學生成績管理系統
某班有不超過 100 人(具體人數由鍵盤輸入)參加某門課程的考試,編程實作如
下功能的學生成績管理系統:(用結構體陣列)
(1)錄入每個學生的學號、姓名和考試成績;
(2)計算課程的總分和平均分;
(3) 輸出每個學生的學號、姓名、考試成績;
(4) 按成績由高到低排出名次表;(自學排序演算法)
(5)按學號查詢學生排名及其考試成績。
其中:(1)、(2)、(3)為必做,(4)、(5)選做, 鼓勵呼叫函式和檔案, 實作相
應內容可額外加分。
uj5u.com熱心網友回復:
剛好有些閑時間,順手寫了下,供參考
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 100
typedef struct student
{
int ID;
char name[20];
double score;
}Student;
//錄入資訊
void InputStudent(Student *stu, int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("輸入第%d個學生的資訊:\n", i + 1);
scanf("%d%s%lf", &stu[i].ID, stu[i].name, &stu[i].score);
}
}
//計算總分
double TotalSocre(Student *stu, int n)
{
double sum = 0.0;
int i;
for (i = 0; i < n; i++)
{
sum += stu[i].score;
}
return sum;
}
//輸出
void PrintStudent(Student *stu, int n)
{
int i;
printf("學號\t姓名\t成績\n");
for (i = 0; i < n; i++)
{
printf("%d\t%s\t%.2f\n", stu[i].ID, stu[i].name, stu[i].score);
}
}
//排序
void SortStudent(Student *stu, int n)
{
int i, j;
Student tmp = { 0 };
for (i = 0; i < n; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (stu[j].score < stu[j + 1].score)
{
tmp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = tmp;
}
}
}
}
//按學號查詢
void QueryScore(Student *stu, int n)
{
int i, tmp;
printf("輸入要查詢的學號:\n");
scanf("%d", &tmp);
for (i = 0; i < n; i++)
{
if (stu[i].ID == tmp)
{
printf("學號\t姓名\t成績\n");
printf("%d\t%s\t%.2f\n", stu[i].ID, stu[i].name, stu[i].score);
return;
}
}
printf("學號為%d的學生不存在!\n", tmp);
}
int main()
{
int n;
double sum, avge;
Student s[N] = { 0 };
printf("輸入學生人數:\n");
scanf("%d", &n);
InputStudent(s, n);
sum = TotalSocre(s, n);
avge = sum / n;
printf("\n--------------------\n");
PrintStudent(s, n);
printf("\n--------------------\n");
printf("總分:%.2f 平均分:%.2f\n", sum, avge);
printf("\n--------------------\n");
SortStudent(s, n);
PrintStudent(s, n);
printf("\n--------------------\n");
QueryScore(s, n);
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/239347.html
標籤:C語言
上一篇:C語言大作業,真不會做了
下一篇:一個設計問題咨詢
