?? 8-2-26.c
字號:
/*中國系統分析員顧問團,http://www.csai.cn*/
/*程序員下午考試指南書籍源碼*/
#include <stdio.h>
#include <ctype.h>
#define MAXN 300
typedef struct{
int no; /*選手編號*/
int num; /*完成的題目數量*/
int time; /*完成題目的總用時*/
int d[8]; /*d[i]用于記錄提交第i個題目錯誤答案的次數*/
int a[8]; /*a[i]用于記錄第i個題目是否已經提交正確答案*/
}Info;
void Statistic(){
char ch,pass;
int i,j,k,h,m,t,time,MaxIndex;
Info R[MAXN+1];
for(i=1; i<=MAXN; i++) { /*數組R的元素置初值0*/
R[i].no = 0; R[i].num = 0; R[i].time = 0;
for(j=0; j<8;j++) {
R[i].d[j] = 0; R[i].a[j] = 0;
}
}/*for*/
MaxIndex = 0;
while(1) { /*錄入一名選手提交答案的信息(小時:分鐘,選手編號,題目號,是否正確)*/
printf("小時:分鐘,選手編號,題目號,是否正確\n");
scanf("%d:%d,%d,%c,%c",&h,&m,&k,&ch,&pass);
if(h==0) break;
R[k].no = k; /*k為選手編號*/
time = (h-9)*60+m ; /*計算答題時間,以分鐘為單位*/
if(isupper(ch)) ch = 'a'+ch-'A';
if(pass != 'Y'&& pass != 'y') {
R[k].d[ch-'a']++; continue;
}
if(R[k].a[ch-'a'] == 1) continue;
R[k].a[ch-'a'] = 1;
R[k].num++;
R[k].time += time+R[k].d[ch-'a']*20 ;
if(k>MaxIndex) MaxIndex = k;
}/*while*/
for(i=1; i<MaxIndex;i++) { /*選擇排序*/
for (t=i,j=i+1;j<=MaxIndex;j++)
if(R[t].num<R[j].num ||R[t].num==R[j].num && R[t].time>R[j].time ) t = j;
if( t != i ) { R[0]=R[t];R[t]=R[i];R[i]=R[0];}
}/*for*/
k = 1;R[0] = R[1];
for(i=1; i<=MaxIndex; i++) /*輸出排名情況*/
if(R[i].num>0) {
if(R[i].num!=R[0].num || R[i].time!=R[0].time) k++;
R[0]= R[i] ;
printf("%d: %3d %4d %5d \n",k,R[i].no,R[i].num,R[i].time);
}/*if*/
}/*Statistic*/
main()
{
Statistic();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -