原题链接:[编程入门]结构体之成绩记录
解题思路:
自定义数据类型将不同类型数据组和在一起形成一个新的数据类型Student,然后在主函数中定义一个该类型的数组变量,根据题目要求,主要功能需要自定义函数来实现,所以定义函数input来输入学生的各种信息,代码如下:
void input(Student student[],int N) { int i; for(i=0;i<N;i++) { cin>>student[i].Id; cin>>student[i].Name; cin>>student[i].Ane_score; cin>>student[i].Two_score; cin>>student[i].Three_score; } }
定义函数print来输出学生的信息,代码如下:
void print(Student student[],int N) { int i; for(i=0;i<N;i++) { cout<<student[i].Id<<"," <<student[i].Name<<"," <<student[i].Ane_score<<"," <<student[i].Two_score<<"," <<student[i].Three_score<<endl; } }
然后在主函数中调用这两个函数即可得到结果,在传递函数参数时没有使用指针是因为用数组名做函数实参时,不是把数组元素的值传递给了形参,而是把实参数组首元素的地址传给了形参数组,这样的话,形参数组和实参数组就共同使用同一内存空间,当形参数组中元素的值发生改变时,实参数组的值也随之改变。所以不需要使用指针。
参考代码:
#include<iostream> #include<string> using namespace std; //创建学生结构体 struct Student { string Id; string Name; int Ane_score; int Two_score; int Three_score; }; //用于输入学生数据 void input(Student student[],int N) { int i; for(i=0;i<N;i++) { cin>>student[i].Id; cin>>student[i].Name; cin>>student[i].Ane_score; cin>>student[i].Two_score; cin>>student[i].Three_score; } } //用于输出学生的数据 void print(Student student[],int N) { int i; for(i=0;i<N;i++) { cout<<student[i].Id<<"," <<student[i].Name<<"," <<student[i].Ane_score<<"," <<student[i].Two_score<<"," <<student[i].Three_score<<endl; } } int main() { int N; cin>>N; Student student[N]; input(student,N); print(student,N); return 0; }
0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复