求大佬解释,我这段代码哪错了

Fire_Sky_Ho 2017-03-18 09:37:31
#include<iostream>
using namespace std;

struct student
{
int num;

char name[10];

int score1;

int score2;

int score3;

float aver;
};

void main()
{
void input(struct student stu[]);

void scoresort(struct student stu[]);

void output(struct student stu[]);

struct student stu[3],*p=stu;

input(p);

scoresort(p);

output(p);

}

void input(struct student stu[])
{
int i;

printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\n");

for(i=0;i<3;i++)

{

scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);

stu[i].aver=(stu[i].score1+stu[i].score2+stu[i].score3)/3;

}

printf("\n");

cout<<"Before Sort:"<<endl;

printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\tAVERAGE\n");

for(i=0;i<3;i++)

printf("%d\t%s\t%d\t%d\t%d\t%f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].aver);

printf("\n");


}

void scoresort(struct student stu[])
{
int i=0,j,k;
struct student p;

for(;i<2;i++)
{ k=i;

for(j=i+1;j<3;j++)

if(stu[j].aver>stu[k].aver) k=j;

if(k!=i)

{
p=stu[i];stu[j]=stu[k];stu[k]=p;
}



}

void output(struct student stu[])

{
int i;

cout<<"After Sort:"<<endl;

printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\tAVERAGE\n");

for(i=0;i<3;i++)

printf("%d\t%s\t%d\t%d\t%d\t%f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].aver);

printf("\n");
}


提示错误:
c:\documents and settings\administrator\local settings\temp\vmware-administrator\vmwarednd\17b02f10\55555.cpp(92) : error C2601: 'output' : local function definitions are illegal
c:\documents and settings\administrator\local settings\temp\vmware-administrator\vmwarednd\17b02f10\55555.cpp(105) : fatal error C1004: unexpected end of file found

错哪了,要咋改啊!
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-03-20
  • 打赏
  • 举报
回复
函数声明,建议不要放在main函数里,放在函数之外,main函数之上最好;
Pingo520 2017-03-20
  • 打赏
  • 举报
回复
scoresort里的for循环的大括号不对称
赵4老师 2017-03-20
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
paschen 2017-03-19
  • 打赏
  • 举报
回复
大括号不对称,这样改:

#include<iostream>
using namespace std;

struct student 
{
	int num;

	char name[10];

	int score1;

	int score2;

	int score3;

	float aver;
};

void main()
{
	void input(struct student stu[]);

	void scoresort(struct student stu[]);

	void output(struct student stu[]);

	struct student stu[3],*p=stu;

	input(p);

	scoresort(p);

	output(p);

}

void input(struct student stu[])
{
	int i;

	printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\n");

	for(i=0;i<3;i++)

	{

		scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);

		stu[i].aver=(stu[i].score1+stu[i].score2+stu[i].score3)/3;

	}

	printf("\n");

	cout<<"Before Sort:"<<endl;

	printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\tAVERAGE\n");

	for(i=0;i<3;i++)

		printf("%d\t%s\t%d\t%d\t%d\t%f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].aver); 

	printf("\n");


}

void scoresort(struct student stu[])
{
	int i=0,j,k;   
	struct student p;

	for(;i<2;i++)
	{    k=i;

	for(j=i+1;j<3;j++)

		if(stu[j].aver>stu[k].aver) k=j;

	if(k!=i)

	{
		p=stu[i];stu[j]=stu[k];stu[k]=p;
	}



	}
}

void output(struct student stu[])
{
	int i;        

	cout<<"After Sort:"<<endl;

	printf("NUM\tNAME\tSCORE1\tSCORE2\tSCORE3\tAVERAGE\n");

	for(i=0;i<3;i++)

		printf("%d\t%s\t%d\t%d\t%d\t%f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].aver); 

	printf("\n");
}	
幻夢之葉 2017-03-19
  • 打赏
  • 举报
回复
scoresort里面少了些 } 右大括号

69,382

社区成员

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

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