C++ atoi strtok

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,定义常量。

发布了30 篇原创文章 · 获赞 6 · 访问量 999

猜你喜欢

转载自blog.csdn.net/weixin_43677405/article/details/100048888