请教尝试把一个C++程序变成多文件组织遇到的问题
原程序如下:#include<iostream.h>structstudent{longnum;charname[20];floatscore[4],ave;};void...
原程序如下:
#include<iostream.h>
struct student
{
long num;
char name[20];
float score[4],ave;
};
void input (student s[],int n)
{
int i;
cout<<"请输入"<<n<<"个学生的学号、姓名和四门课的成绩:\n";
for(i=0;i<n;i++)
{
cin>>s[i].num;
cout<<"下面请输入姓名。"<<endl;
cin.getline(s[i].name,20);
cin>>s[i].score[0]>>s[i].score[1];
cin>>s[i].score[2]>>s[i].score[3];
cout<<"\n第"<<i+2<<"位同学的信息与资料"<<endl;
}
}
void print(student s[],int n)
{
int i;
cout<<"学号 姓名 高数 英语 物理 C++ 平均成绩\n";
for(i=0;i<n;i++)
{
cout<<s[i].num<<' '<<s[i].name<<' ';
cout<<s[i].score[0]<<' '<<s[i].score[1]<<' ';
cout<<s[i].score[2]<<' '<<s[i].score[3]<<' ';
cout<<s[i].ave<<'\n';
}
}
void main()
{
student stu[2];
int i,j;
float sum;
input(stu,2);
for(i=0;i<2;i++)
{
sum=0;
for(j=0;j<4;j++)
sum+=stu[i].score[j];
stu[i].ave=sum/4;
}
print(stu,2);
}
现在我要把这个程序变成多文件组织结构,即把两个函数放到另外两个文件里,结构体定义做成一个头文件。
如下:
主程序:
#include<iostream.h>
#include<D:\Software Program\大二短学期作业\C++学习文件\结构体数组,输出学生成绩\struct.h>
student stu[2];
void input(stu,int);
void print(stu,int);
void main()
{
int i,j;
float sum;
input(stu,2);
for(i=0;i<2;i++)
{
sum=0;
for(j=0;j<4;j++)
sum+=stu[i].score[j];
stu[i].ave=sum/4;
}
print(stu,2);
}
结构体头文件:
#include<iostream.h>
struct student
{
long num;
char name[20];
float score[4],ave;
};
input函数:
#include<iostream.h>
void input (student s[],int n)
{
int i;
cout<<"请输入"<<n<<"个学生的学号、姓名和四门课的成绩:\n";
for(i=0;i<n;i++)
{
cin>>s[i].num;
cout<<"下面请输入姓名。"<<endl;
cin.getline(s[i].name,20);
cin>>s[i].score[0]>>s[i].score[1];
cin>>s[i].score[2]>>s[i].score[3];
cout<<"\n第"<<i+2<<"位同学的信息与资料"<<endl;
}
}
print函数:
#include<iostream.h>
void print(student s[],int n)
{
int i;
cout<<"学号 姓名 高数 英语 物理 C++ 平均成绩\n";
for(i=0;i<n;i++)
{
cout<<s[i].num<<' '<<s[i].name<<' ';
cout<<s[i].score[0]<<' '<<s[i].score[1]<<' ';
cout<<s[i].score[2]<<' '<<s[i].score[3]<<' ';
cout<<s[i].ave<<'\n';
}
}
出现了很多错误。
1.cpp
①1.cpp(4) : error C2062: type 'int' unexpected
②1.cpp(5) : error C2062: type 'int' unexpected
③1.cpp(14) : error C2065: 'input' : undeclared identifier
④1.cpp(22) : error C2065: 'print' : undeclared identifier
若有大神能帮我修改,万分感谢!
若大神没有那么多时间,请帮忙回答我几个问题:
1,input函数和Print函数既有字符又有数值,调用时的申明格式应该怎样写?
2,③④错误为什么出现?如何修正?
万分感谢各位的回答。 展开
#include<iostream.h>
struct student
{
long num;
char name[20];
float score[4],ave;
};
void input (student s[],int n)
{
int i;
cout<<"请输入"<<n<<"个学生的学号、姓名和四门课的成绩:\n";
for(i=0;i<n;i++)
{
cin>>s[i].num;
cout<<"下面请输入姓名。"<<endl;
cin.getline(s[i].name,20);
cin>>s[i].score[0]>>s[i].score[1];
cin>>s[i].score[2]>>s[i].score[3];
cout<<"\n第"<<i+2<<"位同学的信息与资料"<<endl;
}
}
void print(student s[],int n)
{
int i;
cout<<"学号 姓名 高数 英语 物理 C++ 平均成绩\n";
for(i=0;i<n;i++)
{
cout<<s[i].num<<' '<<s[i].name<<' ';
cout<<s[i].score[0]<<' '<<s[i].score[1]<<' ';
cout<<s[i].score[2]<<' '<<s[i].score[3]<<' ';
cout<<s[i].ave<<'\n';
}
}
void main()
{
student stu[2];
int i,j;
float sum;
input(stu,2);
for(i=0;i<2;i++)
{
sum=0;
for(j=0;j<4;j++)
sum+=stu[i].score[j];
stu[i].ave=sum/4;
}
print(stu,2);
}
现在我要把这个程序变成多文件组织结构,即把两个函数放到另外两个文件里,结构体定义做成一个头文件。
如下:
主程序:
#include<iostream.h>
#include<D:\Software Program\大二短学期作业\C++学习文件\结构体数组,输出学生成绩\struct.h>
student stu[2];
void input(stu,int);
void print(stu,int);
void main()
{
int i,j;
float sum;
input(stu,2);
for(i=0;i<2;i++)
{
sum=0;
for(j=0;j<4;j++)
sum+=stu[i].score[j];
stu[i].ave=sum/4;
}
print(stu,2);
}
结构体头文件:
#include<iostream.h>
struct student
{
long num;
char name[20];
float score[4],ave;
};
input函数:
#include<iostream.h>
void input (student s[],int n)
{
int i;
cout<<"请输入"<<n<<"个学生的学号、姓名和四门课的成绩:\n";
for(i=0;i<n;i++)
{
cin>>s[i].num;
cout<<"下面请输入姓名。"<<endl;
cin.getline(s[i].name,20);
cin>>s[i].score[0]>>s[i].score[1];
cin>>s[i].score[2]>>s[i].score[3];
cout<<"\n第"<<i+2<<"位同学的信息与资料"<<endl;
}
}
print函数:
#include<iostream.h>
void print(student s[],int n)
{
int i;
cout<<"学号 姓名 高数 英语 物理 C++ 平均成绩\n";
for(i=0;i<n;i++)
{
cout<<s[i].num<<' '<<s[i].name<<' ';
cout<<s[i].score[0]<<' '<<s[i].score[1]<<' ';
cout<<s[i].score[2]<<' '<<s[i].score[3]<<' ';
cout<<s[i].ave<<'\n';
}
}
出现了很多错误。
1.cpp
①1.cpp(4) : error C2062: type 'int' unexpected
②1.cpp(5) : error C2062: type 'int' unexpected
③1.cpp(14) : error C2065: 'input' : undeclared identifier
④1.cpp(22) : error C2065: 'print' : undeclared identifier
若有大神能帮我修改,万分感谢!
若大神没有那么多时间,请帮忙回答我几个问题:
1,input函数和Print函数既有字符又有数值,调用时的申明格式应该怎样写?
2,③④错误为什么出现?如何修正?
万分感谢各位的回答。 展开
2个回答
展开全部
③④错误是因为在主程序中没有包含input和print的定义(实现),解决方法:把这个两个函数的声明放在struct.h中(或者新建一个xxx.h中),然后在每个函数实现的cpp中包含这个头文件即可。
①②的问题是包含input和Print函数的cpp中用到了结构体student,但是没有包含结构体的头文件。
你的函数声明:
void input(stu,int);
void print(stu,int);这种是错的,定义和声明一样的。
应该这样:
void input (student s[],int n)
void print(student s[],int n);
在函数调用的时候,才去实例化参数。
调用方式:
input(stu,2);
print(stu,2);
这样是对的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询