C++ 编程填空:学生信息处理程序

题目描述
  实现一个学生信息处理程序,计算一个学生的四年平均成绩。要求实现一个代表学生的类,并且类中所有成员变量都是【私有的】。补充下列程序中的 Student 类以实现上述功能。

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <cstdlib>
using namespace std;

class Student {
// 在此处补充你的代码
};

int main() {
    Student student;        // 定义类的对象
    student.input();        // 输入数据
    student.calculate();    // 计算平均成绩
    student.output();       // 输出数据
}

输入
  输入数据为一行,包括:姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。 其中姓名为由字母和空格组成的字符串(输入保证姓名不超过20个字符,并且空格不会出现在字符串两端),年龄、学号和学年平均成绩均为非负整数。信息之间用逗号隔开。
输出
  输出一行数据,包括:姓名,年龄,学号,四年平均成绩。 信息之间用逗号隔开。
样例输入1

Tom Hanks,18,7817,80,80,90,70

样例输出1

Tom Hanks,18,7817,80

提示
  必须用类实现,其中所有成员变量都是私有的。输出结果中,四年平均成绩不一定为整数。


解析:

  你们看到提示没,平均成绩不一定是整数,但是题目说的很含糊,我是下载错误数据才知道怎么写的。平均分如果能整除,就显示整数,不能整出的保留一位小数。
  其次就是输入名字,我在输入名字那里浪费了好长时间……
  下面补充两组测试数据:

样例输入2:Leonardo DiCaprio,18,138,59,59,59,63
样例输出2:Leonardo DiCaprio,18,138,60
样例输入3:Wang Hao,21,1300012703,91,96,94,89
样例输出3:Wang Hao,21,1300012703,92.5


答案

private:
    char name[20];
    int id,age;
    float a,b,c,d;
    char ch;
public:
    void input()
    {
        cin.get(name, 21, ',');  //看补充 
        cin>>ch>>age>>ch>>id>>ch>>a>>ch>>b>>ch>>c>>ch>>d;
    };
    float calculate()
    {
        float sum=a+b+c+d;
        return sum/4;
    };
    bool t()
    {
        float sum=(a+b+c+d)/4;
        int a=sum;
        if (a==sum)
            return true;
        else 
            return false;
    }
    void output()
    {
        float mid=calculate();
        cout<<name<<","<<age<<","<<id<<",";
        if (t()==false)
        {
            printf("%.1f",mid);//没有给iomanip头文件,只能选择C语言输出 
        }
        else
            printf("%.0f",mid);
    }

补充

  用到了一个cin.get(name, 20, ',');函数原型是istream& get ( char* s, streamsize n, char delim );第一个参数*s是个字符指针,第二个参数n,表示读入n-1个字符,第三个参数delim表示结束字符(可以不写,不写默认为换行符)。作用是读入一串字符,要么读到n-1个字符停止,要么读到结束字符停止。
   例如:

    char a[10];  //不能写字符串
    cin.get(a,11,'!');
    cout<<a;

输入:abcdefghijklmn
输出:abcdefghij
输入:abcdefg!hijklmn
输出:abcdefg
   
  完整代码:

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <cstdlib>
using namespace std;
class Student {
private:
    char name[20];
    int id,age;
    float a,b,c,d;
    char ch;
public:
    void input()
    {
        cin.get(name, 21, ',');  //看补充 
        cin>>ch>>age>>ch>>id>>ch>>a>>ch>>b>>ch>>c>>ch>>d;
    };
    float calculate()
    {
        float sum=a+b+c+d;
        return sum/4;
    };
    bool t()
    {
        float sum=(a+b+c+d)/4;
        int a=sum;
        if (a==sum)
            return true;
        else 
            return false;
    }
    void output()
    {
        float mid=calculate();
        cout<<name<<","<<age<<","<<id<<",";
        if (t()==false)
        {
            printf("%.1f",mid);//没有给iomanip头文件,只能选择C语言输出 
        }
        else
            printf("%.0f",mid);
    }
};

int main() {
    Student student;        // 定义类的对象
    student.input();        // 输入数据
    student.calculate();    // 计算平均成绩
    student.output();       // 输出数据
}

(づ ̄3 ̄)づ╭❤~我是萝莉安,梦想是做个程序媛

猜你喜欢

转载自blog.csdn.net/qq_36667170/article/details/79772911