student.h文件为/* student.h: 头文件中包含Student类型,两种格式的输入函数,输出函数 */ #include <stdio.h> typedef struct { int y, m, d; //y,m,d域变量存放年、月、日,同类型的域变量可以成批定义 } Birthday; //Birthday是出生日期类型 typedef struct { char no[7]; char name[10]; char sex[3]; Birthday birth; int grade[4]; } Student; //Student是学生类型 /* inputstud1: 多行输入1个学生的各项信息,统计总分项 */ void inputstud1(Student * p) { int i,m; printf("请输入学生的各项信息:\n"); printf("学号:"); scanf("%s",p->no); printf("姓名:"); scanf("%s",p->name); printf("性别:"); scanf("%s",p->sex); printf("出生日期(yyyy-mm-dd):"); scanf("%d-%d-%d",&p->birth.y,&p->birth.m,&p->birth.d); printf("语文:"); scanf("%d",&p->grade[0]); printf("数学:"); scanf("%d",&p->grade[1]); printf("英语:"); scanf("%d",&p->grade[2]); for(m=0,i=0;i<3;i++) m+=p->grade[i]; p->grade[3]=m; } /* inputstud2: 一行输入1个学生的各项信息,统计总分项 */ void inputstud2(Student * p) { int i,m; printf("请输入学生的学号、姓名、性别、出生日期、语文、数学、英语等信息:\n"); scanf("%s%s%s",p->no, p->name, p->sex); scanf("%d-%d-%d",&p->birth.y,&p->birth.m,&p->birth.d); for(m=0,i=0;i<3;i++) //输入各科成绩并统计总分 { scanf("%d",&p->grade[i]); m+=p->grade[i]; } p->grade[3]=m; } /* 逐行显示学生指针p所指向的数组成员开始的n个成员 */ void outputstud(Student *p, int n) { int i,j; printf(" %-7s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n","学号","姓名","性别","出生日期","语文","数学","英语","总分"); //使用\t制表符上下左对齐显示学生信息 for(i=0;i<n;i++) { printf("%-3d%-7s\t%s\t%s\t",i+1,p[i].no, p[i].name, p[i].sex); printf("%d-%d-%d", p[i].birth.y, p[i].birth.m, p[i].birth.d); for(j=0;j<4;j++) printf("\t%d", p[i].grade[j]); printf("\n"); } }
时间: 2024-04-06 18:30:28 浏览: 144
这是一个C语言的头文件,定义了两个结构体类型:Birthday和Student,分别表示出生日期和学生信息。它还定义了三个函数:inputstud1、inputstud2和outputstud,分别用于输入学生信息(可以逐行输入或一行输入)、计算学生总分并输出学生信息。这些函数可以在其他C语言程序中调用,实现学生信息的输入、计算和输出。
相关问题
定义一个描述学生基本情况的类,数据成员包括:年龄、姓名、性别;成员函数包括:输入和输出各个数据成员的值。 分别给出如下的3个文件: ①含类定义的头文件student.h, //student.h (这是头文件,在此文件中进行类的声明) class Student //类声明 { public: void display( ); //公用成员函数原型声明 private: int num; char name[20]; char sex; }; ②包含成员函数定义的源文件student.cpp //student.cpp //在此文件中进行函数的定义 #include <iostream> using namespace std; #include "student.h" //不要漏写此行,否则编译通不过 void Student::display( ) //在类外定义display类函数 { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; } ③包含主函数的源文件main.cpp。 为了组成一个完整的源程序,应当有包括主函数的源文件: //main.cpp 主函数模块 #include <iostream> using namespace std; #include "student.h" //将类声明头文件包含进来 int main( ) {Student stud; //定义对象 stud.display(); //执行stud对象的display函数 return 0; } 请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。上机调试并运行。
好的,我知道了。以下是完整的程序:
student.h:
```
class Student {
public:
void display();
void set_value(int n, const char* na, char s);
private:
int num;
char name[20];
char sex;
};
```
student.cpp:
```
#include <iostream>
#include <cstring>
#include "student.h"
using namespace std;
void Student::display() {
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "sex: " << sex << endl;
}
void Student::set_value(int n, const char* na, char s) {
num = n;
strcpy(name, na);
sex = s;
}
```
main.cpp:
```
#include <iostream>
#include "student.h"
using namespace std;
int main() {
Student stud;
stud.set_value(123, "Tom", 'M');
stud.display();
return 0;
}
```
运行结果:
```
num: 123
name: Tom
sex: M
```
这个程序定义了一个学生类,包括年龄、姓名和性别三个数据成员,以及输入和输出数据成员的值的成员函数。在类中增加了一个对数据成员赋初值的成员函数set_value,用于对学生对象的数据成员进行赋值。在主函数中,首先定义了一个学生对象stud,然后调用set_value函数对其数据成员进行赋值,最后调用display函数输出学生对象的数据成员。
定义一个描述学生基本情况的类,数据成员包括:年龄、姓名、性别;成员函数包括:输入和输出各个数据成员的值。分别给出如下的3个文件:①含类定义的头文件student.h,//student.h (这是头文件,在此文件中进行类的声明)class Student //类声明{ public:void display( );//公用成员函数原型声明 private:int num;char name[20];char sex; };②包含成员函数定义的源文件student.cpp//student.cpp//在此文件中进行函数的定义#include <iostream>using namespace std;#include "student.h"//不要漏写此行,否则编译通不过void Student::display( )//在类外定义display类函数{ cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl;}③包含主函数的源文件main.cpp。为了组成一个完整的源程序,应当有包括主函数的源文件://main.cpp主函数模块#include <iostream>using namespace std;#include "student.h"//将类声明头文件包含进来int main( ){Student stud;//定义对象 stud.display();//执行stud对象的display函数return 0;}请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。上机调试并运行。
完善后的程序如下:
student.h
```cpp
// student.h
class Student {
public:
void display();
void set_value(int n, char *str, char s);
private:
int num;
char name[20];
char sex;
};
```
student.cpp
```cpp
// student.cpp
#include <iostream>
#include <cstring>
#include "student.h"
using namespace std;
void Student::display() {
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "sex: " << sex << endl;
}
void Student::set_value(int n, char *str, char s) {
num = n;
strcpy(name, str);
sex = s;
}
```
main.cpp
```cpp
// main.cpp
#include <iostream>
#include <cstring>
#include "student.h"
using namespace std;
int main() {
Student stud;
stud.set_value(1001, "Tom", 'M');
stud.display();
return 0;
}
```
程序的输出结果为:
```
num: 1001
name: Tom
sex: M
```
阅读全文