C++编程作业
第一题:
/*实现一个学生信息处理程序,计算一个学生的四年平均成绩。
要求实现一个代表学生的类,并且类中所有成员变量都是【私有的】。
补充下列程序中的 Student 类以实现上述功能。
输入数据为一行,包括:
姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
信息之间用逗号隔开。
输出一行数据,包括:
姓名,年龄,学号,四年平均成绩。
信息之间用逗号隔开。
*/
代码:
#include <iostream>
#include<cstring>
#include<stdlib.h>//atoi的头文件
using namespace std;
class Student
{
private:
static const int COURSE_NUM=4;
char name[30];
int age;
long ID;
float scores[COURSE_NUM];
float sum=0;
public:
void Read()
{
char buf[201];//用于存放输入的信息
cin.getline(buf,200);//将信息录入
char *p=strtok(buf,",");
strcpy(name,p);//input name
p=strtok(NULL,",");//age
age=atoi(p);//atoi let a string chage to a number
p=strtok(NULL,",");//ID
ID=atoi(p);//input ID
for(int i=0;i<COURSE_NUM;i++)
{
p=strtok(NULL,",");
scores[i]=atoi(p);
sum+=scores[i];
}
}
float average()
{
return (sum/COURSE_NUM);
}
void PrintMessage()
{
cout<<name<<","<<age<<","<<ID<<","<<average()<<endl;
}
};
int main()
{
Student s1;
s1.Read();
s1.PrintMessage();
return 0;
}
结果:
Tom,18,201830,90,98,94,100
Tom,18,201830,95.5
收获:
1. atoi(),头文件#include<stdlib.h>,将字符转换为数字。
2. strtok(a,b),头文件#include<cstring>,用一个char*型p接收函数结果,然后在将p的值赋给其他变量(相等于p是一个桥梁)。刚开始时a放入接收输入的字符串,后来的a写成NULL即可,b一直写分隔符。
3.static const type a=XX,定义常量。