| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:大家帮小弟看看我写的这套对不对?!!谢谢!
只看楼主 加入收藏
静静不悲伤
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-7-11
收藏
 问题点数:0 回复次数:2 
大家帮小弟看看我写的这套对不对?!!谢谢!

是关于歌手评分系统的!
9个评委,10个选手

主函数下面要求有4个函数调用
包括:
1 输入评委分数
2 计算平均分(要求去掉一个最高分和一个最低分)
3 排序
4 输出结果

结果显示的时候要求有
1 名次
2 选手序号或姓名
3 最后得分

运用指针 数组 和结构体
上面的是要求.



#include <stdio.h>
struct singer
{
int num;
// char name[10];
float score;
}singers[10];
//记录评委分
float scores[9];
void inputscores(int i)
{
printf("请给第%d位选手打分\n",i+1);
//读入九个分数,自己改改
scanf("%f",scores)
}
void jisuan(int i)
{
//找出最大,最小分
int j=0;
float s1=scores[0],s2=scores[0],temp=0;
while(j<9)
{
if(scores[j]>s1)s1=scores[j];
if(scores[j]<s2)s2=scores[j];
}
j=0;
while(j<9){temp+=scores[j];}
temp=temp-2*s1-2*s2;
singers[i].num=i;
singers[i].score=temp/7;
}
void paixu()
{//用最简单的排序
struct singer temp;
int i,j;
while(i<10)
{j=i;
while(j<10){
if(singers[i].score<singers[j].score){temp=singers[i];singers[i]=singers[j];singers[j]=temp;}
j++;
}
i++;
}
}
void outputresult()
{int i=0;
while(i<10){printf("%d\n%d\n%f"),i+1,singers[i].num,singers[i].score}
}
void main()
{
int i=0;
while(i<10)
{
inputscores(i);
jisuan(i);
}
paixu();
outputresult();
}

大家看哪写错了,告诉小弟!谢谢!

搜索更多相关主题的帖子: 歌手 姓名 include singer 结构体 
2007-07-12 12:19
riweng
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-7-6
收藏
得分:0 
我还做不出来

本人已成仙,有事先发烟。佛祖曰 :☆槟榔配烟·法力無边·有烟冒火·难絾証輠。 有火没烟┉成不了仙 ~-~
2007-07-13 15:17
caichengpei
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-7-7
收藏
得分:0 

弄了一个,应该能实现所有功能,用了一个晚上和一个下午弄的呀,大家给点意见!
/************************************************************************/
#include <stdio.h>
#include<string.h>

/*选手结构体*/
struct singer{
char name[8]; /*选手姓名*/
int score[9]; /*选手成绩*/
int flag; /*选手名次*/
int ave; /*选手平均分*/
} singers[10];

int *point[10]; /*指针,用来帮助排序*/

/*评委结构体*/
struct pingwei{
char name[8]; /*评委姓名*/
} pingweis[9];

/*指针*/


void input() /*数据录入函数*/
{
int i,j;
char temp[8];
/*录入评委姓名*/
printf("请输入九位评委的名字:");
for(i=0;i<9;i++)
{
printf("\n第%d位评委:",i+1);
scanf("%s",pingweis[i].name);

}
/*录入选手姓名*/
printf("请输入十位选手的名字:");
for(i=0;i<10;i++)
{
printf("\n第%d位选手:",i+1);
scanf("%s",singers[i].name);
singers[i].flag=i;
}
/*录入分数*/
for(i=0;i<10;i++)
{
printf("请输入九位评委对%s选手的打分:",singers[i].name);
for(j=0;j<9;j++)
{
printf("\n%s评委:",pingweis[j].name);
scanf("%d",&singers[i].score[j]);
}
}
}

/*求平均值函数*/
void average()
{
int i,j,max=0,min=0,sum=0;
for(i=0;i<10;i++)
{
max=min=singers[i].score[0];
/*找出最大、最小、总分值*/
for(j=0;j<9;j++)
{
sum=sum+singers[i].score[j];
if(singers[i].score[j]>max) max=singers[i].score[j];
if(singers[i].score[j]<min) min=singers[i].score[j];

}
singers[i].ave=(sum-max-min)/3;
point[i]=&singers[i].ave; /*指针指向每个选手的平均分*/
max=0;min=0;sum=0;
}

}

/*排序函数*/
void paixu()
{
int i,j;
int *temp;

/*利用指针帮助排序*/
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(singers[j].ave>*point[i])
{
temp=point[i];
point[i]=point[j];
point[j]=temp;
}
}
}
/*根据排好的序给出每个学生的名次,平均分相同的名次相同*/
for(i=9;i>=0;i--)
{
for(j=0;j<10;j++)
{
if(*point[i]==singers[j].ave) singers[j].flag=i;
}
}
}

/*输出数据*/
void output()
{
int i,j;
printf("\n*************************\n");
printf("名次 姓名 分数\n");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(singers[j].flag==i)
{
printf("%d %s %d\n",i,singers[j].name,singers[j].ave);
}
}
}
printf("\n*************************\n");
}


main()
{
input();
average();
paixu();
output();
}

2007-07-15 17:03
快速回复:大家帮小弟看看我写的这套对不对?!!谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036955 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved