猿问

用c语言制作一个简单的赛场计分系统(不同数组的转换问题)

#include<stdio.h>
#define N 40
void getscore(int score[],int m);
void sortscore(int score[],int n,int m);
float averofscore(int score[]);
void sortdata(int data[],int n);
void swap(int *x,int *y);
void printdata(int data[],int n);
int main()
{
	int score[N]={0};int data[N]={0};int i,m,n,a;
	printf("多少个学生:");
	scanf("%d",&n);
	printf("多少个裁判:");
	scanf("%d",&m);
	for(i=0;i<n;i++)
	{
	getscore(score,n);
	sortscore(score,n,m);
	a=averofscore(score);
	data[i]=a;
	}
	sortdata(data,n);
	printdata(data,n);
	return 0;
}

void getscore(int score[],int m)
{
	int i; 
	printf("请打分(中间用空格隔开):");
	for(i=0;i<m;i++)
	{ 
	scanf("%d",&score[i]); 
	}
}


void sortscore(int score[],int n,int m)
{
	int max=score[0];int min=score[0];int i,maxscore,minscore;int maxindex=0;int minindex=0;
	for(i=0;i<m;i++)
	{
		if(score[i]>max)
		{
		max=score[i];
		maxindex=i;
		}
	}
		for(i=0;i<m;i++)
	{
		if(score[i]<min)
		{
		min=score[i];
		minindex=i;
		}
	}
	score[minindex]=0;score[maxindex]=0;
}

float averofscore(int score[])
{
	int i,n;float sum;
	for(i=0;i<n;i++)
	{
		sum+=score[i];
	}
	return sum/n;
}

void sortdata(int data[],int n)
{
	int i,k,j;
	for(i=0;i<n-1;i++)
	{
		k=i;
		for(j=k+1;j<n;j++)
		{
			if(data[k]<data[j])
			k=j;
		}
		if(k!=i)
		swap(&data[k],&data[i]);
	}
}

void swap(int *x,int *y)
{
	int temp;
	temp=*x;
	*x=*y;
	*y=temp;
}

void printdata(int data[],int n)
{
	int i;
	printf("降序排列中.....\n"); 
	for(i=0;i<n;i++)
	{
		printf("%d\t",data[i]);
	}
}

我的思路是先把打的分数存入一个数组,去掉一个最高分,去掉一个最低分,再求平均得分。再把平均得分存入另一个数组中,按降序排列输出成绩。。。现在问题是平均数可能是一个小数,不能存入一个int型的数组,然后我就把小数存入一个float型的数组中,但在执行swap函数的时候又报错,请教一下应该怎么修改程序使其正常运行,感谢!


错误提示如下:83 25  [Error] cannot convert 'float*' to 'int*' for argument '1' to 'void swap(int*, int*)'

Leo也叫做夹子
浏览 1462回答 1
1回答
随时随地看视频慕课网APP
我要回答