C语言学生成绩管理系统
1.学生成绩管理系统V1.0
某班有最多不超过40人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩,课程总分和平均分。
2.学生成绩管理系统V1.1
在学生成绩管理系统V1.0的基础上,要求程序运行后先显示如下菜单,并提示用户输入选项:
(1)Append record
(2)Calculate total and average score of course
(3)Sort in descending order by score
(4)Sort in ascending order by number
(5)Search by number
(6)Statistic analysis
(7)List record
(8)Exit
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define N 40 4 void ReadScore(int score[],long num[],int n); /*输入成绩*/ 5 void ScoreSum(int score[],int n); /*计算总分*/ 6 void ScoreAverage(int score[],int n); /*计算平均分*/ 7 void DataSort(int score[],long num[],int n); /*按成绩由高到低排名*/ 8 void PrintDataSort(int score[],long num[],int n);/*按成绩由高到低输出*/ 9 void NumSort(int score[],long num[],int n);/*按学号由小到大排名*/ 10 void PrintNumSort(int score[],long num[],int n);/*按学号由小到大输出*/ 11 void Search(int score[],long num[],int n); /*按学号查询排名及考试成绩*/ 12 void Analysis(int score[],int n); /*统计类别人数及百分比*/ 13 void List(int score[],long num[],int n); /*输出每个学生的学号、考试成绩,课程总分和平均分*/ 14 15 int main(void) { 16 int score[N],n,m; 17 long num[N]; 18 do { 19 printf("1.Append record\n"); 20 printf("2.Calculate total and average score of course\n"); 21 printf("3.Sort in descending order by score\n"); 22 printf("4.Sort in ascending order by number\n"); 23 printf("5.Search by number\n"); 24 printf("6.Statistic analysis\n"); 25 printf("7.List record\n"); 26 printf("8.Exit\n"); 27 printf("Input serial number:"); 28 scanf("%d",&m); 29 switch (m) { 30 case 1: { 31 printf("Input n:"); 32 scanf("%d",&n); 33 ReadScore(score,num,n); 34 break; 35 } 36 case 2: { 37 ScoreSum(score,n); 38 ScoreAverage(score,n); 39 break; 40 } 41 case 3: { 42 DataSort(score,num,n); 43 PrintDataSort(score,num,n); 44 break; 45 } 46 case 4: { 47 NumSort(score,num,n); 48 PrintNumSort(score,num,n); 49 break; 50 } 51 case 5: { 52 Search(score,num,n); 53 break; 54 } 55 case 6: { 56 Analysis(score,n); 57 break; 58 } 59 case 7: { 60 List(score,num,n); 61 break; 62 } 63 case 8:{ 64 printf("Exit"); 65 break; 66 } 67 default: 68 printf("Please enter it again."); 69 } 70 printf("\n"); 71 } while(m!=8); 72 return 0; 73 } 74 75 void ReadScore(int score[],long num[],int n) { 76 int i; 77 for(i=0; i<n; i++) { 78 printf("Input ID and score:"); 79 scanf("%ld%d",&num[i],&score[i]); 80 } 81 } 82 83 void ScoreSum(int score[],int n) { 84 int i,sum=0; 85 for(i=0; i<n; i++) { 86 sum+=score[i]; 87 } 88 printf("sum score is %d\n",sum); 89 } 90 91 void ScoreAverage(int score[],int n) { 92 int i,sum=0; 93 for(i=0; i<n; i++) { 94 sum+=score[i]; 95 } 96 printf("average score is %.2f\n",(float)sum/n); 97 } 98 99 void DataSort(int score[],long num[],int n) { 100 int i,j,temp,k; 101 for(i=0; i<n-1; i++) { 102 for(j=i+1; j<n; j++) { 103 if(score[j]>score[i]) { 104 temp=score[j]; 105 score[j]=score[i]; 106 score[i]=temp; 107 k=num[j]; 108 num[j]=num[i]; 109 num[i]=k; 110 } 111 } 112 } 113 } 114 115 void PrintDataSort(int score[],long num[],int n) { 116 int i; 117 for(i=0; i<n; i++) { 118 printf("%10ld%4d\n",num[i],score[i]); 119 } 120 printf("\n"); 121 } 122 123 void NumSort(int score[],long num[],int n) { 124 int i,j,temp,k; 125 for(i=0; i<n-1; i++) { 126 for(j=i+1; j<n; j++) { 127 if(num[j]<num[i]) { 128 temp=score[j]; 129 score[j]=score[i]; 130 score[i]=temp; 131 k=num[j]; 132 num[j]=num[i]; 133 num[i]=k; 134 } 135 } 136 } 137 } 138 139 void PrintNumSort(int score[],long num[],int n) { 140 int i; 141 for(i=0; i<n; i++) { 142 printf("%10ld%4d\n",num[i],score[i]); 143 } 144 printf("\n"); 145 } 146 147 void Search(int score[],long num[],int n) { 148 int i,m=-1,count=1; 149 long t; 150 printf("Input ID:"); 151 scanf("%ld",&t); 152 do{ 153 m++; 154 }while(t!=num[m]); 155 for(i=0; i<n; i++) { 156 if(score[i]>score[m]) 157 count+=1; 158 } 159 printf("score is %d,rank is %d\n",score[m],count); 160 } 161 162 void Analysis(int score[],int n) { 163 int i; 164 int a=0,b=0,c=0,d=0,e=0; 165 for(i=0; i<n; i++) { 166 if(score[i]>=90) 167 a+=1; 168 else if(score[i]>=80&&score[i]<90) 169 b+=1; 170 else if(score[i]>=70&&score[i]<80) 171 c+=1; 172 else if(score[i]>=60&&score[i]<70) 173 d+=1; 174 else 175 e+=1; 176 } 177 printf("Excellent is %d,占 %.2f%%\n",a,(float)a*100/n); 178 printf("Good is %d,占 %.2f%%\n",b,(float)b*100/n); 179 printf("Medium is %d,占 %.2f%%\n",c,(float)c*100/n); 180 printf("Pass is %d,占 %.2f%%\n",d,(float)d*100/n); 181 printf("Failure is %d,占 %.2f%%\n",e,(float)e*100/n); 182 } 183 184 void List(int score[],long num[],int n) { 185 int i,sum=0; 186 for(i=0; i<n; i++) { 187 printf("%ld score is %d\n",num[i],score[i]); 188 sum+=score[i]; 189 } 190 printf("Sum score is %d\n",sum); 191 printf("Average score is %.2f\n",(float)sum/n); 192 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具