C語言實現學生獎學金評定系統(tǒng)
本文實例為大家分享了C語言實現學生獎學金評定系統(tǒng)的具體代碼,供大家參考,具體內容如下
說明:
學生綜合積分由文化積分和德育積分構成,文化積分是所有門課程成績總和除以課程門數(平均分),德育積分是參加各類活動的積分,學生綜合積分=文化積分×70%+德育積分×30%。按照學生綜合積分排名,獲得一等獎學金1名學生,獲得二等獎學金2名學生,獲得三等獎學金3名學生,項目要求輸入班級學生成績信息,輸出獲得獎學金的學生名單。已知學生成績信息包括學號、姓名、英語成績、網絡成績、C語言成績、數據庫成績、文化積分、德育積分和綜合積分,運行結果如圖所示。

實例分析與實現
首先,按照學生成績信息的組成定義結構體,輸入各門課程成績和德育積分,根據已知的公式,求出文化積分和綜合積分;然后,按照學生綜合積分從高到低進行排名,并輸出排名結果;最后,輸出下標為0的學生獲得一等獎學金,下標為1和2的學生獲得二等獎學金,下標為3、4、5的學生獲得三等獎學金。具體算法如下。
① 定義結構體類型student。
② 利用定義的結構體類型定義一個十名學生的數組。
③ 利用for循環(huán)輸入十名學生的各門課成績,計算學生文化積分和綜合積分。
④ 利用for循環(huán)嵌套對學生的成績按總積分由高到低進行排序。
⑤ 打印總積分從高到低的排序結果、獲得獎學金學生名單。
⑥實現輸出每門課程不及格學生名單。
#include <stdio.h>
#include <windows.h>
#include<string.h>
#define NUM 10 ?//修改NUM就可以加學生數量
struct student_scores{//定義學生屬性
?? ?int ID;//學號
?? ?char name[20];//姓名
?? ?float english;//英語
?? ?float net;//網絡
?? ?float c_;//c語言
?? ?float sql_;//數據庫
?? ?float ave;//文化積分
?? ?float deyu;//德育 ?德育積分是參加各類活動的積分
?? ?float zonghe;//綜合?? ??? ?
};
//學生綜合積分由文化積分和德育積分構成,文化積分是所有門課程成績總和除以課程門數(平均分),
//德育積分是參加各類活動的積分,學生綜合積分=文化積分×70%+德育積分×30%。按照學生綜合積分排名,
//獲得一等獎學金1名學生,獲得二等獎學金2名學生,獲得三等獎學金3名學生,項目要求輸入班級學生成績信息,輸出獲得獎學金的學生名單。
void main()
{?? ?
?? ?struct student_scores student[NUM],temp;//定義一個結構體名稱數組 10個學生
?? ?int i,k;
?? ?printf("請按1鍵開始錄入\n");?? ?
?? ?printf("請輸入學號、姓名、英語成績、網絡成績、C語言成績、數據庫成績、德育積分>:\n");?? ?
?? ?printf("-----------------------------------------------------------------------\n");
?? ?for( i=0;i<NUM;i++)//動態(tài)錄入
?? ?{?? ??? ??? ?
?? ??? ?scanf("%d ",&student[i].ID);
?? ??? ?scanf("%s ",&student[i].name); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ??? ?scanf("%f %f %f %f %f",&student[i].english,&student[i].net,&student[i].c_,&student[i].sql_,&student[i].deyu);
?? ??? ?student[i].ave=(student[i].english+student[i].net+student[i].c_+student[i].sql_)/4;//文化積分(平均分)
?? ??? ?student[i].zonghe=student[i].ave*70/100+student[i].deyu*30/100;
?? ?}
?? ?printf("-----------------------------------------------------------------------\n");?? ?
?? ?printf("\n");
//?? ?system("cls");//清屏
?? ?for( i=0;i<NUM-1;i++)
?? ?{
?? ??? ?for(k=0;k<NUM-1-i;k++)
?? ??? ?{
?? ??? ??? ?if(student[k].zonghe<student[k+1].zonghe)
?? ??? ??? ?{
?? ??? ??? ??? ?temp.ID = student[k].ID;
?? ??? ??? ??? ?for(i=0;i<20;i++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?temp.name[i] = student[k].name[i];
?? ??? ??? ??? ?}
?? ??? ??? ??? ?temp.ave = student[k].ave;
?? ??? ??? ??? ?temp.deyu = student[k].deyu;
?? ??? ??? ??? ?temp.zonghe = student[k].zonghe;
?? ??? ??? ??? ?
?? ??? ??? ??? ?student[k].ID = student[k+1].ID;
?? ??? ??? ??? ?for(i=0;i<20;i++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?student[k].name[i] = student[k+1].name[i];
?? ??? ??? ??? ?}
?? ??? ??? ??? ?student[k].ave = student[k+1].ave;
?? ??? ??? ??? ?student[k].deyu = student[k+1].deyu;
?? ??? ??? ??? ?student[k].zonghe = student[k+1].zonghe;
?? ??? ??? ??? ?student[k+1].ID = temp.ID;
?? ??? ??? ??? ?for(i=0;i<20;i++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?student[k+1].name[i] = temp.name[i];
?? ??? ??? ??? ?}
?? ??? ??? ??? ?student[k+1].ave =temp.ave;
?? ??? ??? ??? ?student[k+1].deyu =temp.deyu;
?? ??? ??? ??? ?student[k+1].zonghe = temp.zonghe;
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?printf("成績排名<學號、姓名、文化積分、德育積分、總積分>:\n");?? ?
?? ?printf("-----------------------------------------------------------------------\n");
?? ?printf("\n");
?? ?for(i=0;i<NUM;i++)
?? ?{
?? ??? ?printf("%d ",student[i].ID);
?? ??? ?printf("%s ",student[i].name); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ??? ?printf("%f %f %f\n",student[i].ave,student[i].deyu,student[i].zonghe);
?? ?}
?? ?printf("-----------------------------------------------------------------------\n");
?? ?printf("獎學金名單如下:\n");?? ?
?? ?printf("-----------------------------------------------------------------------\n");
?? ?printf("一等獎學金獲得者:%s\n",student[0].name);
?? ?printf("二等獎學金獲得者:%s %s\n",student[1].name,student[2].name);
?? ?printf("三等獎學金獲得者:%s %s %s\n",student[3].name,student[4].name,student[5].name);
?? ?system("pause");
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

