你错误的现象是什么?
逻辑太复杂了没有细看,我发现你定义b[10][10]={0};
但是后面用到了a[i][11]=b[i][10];
b[i][10]已经数组越界了,产生的结果未知了,你看看是不是这里的问题。
而且这句a[i][11]=b[i][10];是不需要的吧。
又发现一个问题,你算分的时候只判断了一次全倒和两次击倒的情况,对于两次未全倒的情况没有处理。代码我帮你改好了。你可以试试看。
#include
#define MAX_LUN 3 //这里设置最大轮数
#define MAX_REN 2 //这里设置参与人数
int fen(int* p,int* q);
int main(void)
{
int a[MAX_REN][MAX_LUN+2];
int b[MAX_REN][MAX_LUN];
int i,j,s[MAX_REN],k,index,temp;
FILE *fp=NULL;
memset( a, 0, sizeof(a) );
memset( b, 0, sizeof(b) );
for(j=0;j
printf("第%d轮开始\n",j+1);
for(i=0;i
printf("第%d号选手第一次击球击倒数:",i+1);
scanf("%d",&a[i][j]);
if(a[i][j]<10)
{
printf("\n第%d号选手第二次击球击倒数:",i+1);
scanf("%d",&b[i][j]);
}
}
}
for(i=0;i
if(a[i][MAX_LUN - 1]==10)
{
printf("\n第%d号选手最后一轮一次全击倒,奖励两次击球,请分别输入击倒数:",i+1);
scanf("%d%d",&a[i][MAX_LUN],&a[i][MAX_LUN+1]);
}
else if(a[i][MAX_LUN-1]+b[i][MAX_LUN-1]==10)
{
printf("\n第%d号选最后一轮两次全击倒,奖励一次击球,请输入击倒数:",i+1);
scanf("%d",&a[i][MAX_LUN]);
}
}
for(i=0;i
s[i]=fen(a[i],b[i]);
printf("\n第%d号选手总分为:%d",i+1,s[i]);
}
for(k=0;k<9;k++)
{
index=k;
for(i=k+1;i<10;i++)
if(s[i]>s[index])
index=i;
temp=s[index];
s[index]=s[k];
s[k]=temp;
}
if((fp=fopen("f1.txt","w"))==NULL)
{
printf("File open error!\n");
exit(0);
}
for(i=0;i
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
分给我喽!!
—_—|||,你代码写些注释行吗,让我们更好地看懂你的代码思路~
a[i][11]=b[i][10]; b数组越界了吧b数组下标是0-9吧。还有这一句逻辑上什么作用,用上一次b[i][9]输入的值?是不是应该改成a[i][10]=b[i][9];?