a在录入文件遇到了困难
b,在网上有找个,但并不能解决
#include<stdio.h>
#include<stdlib.h>
#define N 10
void s()
{
printf(" 校园歌手比赛管理系统\n");
printf("--------------------------------------------------\n");
printf("1、输入选手姓名\n2、评委评分\n3、计算平均分\n4、排名\n5、写入数据文件\n6、打开文件\n7、退出系统\n");//基本功能要求
printf("--------------------------------------------------\n") ;
}
struct singer
{
int paiming;//排名
char name[20];//姓名
}singer[20];
struct score//十个评委打分
{
int score[10];
int n1;
int n2;
int n3;
int n4;
int n5;
int n6;
int n7;
int n8;
int n9;
int n10;
}score[10];
int main(){
s();
FILE *fp;
char a;
printf("选择将要进行的操作:");
start:
scanf("%c",&a);
int x,i=1,y,z;
switch(a){
case '1':
system("cls");
printf("输入选手的个数(10个以内)\n");
scanf("%d",&x);
int sum[10];
int max[10],min[10];
float b[10];
for(i=1;i<=x;i++)
{
sum[i]=0;
max[i]=0;
min[i]=100;
}
printf("输入选手的姓名\n");
for(i=1;i<=x;i++)
{
scanf("%s",&singer[i].name);
}
//goto start;
break;
case '2':
system("cls");
for(y=1;y<=x;y++){
printf("评委为十个选手打分(1~100)\n");
printf("\n输入第一个评委对歌手%d的评分",y);
scanf("%d",&score[y].n1);
printf("\n输入第二个评委对歌手%d的评分",y);
scanf("%d",&score[y].n2);
printf("\n输入第三个评委对歌手%d的评分",y);
scanf("%d",&score[y].n3);
printf("\n输入第四个评委对歌手%d的评分",y);
scanf("%d",&score[y].n4);
printf("\n输入第五个评委对歌手%d的评分",y);
scanf("%d",&score[y].n5);
printf("\n输入第六个评委对歌手%d的评分",y);
scanf("%d",&score[y].n6);
printf("\n输入第七个评委对歌手%d的评分",y);
scanf("%d",&score[y].n7);
printf("\n输入第八个评委对歌手%d的评分",y);
scanf("%d",&score[y].n8);
printf("\n输入第九个评委对歌手%d的评分",y);
scanf("%d",&score[y].n9);
printf("\n输入第十个评委对歌手%d的评分",y);
scanf("%d",&score[y].n10);
sum[y]=sum[y]+score[y].n1+score[y].n2+score[y].n3+score[y].n4+score[y].n5+score[y].n6+score[y].n7+score[y].n8+score[y].n9+score[y].n10;
}
printf("%d\n",sum[y]);
printf("\n\n");
//goto start;
break;
case '3':{
system("cls");
int ave[10];
for(y=1;y<=x;y++){//求出最高分
max[y]=(max[y]>score[y].n1)?max[y]:score[y].n1;
max[y]=(max[y]>score[y].n2)?max[y]:score[y].n2;
max[y]=(max[y]>score[y].n3)?max[y]:score[y].n3;
max[y]=(max[y]>score[y].n4)?max[y]:score[y].n5;
max[y]=(max[y]>score[y].n6)?max[y]:score[y].n6;
max[y]=(max[y]>score[y].n7)?max[y]:score[y].n7;
max[y]=(max[y]>score[y].n8)?max[y]:score[y].n8;
max[y]=(max[y]>score[y].n9)?max[y]:score[y].n9;
max[y]=(max[y]>score[y].n10)?max[y]:score[y].n10;
}
for(y=1;y<=x;y++){//求出最低分
min[y]=(min[y]<score[y].n1)?min[y]:score[y].n1;
min[y]=(min[y]<score[y].n2)?min[y]:score[y].n2;
min[y]=(min[y]<score[y].n3)?min[y]:score[y].n3;
min[y]=(min[y]<score[y].n4)?min[y]:score[y].n4;
min[y]=(min[y]<score[y].n5)?min[y]:score[y].n5;
min[y]=(min[y]<score[y].n6)?min[y]:score[y].n6;
min[y]=(min[y]<score[y].n7)?min[y]:score[y].n7;
min[y]=(min[y]<score[y].n8)?min[y]:score[y].n8;
min[y]=(min[y]<score[y].n9)?min[y]:score[y].n9;
min[y]=(min[y]<score[y].n10)?min[y]:score[y].n10;
}
for(y=1;y<=x;y++){
ave[y]=(sum[y]-max[y]-min[y])/8;//用总分减去十个评委中给出的最高分和最低分;然后除去八,即可求出平均分
printf("第%d位歌手的平均分是%5.2f\n",y,ave[y]);
}
printf("\n\n");
//goto start;
break;
case '4':
system("cls");
for(i=1;i<=x;i++){
for(y=1,z=1;y<=x;y++){
if(ave[i]<ave[y])
z=z+1;
}
singer[i].paiming=z;
}
for(y=1;y<=x;y++){
if(i==singer[y].paiming)
printf("%s是第%d名,得分为%5.2f\n",singer[y].name,i,ave[y]);
}
printf("\n\n");
//goto start;
break;
case '5':
system("cls");
if((fp=fopen("C:\Users\ly\Desktop\c语言大作业.dat","wb"))==NULL)
{
printf("不能打开文件\n");
}
for(i==1;i<=x;i++)
fwrite(&singer[i],sizeof(struct singer),1,fp);
flcose(fp);
printf("保存成功\n");
//goto start;
break;
case '6':
system("cls");
printf("输入选手的个数(不能超过之前已保存信息的人数)/n");
scanf("%d",&x);
if((fp=fopen("C:\Users\ly\Desktop\c语言大作业.dat","rb"))==NULL)
{
printf("不能打开文件\n");
}
for(i=1;i<=x;i++)
{
fread(&singer[i],sizeof(struct singer),1,fp);
printf("%s的排名为%d\n",singer[i].name,singer[i].paiming);
}
fclose(fp);
//goto start;
break;
case '7':exit(0);
}
return 0;
}
希望帮我斧正,或者别的提升也可以
使用的编译器是Dev-c++版本是
#include <stdio.h>
/*
设计一个“卡拉OK大赛评分系统”
本程序启动后,会提示“卡拉OK大赛正式开始”,然后请10位裁判分别打分,
最后去掉一个最高分和一个最低分,将其余分数的平均分作为选手的最后得分
*/
void main(){
float a[10]; //保存10个评委的分数
int i;
float max;//保存最高分
float min;//保存最低分
float avg=0;//保存10个评委的平均分
//显示界面
printf("\t\t\t*****************************************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 卡拉OK大赛评分系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t*****************************************************\n");
//1.输入10个评委的分数
for(i=0;i<10;i++){
printf("\t\t\t请输入第%d个评委的打分:",i+1);
//获取从键盘输入的分数
scanf("%f",&a[i]);
}
//2.对max,min赋初值
max = a[0];
min = a[0];
avg = a[0];
//3.求最高分,最低分,总分
for(i=1;i<10;i++){
//求最高分
if(max<a[i]){
max = a[i];
}
//求最低分
if(min>a[i]){
min = a[i];
}
//求总分
avg += a[i];
}
//求平均分 = (总分-最高分-最低分 )/8
avg = (avg - max - min)/8;
//4.输出结果
printf("去掉一个最高分%0.2f,去掉一个最低分%0.2f,最后得分是:%0.2f",max,min,avg);
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632