以下程序是输出查找出1和2在5个二维数组中出现的个数和所占的比率.但是比率不能正确输出?但找不出问题出在哪?
#include<stdio.h>
#include<math.h>
void du(int a[5][5],int n);
void shzh(int a[5][5],int n);
void main()
{
int a[5][5];
du(a,5);
shzh(a,5);
}
void du(int a[][5],int n)
{
int i,j;
FILE *pf;
if((pf=fopen("e:\\file_01.txt","r"))==NULL)
{
printf("Cannot open file!");
return;
}
for(i=0;i<n;i++)
for(j=0;j<5;j++)
{
fscanf(pf,"%4d",&a[i][j]);
fscanf(pf,"\n");
}
fclose(pf);
}
void shzh(int a[][5],int n)
{
int i,j,x;
int fen[22]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22};
int counter,sum,ji[22];
int Hao1,Hao2;
float Ben1,Ben2;
sum=0;
for(i=0;i<n;i++)
{
for(j=0;j<5;j++)
{
for(x=0;x<22;x++)
{
counter=0;
if(a[i][j]==fen[x]) /*找相同的数*/
counter++;
if(ji[x]>0)
{
sum=ji[x]; /*将位置的累计数赋予sum*/ ji[x]=sum+counter; }
else
ji[x]=counter; /*处始计数*/
}
}
}
Hao1=ji[0];Hao2=ji[1];/*将该位置累计的数赋予Hao1,Hao2*/
Ben1=Hao1/n; Ben2=Hao2/n;/*Ben1,Ben2为该数在全部数组中占的比率*/
{
printf("1=%d %.1f 2=%d .1f",Hao1,Ben1,Hao2,Ben2);
printf("\n");
}
}