69,371
社区成员
发帖
与我相关
我的任务
分享
/*在学数据结构时在anyviewds系统上做题出现如下错误。
*/
相关数据类型定义如下:
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= (result->schoolname - 'A');
for(i = 0; i < 5; i++)
//score[i].malescore = 0; ////////////这一句跟下面一句是等价的,其中任一句编译能通过。
(score+i)->malescore = 0;
score[i].femalescore = 0;
score[i].totalscore = 0;
for(; *result->sport; result++)
{
if(female == result->gender)
score[result->schoolname - 'A'].femalescore += result->score;
else
//score[result->schoolname - 'A'].malescore += result->score;
//////////这里上下两句代码也应该是等价的,怎么下面那句编译有错:Invalid Type-->
(score + result->schoolname - 'A')->malescore += result->score;
score[result->schoolname - 'A'].totalscore += result->score;
}
printf("malescore femalescore totalscore\n");
for(i = 0; i < 5; i++)
printf("%9d%9d%9d\n", score[i].malescore,
score[i].femalescore, score[i].totalscore);
}
for(i = 0; i < 5; i++)
{
score[i].malescore = 0;
//这两条语句应该是等价的。但如果把上面那句改成下面那句,编译成功,运行就错了。
//(score+i)->malescore = 0;
score[i].femalescore = 0;
score[i].totalscore = 0;
}
for(; *result->sport; result++)
{
if(female == result->gender)
score[result->schoolname - 'A'].femalescore += result->score;
else
score[result->schoolname - 'A'].malescore += result->score;
//这里上下两句代码也应该是等价的,但下面那句编译有错:Invalid Type-->
// (score + result->schoolname - 'A')->malescore += result->score;
score[result->schoolname - 'A'].totalscore += result->score;
}
//应该是这个anyviews编译器的问题。我们老师说这个编译器内核是另外自己写的,可能在这一点上支持得不好吧。