📄 8-2-2.c
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/
#include <stdio.h>
#include <conio.h>
#define n 30
long tn[n],td[n],score[n+1][10],order[n];
char s[80];
int mark[]={15,12,9,7,6,5,4,3,2,1};
FILE *fp,*fopen();
main(){
int c,g,k,i,j,b[10],temp;
long e,d,t,tt,dd;
char * p;
for ( i=0; i<=n; i++ )
for ( j=0; j<10; j++ )
score[i][j] = 0;
fp = fopen( "source","r" ); /* 以读方式打开文件source */
p = fgets( s,80,fp ); /* 读fp所指文件的下一行字符串于s */
while (p){
g = 1; k = 0; p += 40;
while ( k<10 ) {
temp=( (*p++)-'0')*10;
c = temp + ((*p++)-'0' );
b[k++] = c;
if (c<=n) {
if (c) {
i = 0;
while (c != b[i++]);
if ( i<k ) {
g = 0;break;
}
}
else {
g = 0;break ;
}
}
}
if (g)
for (i=0;i<k;i++)
if (b[i])
score[b[i]][i]++;
p = fgets( s, 80,fp );
}
fclose(fp);/* 关闭 fp 所指文件 */
for ( i=1;i<n;i++ ){
for ( t=0,d=0,j=0;j<10;j++ ){
t += ( e=score[i][j] );
d += e * mark[j];
}
tn[i-1] = t;td[i-1] = d;order[i-1] = i;
}
for ( i=0;i<n-1;i++){
k = i;
for ( j=i+1;j<n;j++ )
if ( (t = td[order[j]-1]) > (d = td[order[k]-1]) )
k = j;
else
if (t == d){
tt = order[j];
dd =order[k];
for ( c=0;c<10;c++ )
if ( ( e = score[tt][c]-score[dd][c])>0 ){
k = j;break;
}
else
if (e<0) break;
}
if ( k != i ) {
t = order[k]; order[k] = order[i]; order[i] = t;
}
}
for ( i=0;i<10;i++ )
printf( "%2d %2d %d %d\n", i+1,order[i],td[order[i]-1],tn[order[i]-1] );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -