c程序问题,假设有A、B、C、D、E五个高等院校进行田径对抗赛, 各院校的单项成绩均以存入计算机并构成一张

请修改程序,请解释枚举值的输入。#include<stdio.h>typedefenum{female,male}Sex;typedefstruct{charsport;... 请修改程序,请解释枚举值的输入。
#include<stdio.h>
typedef enum {female,male} Sex;
typedef struct {
char sport; // 项目名称
Sex gender; // 性别(女:female;男:male)
char schoolname; // 校名为'A','B','C','D'或'E'
char *result; // 成绩
int score; // 得分(7,5,4,3,2或1)
}ResultType;

typedef struct{
int malescore; // 男子总分
int femalescore; // 女子总分
int totalscore; // 男女团体总分
} ScoreType;
void Scores(ResultType *result, ScoreType *score)
{
int i=0;
while(result[i].sport!=NULL)
{
switch(result[i].schoolname)
{
case'A':
score[0].totalscore+=result[i].score;
if(result[i].gender==male)
score[0].malescore+=result[i].score;
else
score[0].femalescore+=result[i].score;
break;
case'B':
score[1].totalscore+=result[i].score;
if(result[i].gender==male)
score[1].malescore+=result[i].score;
else
score[1].femalescore+=result[i].score;
break;
case'C':
score[2].totalscore+=result[i].score;
if(result[i].gender==male)
score[2].malescore+=result[i].score;
else
score[2].femalescore+=result[i].score;
break;
case'D':
score[3].totalscore+=result[i].score;
if(result[i].gender==male)
score[3].malescore+=result[i].score;
else
score[3].femalescore+=result[i].score;
break;
case'F':
score[4].totalscore+=result[i].score;
if(result[i].gender==male)
score[4].malescore+=result[i].score;
else
score[4].femalescore+=result[i].score;
break;
}
i++;
}

}
main()
{
int i,n;
ResultType result[100];
ScoreType score[100];
printf("请输入各院校参赛的总人数:");
scanf("%d",&n);
printf("请输入各院校运动员的项目名称、性别、校名、成绩、得分:\n");
for(i=0;i<n;++i)
{
printf("运动员%d:\n",i+1);
scanf("%s%d%s%s%d",result[i].sport,result[i].gender,
result[i].schoolname,result[i].result,result[i].score);
}
Scores(result,score);
for(i=0;i<5;i++)
{
printf("the school %s: ", result[i].schoolname) ;
printf("Total score of male:%d\n",score[i].malescore);
printf("Total score of female:%d\n",score[i].femalescore);
printf("Total score of all:%d\n\n",score[i].totalscore);
}
}
展开
 我来答
当代教育科技知识库
高能答主

2019-10-22 · 擅长科技新能源相关技术,且研究历史文化。
当代教育科技知识库
采纳数:1824 获赞数:387776

向TA提问 私信TA
展开全部

第一处:
主函数中ScoreType score[100];定义后应该将其中所有元素初始化为0,不然调用Scores()时得不到预期的结果。

printf("运动员%d:\n",i+1);

scanf("%s%d%s%s%d",result[i].sport,result[i].gender,

result[i].schoolname,result[i].result,result[i].score);//scanf()语句应该用用地址
}

第二处:
typedef struct {
char sport; // 项目名称
Sex gender; // 性别(女:female;男:male)

第三处(致命错误!):
for(i=0;i<n;++i)

在修改了第二结构体ResultTy的前提下改成下面的语句为妙:

for(i=0;i<n;++i)
{
printf("运动员%d:\n",i+1);
fflush(stdin);
printf("输入项目:\n");


扩展资料:

1987年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。

C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。

用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。

1990年,国际化标准组织ISO(International Standard Organization)接受了87 ANSI C为ISO C 的标准(ISO9899-1990)。

1994年,ISO修订了C语言的标准。目前流行的C语言编译系统大多是以ANSI C 为基础进行开发的,但不同版本的C编译系统说实现的语言功能和语法规则有略有差别。

参考资料来源:百度百科-c程序

码道长
推荐于2016-11-06 · TA获得超过1353个赞
知道小有建树答主
回答量:220
采纳率:80%
帮助的人:76.6万
展开全部
我找到了三项比较明显的错误:
第一处:
主函数中ScoreType score[100];定义后应该将其中所有元素初始化为0,不然调用Scores()时得不到预期的结果。

第二处:
typedef struct {
char sport; // 项目名称
Sex gender; // 性别(女:female;男:male)
char schoolname; // 校名为'A','B','C','D'或'E'
char *result; // 成绩 最好定义为数组result[20]
int score; // 得分(7,5,4,3,2或1)
}ResultType;

第三处(致命错误!):
for(i=0;i<n;++i)
{
printf("运动员%d:\n",i+1);
scanf("%s%d%s%s%d",result[i].sport,result[i].gender,
result[i].schoolname,result[i].result,result[i].score);//scanf()语句应该用用地址
}
在修改了第二结构体ResultTy的前提下改成下面的语句为妙:
for(i=0;i<n;++i)
{
printf("运动员%d:\n",i+1);
fflush(stdin);
printf("输入项目:\n");
scanf("%c",&result[i].sport);
fflush(stdin);
printf("输入性别:\n");
scanf("%d",&result[i].gender);
fflush(stdin);
printf("输入校名:\n");
scanf("%c",&result[i].schoolname);
fflush(stdin);
printf("输入结果:\n");
scanf("%s",result[i].result);
fflush(stdin);
printf("输入分数:\n");
scanf("%d",&result[i].score);
}

第二个不晓得题目要求解释枚举型的什么东东,能再清楚点就好了。female相当于常量0,male相当于1吧。
更多追问追答
追问
第三处我自己也发现了,改了,还是能编译,但无法运行。
追答
for(i=0;i<5;i++)
{
printf("the school %s: ", result[i].schoolname) ; //应该改成%c;
printf("Total score of male:%d\n",score[i].malescore);
printf("Total score of female:%d\n",score[i].femalescore);
printf("Total score of all:%d\n\n",score[i].totalscore);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式