C++新手求教,“项不会计算为接受“number”个参数的函数”

connora 2008-06-12 11:35:26
/*实验要求:10 个学生,每个学生的数据包括学号、姓名、3门课的成绩,
从键盘输入10 个学生数据,打印出每个学生3门课的平均成绩,
以及最高分的学生的数据(包括学号num、姓名name、3门课的成绩score、平均分数ave)。
要求:用input函数输入10个学生数据;
用average函数求平均分;
用max函数找出总成绩最高分的学生数据;
平均分和最高分学生的数据在主函数中输出。*/
#include<stdio.h>
#include<malloc.h>
#define N 10
#define L sizeof(struct sdt)
#define NULL 0
struct sdt
{ int num;
char name[10];
float score1;
float score2;
float score3;
double ave;
struct sdt *n;
};
struct sdt * CreatTab(void)
{ struct sdt * head,* p1,* p2;
int n;
for(n=1;n<=N;n++)
{ if(n==1) head=p1;
else p1->n=p2;
p2=( struct sdt * ) malloc(L);
p1=p2; }
p2->n=NULL;
return(head);
}
void input(struct sdt * head)
{ struct sdt *p1;
int n;
p1=head;
for(n=1;;n++)
{ printf("请输入第%d个学生的信息:\n",n);
printf("姓名:");
scanf("%s",p1->name);
printf("学号:");
scanf("%d",&p1->num);
printf("成绩1:");
scanf("%f",&p1->score1);
printf("成绩2:");
scanf("%f",&p1->score2);
printf("成绩3:");
scanf("%f",&p1->score3);
p1=p1->n;
if(p1==NULL) break; }
}
struct sdt * average(struct sdt * head)
{ struct sdt *p1;
double ave=0;
p1=head;
for(;;)
{ ave=(p1->score1+p1->score2+p1->score3)/3.0;
if(p1==NULL) break;
p1=p1->n; }
}
struct sdt * max(struct sdt* head)
{ struct sdt * p1;
p1=head;
struct sdt * tab;
double ave=0;
for(;;)
{ if(p1->ave>ave)
ave=p1->ave;
tab=p1;
if(p1==NULL) break;
p1=p1->n; }
return(p1);
}
void main()
{ struct sdt * max,* p,* head;
int n;
p=head;
head=CreatTab();
input(head);
average(head);
max=max(head);
for(n=1;n<=N;n++)
{ printf("第%d个学生的平均分为:%2.1f\n",n,p->ave);
p=p->n; }
printf("最高分学生的信息:\n");
printf("姓名:%s\n",max->name);
printf("学号:%d\n",max->num);
printf("成绩1:%2.1f\n",max->score1);
printf("成绩2:%2.1f\n",max->score2);
printf("成绩3:%2.1f\n",max->score3);
printf("平均分:%2.1f\n",max->ave);
}

使用VC2008速成班编译有错误,错误是在“max=max(head);”处,MSDN说是:
错误消息
项不会计算为接受“number”个参数的函数。
通过表达式调用了函数。该表达式未计算为函数指针。

现在还是没有看懂。

...全文
287 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyle3 2008-06-14
  • 打赏
  • 举报
回复
这个问题以前就很多人问了... 变量名和函数名,局部的,还是全局的,尽量的都不要冲突
[Quote=引用 1 楼 coldwindtang 的回复:]
你max既是变量名又是函数名,编译器当然看不懂了.
改成
struct sdt * maxValue;
...
maxValue = max(head);
[/Quote]
connora 2008-06-14
  • 打赏
  • 举报
回复
问题解决了,谢谢。
唐巧 2008-06-13
  • 打赏
  • 举报
回复
你max既是变量名又是函数名,编译器当然看不懂了.
改成
struct sdt * maxValue;
...
maxValue = max(head);

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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