请高手帮忙看看用c写实现的数据结构有什么问题

hhpltby2007 2009-03-07 08:04:19
1.18③ 假设有A、B、C、D、E五个高等院校进行田径对抗赛,
各院校的单项成绩均以存入计算机并构成一张表,表中每一
行的形式为
项目名称 性别 校名 成绩 得分
编写算法,处理上述表格,以统计各院校的男、女总分和团
体总分,并输出。


相关数据类型定义如下:
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);
/* 求各校的男、女总分和团体总分, 并依次存入数组score */
/* 假设比赛结果已经储存在result[ ]数组中, */
/* 并以特殊记录 {"", male, ' ', "", 0 }(域scorce=0)*/
/* 表示结束 */
{
int i=0;
for(;i<5;i++)
{
for(;result[i].sport!=NULL;result[i].sports++)
{
if(result[i].gender==male)
score[i].malescore+=result[i].score;
else
score[i].femalescore+=result[i].score;
}
score[i].totalscore=score[i].malescore+score[i].femalescore;

}
for(i=0;i<5;i++)
{
printf("The school %s's score are : \n",result[i].schoolname);
printf("The total score of male is : %d \n",score[i].malescore);
printf("The total score of female is : %d \n",score[i].femalescore);
printf("The total of All are : %d \n",score[i].totalscore);
}
}
...全文
342 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
东大坡居士 2009-10-17
  • 打赏
  • 举报
回复
贴的 不规范啊
t1397018 2009-10-17
  • 打赏
  • 举报
回复
自己单步了,考眼睛能看出来的么?
ekisstherain 2009-10-17
  • 打赏
  • 举报
回复
void Scores(ResultType *result, ScoreType *score)
/* 求各校的男、女总分和团体总分, 并依次存入数组score */
/* 假设比赛结果已经储存在result[ ]数组中, */
/* 并以特殊记录 {"", male, ' ', "", 0 }(域scorce=0)*/
/* 表示结束 */
{
int i=0;
while(result.sport!=NULL)
{
switch(result.schoolname)
{
case 'A':
score[ 0 ].totalscore+=result.score;
if(result.gender==male) score[ 0 ].malescore+=result.score;
else score[ 0 ].femalescore+=result.score;
break;
case 'B':
score[ 1 ].totalscore+=result.score;
if(result.gender==male) score[1 ].malescore+=result.score;
else score[ 1 ].femalescore+=result.score;
break;
case 'C':
score[ 2].totalscore+=result.score;
if(result.gender==male) score[ 2 ].malescore+=result.score;
else score[ 2 ].femalescore+=result.score;
break;
case 'D':
score[ 3 ].totalscore+=result.score;
if(result.gender==male) score[ 3 ].malescore+=result.score;
else score[ 3 ].femalescore+=result.score;
break;
case 'E':
score[ 4].totalscore+=result.score;
if(result.gender==male)score[ 4 ].malescore+=result.score;
else score[ 4 ].femalescore+=result.score;
break;
default:break;
}
i++;
}
for(i=0;i<5;i++)
{
printf("the school %s:\n", result.schoolname) ;
printf("Total score of male:%d\n",score.malescore);
printf("Total score of female:%d\n",score.femalescore);
printf("Total score of all:%d\n\n",score.totalscore);
}
}
xiaoQ008 2009-03-19
  • 打赏
  • 举报
回复
诶,算法~~~~~~~~~~
hin_longkid 2009-03-19
  • 打赏
  • 举报
回复
void Scores(ResultType *result, ScoreType *score)
/* 求各校的男、女总分和团体总分, 并依次存入数组score */
/* 假设比赛结果已经储存在result[ ]数组中, */
/* 并以特殊记录 {"", male, ' ', "", 0 }(域scorce=0)*/
/* 表示结束 */
{
int i = 0;

for(i = 0;result[i].sport != NULL;i++) {
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 'E':
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;
}
}
}

hhpltby2007 2009-03-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 short135 的回复:]
C/C++ code
int i=0; j=0;
/*i用于5个院校每个院校的数据,j是用于每个院校内各个项目的数据,不能将i用于内循环 */
for(;i <5;i++)
{
for(;result[j].sport!=NULL;result[j].sport++)
{
if(result[j].gender==male)
score[i].malescore+=result[j].score;
else
score[i].femalescore+=result[j].score;
}

[/Quote]


你的说法不错~~~~
可还是不行
下面是我的测试:


void Scores(ResultType *result, ScoreType *score)
/* Çó¸÷УµÄÄС¢Å®×Ü·ÖºÍÍÅÌå×Ü·Ö, ²¢ÒÀ´Î´æÈëÊý×éscore */
/* ¼ÙÉè±ÈÈü½á¹ûÒѾ­´¢´æÔÚresult[ ]Êý×éÖÐ, */
/* ²¢ÒÔÌØÊâ¼Ç¼ {"", male, ' ', "", 0 }£¨Óòscorce=0£©*/
/* ±íʾ½áÊø */
{
int i=0,j=0;
for(;i<5;i++)
{
for(;result[j].sport!=NULL;result[j].sport++)
{
if(result[j].gender==male)
score[i].malescore+=result[j].score;
else
score[i].femalescore+=result[j].score;
j++;
}
score[i].totalscore=score[i].malescore+score[i].femalescore;
}
for(i=0;i <5;i++)
{
printf("The school %s's score are : \n",result[i].schoolname);
printf("The total score of male is : %d \n",score[i].malescore);
printf("The total score of female is : %d \n",score[i].femalescore);
printf("The total of All are : %d \n",score[i].totalscore);
}
}



结果:
Compile Success!
<第1次运行>
A$: School Male Female Total
A$: A 20 26 46
A$: B 23 18 41
A$: C 11 19 30
A$: D 31 24 55
A$: E 25 23 48
A$: ---------------------------
A$: 合计 110 110 220
A$:
Compile Success!
<第2次运行>
A$: School Male Female Total
A$: A 20 14 34
A$: B 26 33 59
A$: C 8 15 23
A$: D 26 26 52
A$: E 30 22 52
A$: ---------------------------
A$: 合计 110 110 220
A$:


不出现死循环了~~~
不过结果不正确啊~~~~
烦~~~~~~
hhpltby2007 2009-03-07
  • 打赏
  • 举报
回复
你的这个看法好像有道理……
我试试看
hhpltby2007 2009-03-07
  • 打赏
  • 举报
回复
我的编译没有问题,就是算法可能有问题……
运行时有时出现死循环
唉……
seu_abc 2009-03-07
  • 打赏
  • 举报
回复
for(;result[i].sport!=NULL;result[i].sports++)
这行中result[i].sports -----> result[i].sport 吧
short135 2009-03-07
  • 打赏
  • 举报
回复

int i=0; j=0;
/*i用于5个院校每个院校的数据,j是用于每个院校内各个项目的数据,不能将i用于内循环 */
for(;i <5;i++)
{
for(;result[j].sport!=NULL;result[j].sports++)
{
if(result[j].gender==male)
score[i].malescore+=result[j].score;
else
score[i].femalescore+=result[j].score;
}
score[i].totalscore=score[i].malescore+score[i].femalescore;

}
野男孩 2009-03-07
  • 打赏
  • 举报
回复
结构还行,能用。有问题?
hhpltby2007 2009-03-07
  • 打赏
  • 举报
回复
我在系统运行时出错,就是出现不了正确的结果~~~~
烦~~~~~~

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧