#include<stdio.h> double cs[15]={0.0};//S线的差异系数 double cp[10]={0.0};//p线的差异系数 void print(int m,int n,int s[17][12]);//输出m行,n列 void main() { int s[17][12]={ {0,1,1,0,1,1,0,1,1,0,2,20}, {0,1,1,1,1,0,0,0,0,0,2,20}, {1,1,1,1,1,0,1,1,0,1,2,20}, {0,1,1,1,1,1,1,1,0,0,2,20}, {1,1,1,1,1,1,1,0,0,1,2,20}, {0,1,1,0,0,0,0,1,0,0,2,20}, {1,1,1,1,1,1,1,1,0,1,2,20}, {1,0,0,1,1,1,1,1,0,1,2,20}, {1,1,1,1,1,1,1,1,1,1,2,20}, {1,1,1,0,1,1,0,0,0,0,2,20}, {0,1,0,1,1,1,1,0,0,1,2,20}, {0,1,1,0,1,1,1,1,1,0,2,20}, {0,1,1,1,1,1,1,0,1,1,2,20}, {0,1,1,0,1,0,1,0,0,0,2,20}, {0,1,1,1,1,1,1,1,1,0,2,20}, {2,2,2,2,2,2,2,2,2,2,2,20}, {2,2,2,2,2,2,2,2,2,2,2,20} }; int sum(int *a,int n); int avg(int m, int n); //*****************************计算总分********************************************// for(int i=0;i<15;i++) { s[i][10]=sum(s[i],10); s[i][11]=avg(s[i][10],10); } for(int j=0;j<10;j++)//j为列数 { int sa=0; for(int k=0;k<15;k++)//k为行数 sa+=s[k][j]; s[15][j]=sa; s[16][j]=avg(s[15][j],15); } int a; double b; a=sum(s[15],10)/10; b=a/15.0; printf("平均正答数: %d /n",a); printf("平均正答数: %lf /n",b); printf("输出原始矩阵/n"); print(17,12,s); printf("/n/n/n"); //******************************************排序**********************************// for(i=0;i<15;i++)//行 for(j=0;j<15-i;j++) { int t; if(s[j][10]<s[j+1][10]) for(int k=0;k<12;k++) { t=s[j][k]; s[j][k]=s[j+1][k]; s[j+1][k]=t; } } for(i=0;i<10;i++)//列 for(j=0;j<10-i;j++) { int t; if(s[15][j]<s[15][j+1]) for(int k=0;k<17;k++) { t=s[k][j]; s[k][j]=s[k][j+1]; s[k][j+1]=t; } } printf("输出排序矩阵/n"); print(17,12,s); printf("/n/n/n"); //********************************求差异系数*************************************// for(i=0;i<15;i++)//行差异系数 { int as=0,bs=0,ds=0; for(j=0;j<s[i][10];j++) { ds+=s[15][j]; if(s[i][j]==0) { as+=s[15][j]; } } for(j=s[i][10];j<10;j++) if(s[i][j]==1) bs+=s[15][j]; if((ds-s[i][10]*10)==0) cs[i]=0.00; else cs[i]=10*((as-bs)*0.1/(ds-s[i][10]*10)); } for(i=0;i<10;i++) { int ap=0,bp=0,dp=0; for(j=0;j<s[15][i];j++) { dp+=s[j][10]; if(s[j][i]==0) ap+=s[j][10]; } for(j=s[15][i];j<15;j++) if(s[j][i]==1) bp+=s[j][10]; if((dp-s[15][i]*67)==0) cp[i]=0.00; else cp[i]=10*((ap-bp)*0.1/(dp-s[15][i]*(20.0/3))); } printf("输出差异系数矩阵/n"); print(18,13,s); printf("/n"); } int sum(int *a,int n) { int s=0; for(int i=0;i<n;i++) s+=a[i]; return s; } int avg(int a,int n) { return (int)(a*100/n); } void print(int m,int n,int s[17][12]) { int i,j; for(i=0;i<m;i++) { if(i==15||i==16||i==17) if(n==13) for(int j=0;j<n-3;j++) if(i==17) printf("%-6.2lf",cp[j]); else printf("%-5d ",s[i][j]); else for(int j=0;j<n-2;j++) if(i==17) printf("%-6.2lf",cp[j]); else printf("%-5d ",s[i][j]); else for(j=0;j<n;j++) if(j==12) printf("%-6.2lf",cs[i]); else printf("%-5d ",s[i][j]); printf("/n"); } } 最后的输出结果: