文章目录:
演讲比赛评分系统
为你提供 1 份针对演讲比赛评分系统 de 适用于初学者 de 代码,
请与我们联系进 1 步需求,,联系我们需要提供问题和联系方式,有可能帮你,但是绝对救急,请用BaiduHi为我留言,
此回复针对所有来访者和需求者有效,
ES:\\FD78E699CF82051C8F4E7FAD8F2D9D17
利用C语言开发一个“比赛评分系统”。
参考下面的代码。下面的代码是10个评委的:
#includestdio.h
typedef struct judge
{
int number;
double score;
} judge;
void sort(judge Score[10])
{
int iter,iterb,temp;
double dtemp;
for(iter=0;iter9;++iter)
{
for(iterb=0;iterb9;++iterb)
{
if(Score[iterb].scoreScore[iterb+1].score)
{
dtemp=Score[iterb].score;
Score[iterb].score=Score[iterb+1].score;
Score[iterb+1].score=dtemp;
temp=Score[iterb].number;
Score[iterb].number=Score[iterb+1].number;
Score[iterb+1].number=temp;
}
}
}
}
void print_all(judge Score[10])
{
int iter;
for(iter=0;iter10;iter++)
{
printf("%d %.2f \n",Score[iter].number,Score[iter].score);
}
}
void main()
{
judge Score[10];
int temp,iter;
double sum=0.0,aver;
printf("请输入十位评委的分数:\n");
for(iter=0;iter10;++iter)
{
printf("请输入%d号评委的分数:",iter+1);
scanf("%d",temp);
if(temp1.0||temp100.0)
{
printf("\n输入错误,分数应该为1~100\n");
--iter;
}
else
{
Score[iter].number=iter+1;
Score[iter].score=temp;
printf("\n");
}
}
sort(Score);
// print_all(Score);
for(iter=1;iter9;++iter)
{
sum+=Score[iter].score;
}
aver=sum/8.0;
printf("总分为%.2f,平均分为%.2f\n",sum,aver);
for(iter=0;iter10;++iter)
{
Score[iter].score-=aver;
if(Score[iter].score0.0)
{
Score[iter].score=-Score[iter].score;
}
}
sort(Score);
// print_all(Score);
printf("评分最公正的评委为:");
for(iter=0;iter10;++iter)
{
printf("%d ",Score[iter].number);
if(Score[iter].score==Score[iter+1].scoreiter!=9)
{
continue;
}
else
{
break;
}
}
printf("\n评分最不公正的评委为:");
for(iter=9;iter0;--iter)
{
printf("%d ",Score[iter].number);
if(Score[iter].score==Score[iter-1].scoreiter!=0)
{
continue;
}
else
{
break;
}
}
}
修改C程序:演讲比赛评分系统
#include stdio.h
#include string.h
#define N 10 /*没有宏定义N的值*/
void main()
{
void sort(float array[],int n);
float average(float array[10]);
void arran(float num[],char name[N]);
float b[10]={0.0};/*定义浮点型要用0.0,而且你再循环你定义全是0二重循环完后,b[i]的值一直都是0*/
int i,j,k;
char name[10];/*没用定义name*/
float a[10][5];
float num[15];
for (k=0;k15;k++)
{
for (i=0;i10;i++)
{
for(j=0;j5;j++)
{
scanf("%f",a[i][j]);
b[i]=b[i]+a[i][j];
}
}
sort(b,10);
num[k]=average(b);/*直接写浮点型数组名就可以了不需要写b[10]*/
}
scanf("%s",name);/*直接写字符串名就可以了,它相当于指针,系统会自动移动*/
arran(num,name);
printf("获奖结果如下:\n\n");
printf("一等奖:%s %f分\n\n二等奖:\n",name,num);
for(k=1;k4;k++)
printf("%10s %f分 ",name[k],num[k]);
printf("\n\n三等奖:\n\n");
for(k=4;k9;k++)
printf("%10s %f分 ",name[k],name[k]);/*漏了分号*/
}
void sort(float array[],int n )
{
int i,j,k;
float t;/*t应该定义为浮点型*/
for(i=0;in-1;i++)
{
k=i;/*少了分号*/
for(j=i+1;jn;j++)
if(array[j]array[k])
k=j;
t=array[k];
array[k]=array[i];
array[i]=t;/*漏了分号*/
}
}
void arran(float num[],char name[N])
{
int i,j,max;
float temp1;
char temp2[8];
for(i=0;iN;i++)
{
max=i;
for(j=i;jN;j++)
{
if(num[max]num[j])
max=j;/*少了分号*/
}
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[max];
strcpy(name[i],name[max]);/*函数格式错误*/
num[max]=temp1;
strcpy(name[max],temp2);
}
float average(float array[10])/*不能用Float*/
{
int i;
float aver,sum;
for(i=2;i9;i++)
sum=sum+array[i];
aver=sum/8;
return(aver);/*少了分号*/
}
楼主,改了,还有三个错误。改不了,因为不知道你的实际意思,不好改,说实话,你的C语言应该要好好加强一下,很多的语法错误,很多函数你都用错,基本格式也不对,编程风格有待加强,你经常漏写分号,你要多写程序,不要写那么复杂的,先从基本算法写起吧,这是我给你的一些建议
i++) { for(j=0;j5;j++) { scanf("%f",a[i][j]); b[i]=b[i]+a[i][j]; } } sort(b,10); num[k]=average(b);/*直接写浮
*定义浮点型要用0.0,而且你再循环你定义全是0二重循环完后,b[i]的值一直都是0*/ int i,j,k; char name[10];/*没用定义name*/ float a[10][5]; float num[15]; for (k=0;k15;k++) { for (i=0;i