源代碼:測試
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 #define Score_Num 35 6 7 struct Standard 8 { 9 int A; 10 int B; 11 int C; 12 int D; 13 char Correct_Answer; 14 }; 15 16 struct Standard Standard_Answer[Score_Num];//記錄標準答案 17 18 struct Stu 19 { 20 int Num;//學生學號 21 char Name[32];//學生姓名 22 char Answer[Score_Num];//準確答案 23 int Score;//學生分數 24 }; 25 26 struct Stu Student[100];//存儲學生信息 27 int Stu_Num = 0;//存儲學生數目 28 29 //---------------------------------統計標準答案------------------------ 30 void Standard_Num() 31 { 32 int i, j; 33 int tag; 34 for(i=0;i<Stu_Num;i++) 35 { 36 for(j=0; j<Score_Num; j++) 37 { 38 switch(Student[i].Answer[j]) 39 { 40 case 'A':Standard_Answer[j].A++;break; 41 case 'B':Standard_Answer[j].B++;break; 42 case 'C':Standard_Answer[j].C++;break; 43 case 'D':Standard_Answer[j].D++;break; 44 } 45 } 46 } 47 for(j=0; j<Score_Num; j++) 48 { 49 tag = Standard_Answer[j].A; 50 Standard_Answer[j].Correct_Answer = 'A'; 51 if(Standard_Answer[j].B > tag) 52 { 53 tag = Standard_Answer[j].B; 54 Standard_Answer[j].Correct_Answer = 'B'; 55 } 56 if(Standard_Answer[j].C > tag) 57 { 58 tag = Standard_Answer[j].C; 59 Standard_Answer[j].Correct_Answer = 'C'; 60 }if(Standard_Answer[j].D > tag) 61 { 62 tag = Standard_Answer[j].D; 63 Standard_Answer[j].Correct_Answer = 'D'; 64 } 65 } 66 } 67 //---------------------------------統計標準答案------------------------ 68 69 70 71 //------------------實現每次從文本文件中讀取一行----------------------- 72 char* Read_line(FILE* f, char* line) 73 { 74 75 return line; 76 } 77 //------------------實現每次從文本文件中讀取一行----------------------- 78 79 //------------------打印標準答案--------------------------------------- 80 void Standard_Print() 81 { 82 int i; 83 for(i=0; i<Score_Num; i++) 84 { 85 printf("第%d題標準答案:%c 選A的人數%d,選B的人數%d,選C的人數%d,選D的人數%d,\n", i+1, Standard_Answer[i].Correct_Answer, Standard_Answer[i].A, Standard_Answer[i].B, Standard_Answer[i].C, Standard_Answer[i].D); 86 } 87 } 88 //------------------打印標準答案--------------------------------------- 89 90 //------------------計算每一個學生的成績--------------------------------- 91 void Student_Score_Get() 92 { 93 int i, j; 94 for(i=0;i<Stu_Num;i++) 95 { 96 Student[i].Score = 0; 97 for(j=0; j<15; j++) 98 { 99 if(Student[i].Answer[j] == Standard_Answer[j].Correct_Answer) 100 Student[i].Score = Student[i].Score + 2; 101 } 102 for(j=15; j<25; j++) 103 { 104 if(Student[i].Answer[j] == Standard_Answer[j].Correct_Answer) 105 Student[i].Score = Student[i].Score + 3; 106 } 107 for(j=25; j<35; j++) 108 { 109 if(Student[i].Answer[j] == Standard_Answer[j].Correct_Answer) 110 Student[i].Score = Student[i].Score + 4; 111 } 112 } 113 } 114 //------------------計算每一個學生的成績--------------------------------- 115 116 //------------------查詢學生成績--------------------------------------- 117 void Student_Score_Look() 118 { 119 int i; 120 char name[32]={0}; 121 printf("輸入要查詢的學生的姓名:\n"); 122 scanf("%s", name); 123 for(i=0; i< Stu_Num; i++) 124 { 125 if(strcmp(name, Student[i].Name) == 0) 126 { 127 printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score); 128 } 129 } 130 } 131 //------------------查詢學生成績--------------------------------------- 132 133 134 //------------------打印全部學生信息----------------------------------- 135 void Student_All_Score_Print() 136 { 137 int i; 138 for(i=0; i< Stu_Num; i++) 139 { 140 printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score); 141 } 142 } 143 //------------------打印全部學生信息----------------------------------- 144 145 //------------------從txt中加載學生信息-------------------------------- 146 int Load_File() 147 { 148 FILE* fp; 149 int i=0; 150 int j=0; 151 char line[100][256]; 152 fp = fopen("sample.txt", "r+t"); 153 if(fp == NULL) 154 { 155 printf("文件打開失敗!\n"); 156 return -1; 157 } 158 while((fgets(line[i], 256, fp)) != NULL) 159 { 160 line[i][3] = '\0'; 161 Student[i].Num = atoi(line[i]);//獲取學號 162 for(j=4; j<10; j++)//獲取姓名 163 { 164 if(line[i][j] != ' ') 165 { 166 Student[i].Name[j-4] = line[i][j]; 167 } 168 } 169 strcpy(Student[i].Answer, &(line[i][15]));//獲取答案 170 i++; 171 Stu_Num++; 172 } 173 fclose(fp); 174 return 0; 175 } 176 //------------------從txt中加載學生信息----------------------------------- 177 178 //--------按學生成績排序,tag=1按升序排序,tag=0按降序排序----------------- 179 void Student_All_Score_Sort(const int tag) 180 { 181 int i, j; 182 struct Stu tmp; 183 for(i=0; i<Stu_Num;i++) 184 { 185 for(j=i; j<Stu_Num;j++) 186 { 187 if (Student[i].Score < Student[j].Score) 188 { 189 memcpy(&tmp, &(Student[i]), sizeof(struct Stu)); 190 memcpy(&(Student[i]), &(Student[j]), sizeof(struct Stu)); 191 memcpy(&(Student[j]), &tmp, sizeof(struct Stu)); 192 } 193 } 194 } 195 if(tag == 1) 196 { 197 printf("按升序排列學生成績:\n"); 198 for(i=Stu_Num-1; i>=0; i--) 199 { 200 printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score); 201 } 202 } 203 else 204 { 205 printf("按升序排列學生成績:\n"); 206 for(i=0; i<Stu_Num; i++) 207 { 208 printf("%d %s的成績是%d\n", Student[i].Num, Student[i].Name, Student[i].Score); 209 } 210 } 211 } 212 213 //--------按學生成績排序,tag=1按升序排序,tag=0按降序排序----------------- 214 215 216 //----------------------------------試卷分析------------------------------ 217 void Paper_Analyse() 218 { 219 int high=0, low=100; 220 int i; 221 int hege=0;//計算超過60分的學生人數 222 float sum=0, avr; 223 for(i=0; i<Stu_Num; i++) 224 { 225 sum = sum+Student[i].Score; 226 if(Student[i].Score > high) 227 high = Student[i].Score; 228 if(Student[i].Score < low) 229 low = Student[i].Score; 230 if(Student[i].Score >= 60) 231 hege++; 232 } 233 avr = sum/Stu_Num; 234 printf("最高分是:%d\n最低分是:%d\n平均分是:%f\n及格率是:%f\n", high, low, avr, hege*1.0/Stu_Num); 235 } 236 //----------------------------------試卷分析------------------------------ 237 238 239 int main() 240 { 241 int tag=1; 242 Load_File();//從文件中讀取學生信息 243 Standard_Num();//統計標準答案 244 Student_Score_Get();//計算每一個學生的分數 245 while(tag != 0) 246 { 247 tag = 0; 248 printf("**************************************************************\n"); 249 printf("1.打印標準答案\n"); 250 printf("2.根據學生姓名查詢學生信息\n"); 251 printf("3.按升序打印學生成績\n"); 252 printf("4.按降序打印學生成績\n"); 253 printf("5.打印統計信息\n"); 254 printf("0.退出系統\n"); 255 printf("請輸入你要操做的序號:\n"); 256 printf("**************************************************************\n"); 257 scanf("%d", &tag); 258 switch(tag) 259 { 260 case 1:Standard_Print();break; 261 case 2:Student_Score_Look();break; 262 case 3:Student_All_Score_Sort(0);break; 263 case 4:Student_All_Score_Sort(1);break; 264 case 5:Paper_Analyse();break; 265 case 0:return 0; 266 default:printf("輸入錯誤!請重新輸入:\n"); 267 } 268 } 269 return 0; 270 }
測試文件:spa
1 1 趙光 CADADCDCDACCCDACCBCAAACCDBBCBDDBBAD 2 2 羅志 CADBDCBCDADCABACBCCACACCAABCBDDBCAB 3 3 閆谷凡 CDCBDCCCDBDBBBCCBBCACACBAABCBDDBCAB 4 4 黃智博 CDCBDCCCDBDDABACBDCACACAAABCBDDBCCA 5 5 汪昇朗 CACBDCBCDBDCBBACBDCACCCAAABCBDDBCAB 6 6 劉奮倫 CDDBDCDCDBDAABBDDBCBCACAAABCBDDBCAB 7 7 李磊鵬 CADBDABCDBDCABCCBDBACCCAABBCBDDBCAB 8 8 高衛 DADBDDBCDBDCBCCCBDCBCACBAABCBDDADAA 9 9 周鴻韻 CADBDCCBCADCBCDCABCCCACADBBCDCDBDAA 10 10 楊建 CBDBDBBCDBDBBCCABDBACACBABBCBDAADAB 11 11 李海凱 CADBDCACDBDCBDADDADABAACBBBCBDDBCAB 12 12 李衝譜 CADBDCCCDBDCBBACBBCACACAABBCBDDBCAB 13 13 邰楊敏 CACCDCBCDBDCBCCCBDCDCACABBBCBDDBCAB 14 14 姚暢生 CBDBDCDDDBDCDCCBBDCDCCCADABCBDDACAA 15 15 禤微 CADBDABCDCDCBBCBBDBACCAAABBCBDDBCAB 16 16 丁寧 CADADCBCDBDCBDDCDCCABACABABCBDDBCDD 17 17 喬夢進 CADDDABCDBDCBBCABDBACACBDBBCBDDBCAB 18 18 張華 CADBDCBCDBDCBBCACDCACACAABBCBDDBCAB 19 19 代怡康 CADBDABBDBDCBCDABDCBCCCAAABCBDDBCAB 20 20 張文劍 CABDACCCDBDCBCCCBCDBCCABBDBBCCDBCCD 21 21 吳漢 AADBACCCDBDABBCCBDCACACABABCBDDBCAB 22 22 劉亞 CADBBABCDADBBCCADBBACACADABCBDDBCAB 23 23 吳璐 CADBDBCCDBDCBBCCBCBACACAABBCBDDBCAB 24 24 唐金 CACBDBACDBDBBCADDCCAAACBCABCBDDBCAB 25 25 劉秋 CADCDABCDADCBCDADDBCCAAABBBCBDDBCAB 26 26 徐文 CADBDDBCDBDCBBAABDBACCCADBBCBDDACAB 27 27 孫育夫 CABDDCBCDBDCBBDCBDCAACCCDBBCBDDBCCA 28 28 毛東 CDABDDBCDBDCBCCADDCACCCAABBCBDDBCAB 29 29 陳環勇 CADBDABCDBDCBBACCABACCCAABBCBDDBCCB 30 30 鄭彪爽 CBDBCCDBBAACBADBCBDDAACCDBBCCDDBCAB 31 31 趙志龍 CADBDDBCDBDABBDABDBACCCBAABCBDDBCAB 32 32 梁傲朝 CADBDABCDBDBBBDCDDCACAAADBBCBDDBCAA 33 33 許同雷 CADBDABCDBDABBBCBDCDCACAABBCBDDBCAB 34 34 徐彥楠 CADBDCBCDBDCBBACDDCACCAABABCBDDBCAB 35 35 羅建磊 CADBDCCCDBDCBCDADBCAACACBBBCBDDBBAD 36 36 曾少林 CBDBDCBCBADDCCADDABACAABCBBCADDBAAB 37 37 郭磊傑 CADBDBBCDACCABDCDDBBCAADBBBCBDDBCAD 38 38 閤道煒 CADBDCBCDBDBADBCABDCCACABBBCBDDADCD 39 39 胡風波 DADBDDBCDBDCBBCCBDBAACCABBBCBDDACAB 40 40 張兆 CDDBDADCDBDCBCCDDDBACAACDBBCBDDBDAB 41 41 吳雪 BDDBDCBCDBDCBDDCBDCACAAAABBCBDDBCCA 42 42 衛曦羣 CADBDDACDBDCBBCCDCCACCCAABBCBDDBCCA 43 43 郭文雪 CBDBDDBCDBDBCCCCBBCACAAAABBCBBDBCCB 44 44 黃甘亮 CBDBDCBCDBDBADBCDDCCAACADABCDDDBCBA 45 45 蘇子淇 CADBDCBCDBCCBCACADBACACDAABCBCDACCA 46 46 王樊聰 CBDBDCBCDBDCABABBDCACCCAAABCBDDACAB 47 47 肖勇傑 CADBDCBCDBDCBBCCBDCACCCAABBCBDDBCAB 48 48 石小 CCDBDDCCDBDBBBCCCBCAAAADCBBCBDDBCAB 49 49 劉大遠 CADBDCCCDBDBADCCADCCCAAAAABCADDCCCA 50 50 陳世怡 CADBDCCCDBDABCCCDDCAAAACAABCADDACCA 51 51 王鵬康 CADBDCDCDCCACCDDBDCABAAACBBCBDDBCAB 52 52 解欣琦 BBDBADCDDBACADBACBDDAADABABCACDBCAA 53 53 劉周雯 CADBDCCCDBDCBCACBACACCCADABCBDDACAB 54 54 代博濤 CADBDBBCDBDBBCDCDABDCCABBABCBDDACAB 55 55 劉亞明 CADBDCDCDBDABBAABABACACAABBCBDDBCAB 56 56 韓建昊 CADBDBBCDBDCBBCBBDBACCCAABBCBDDBCAB 57 57 於磊思琪 CBDCDCCCDBDBBDCAACDACAAADBBBBDABCCA 58 58 王治 DADBDBBCDBDCBBCABDBCCCCAABBCBDDBCAD 59 59 劉春東 CADBDCBCDBDBBBCCADDACAAAAABCBDDBCAB 60 60 魏恆宇 CACBDCBCDBDCBBDCBDBACACBABBCBCDBCAB 61 61 陳春迪 CADBDCBCDBDCBBCCBBBACAABBBBCBDDBCCD 62 62 賈汝遠 CADBDBBCDBDBCADABDCBAACCBABCACDBCAB 63 63 韓全彤 CADBDCBCDBDCBBCCBDBACACAABBCBDDCCAB 64 64 付彬祺 CADBDCBCDADABBDCDDBACACBABBCBDDBCBB 65 65 王澤文 CADBBCBCDBDACDBBBBCDBAADBBBCBCDACAB 66 66 胡富南 CADBDCDCDACCBDCCCABACCCDBBBCBDDBCAB 67 67 肖秋來 CADDDCBCDBCCBCACDCBABACCAABBBDDACCA 68 68 周曉 CADBDABCDADCBCCDBDBACCCAABBCBDDBCAB 69 69 王奕敏 CADBDCBCDBDCBBCABDBACCCAABBCBDDBCAB 70 70 徐鈺英 DADBDABCDBDCABCCBDBBCCCABBBCBDCBCAB 71 71 陳贏 CDDBAABCBADABCCCDBCACACDAABCBDDBCAB 72 72 楊君 CADBDDACCBDCBDDCBCCCCCCCCBBCBDDBCAB 73 73 李清雪 DADBDCBCDBDCABDCBDCACCCAABBCBDDBCAB 74 74 周俊蒙 CADBCDBCCCDCBDBCBCCACACBBBBCBDDACAB 75 75 李夢 CACBDCBCDBDCBAACBDCACACCBABCBDDBCAB 76 76 夏煥宏 CBDBDCCCDADABBDCBCCAACAADBBBBDDBCDD 77 77 徐鑫強 CADBDCBCDBDAAADCBBCABACAABBCBDDBCAB 78 78 婁克瑞 CACBDBBCCBDCBBDABACACAAAAABCBDABCAB 79 79 董澤光 CDDCDABCDBDDBCDDDCBACACBBABCBDDBBCD 80 80 黃念龍 CACBDABCDBDABBCCBDCACCCAABBCBDDBCAB 81 81 林世 CADBDCBCDBDABAACBDBACCCAABBCBDDBCAB 82 82 王雪 CADBDCBCDBDCBBCABDBACACAABBCBDDBCAB 83 83 何璐 CADCDBBCDBDCCBACBDBCCACAABBCBDDBCAB 84 84 吳一 CBDBDCACBBDCBCACBDCCCACADBBCBDDBCAB 85 85 龔文傑 CADBDCBCDBDCBBCBBDCACCCBAABCBDDBCAB 86 86 王志媛 DAABDCACDBDCCCCCBDCAAACCCABCACDBCCA 87 87 段靖章 CADBDCBCDCDCBBDABDBACAACABBCBCDBCAB 88 88 胡大 CADBDCCCDBDBBDDCBDDCCACAAABBBCDBCBB 89 89 黃利偉 CADBDCBCDBDCABDCCDBACACCADBCBDDBCAB 90 90 張文源 CADBDCBCDBDCBBDABDBACCCAABBCBDDBCAB 91 91 林濤 CADBDBBCDBDCBBCABDBACCCAABBCBDDBCAB