编程作业 简单的学生信息处理程序实现[北京大学C++课程]

  • 题目
    注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

在一个学生信息处理程序中,要求实现一个代表学生的类,并且所有成员变量都应该是私有的。

(注:评测系统无法自动判断变量是否私有。我们会在结束之后统一对作业进行检查,请同学们严格按照题目要求完成,否则可能会影响作业成绩。)

输入

姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。

其中姓名、学号为字符串,不含空格和逗号;年龄为正整数;成绩为非负整数。

各部分内容之间均用单个英文逗号”,”隔开,无多余空格。

输出

一行,按顺序输出:姓名,年龄,学号,四年平均成绩(向下取整)。

各部分内容之间均用单个英文逗号”,”隔开,无多余空格。

样例输入

1
Tom,18,7817,80,80,90,70
样例输出
Tom,18,7817,80

作业过程

第二周作业中遇到许多的问题,编写一个小代码就遇到这么多的问题,收获挺大,现将遇到的问题记录下来。
最主要遇到问题是:

- char的使用

利用cin输入char格式

  • 例如:
    char name,number;
    cin >> name>>number;

以上这段式子必须要为name和number赋予大小,不然只能读入第一个字母。
要修改成:

    char name[100],number[100];
    cin >> name>>number;

- 难点是输入的格式是用逗号隔开

尝试了多种方法之后,可使用cin.getline()函数来解决。

    cin.getline(name, 100, ',');
    cin >> age>>k;

其中,cin.getline(name, 100, ‘,’)函数意义为读入name,在大小为100之前不停的读入,直到读入的数据等于100或者为‘,’时停止读入。
k为临时定义的char类型数据。用来存放讲稿数据时遇到的‘,’。
最终代码为:

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;

class CStudent {
private:
    char name[100], number[100];
    int age, avg_year1, avg_year2, avg_year3, avg_year4;
public:
    void Init(char name_[100], int age_, char number_[100], int avg_year1_, int avg_year2_, int avg_year3_, int avg_year4_) {
        strcpy_s(name, name_);
        age = age_;
        strcpy_s(number, number_);
        avg_year1 = avg_year1_;
        avg_year2 = avg_year2_;
        avg_year3 = avg_year3_;
        avg_year4 = avg_year4_;
    }

    void Message() {
        cout << name<< ',' << age << ',' << number << ',' << (avg_year1 + avg_year2 + avg_year3 + avg_year4) / 4 << endl;
    }
};

int main(int argc, char *argv[])
{
    char name[100],number[100];
    char k;
    int age,avg_year1,avg_year2,avg_year3,avg_year4;

    cin.getline(name, 100, ',');
    cin >> age>>k;
    cin.getline(number, 100, ',');
    cin >> avg_year1 >> k >> avg_year2 >> k >> avg_year3 >> k >> avg_year4;
    CStudent S;
    S.Init(name, age, number, avg_year1, avg_year2, avg_year3, avg_year4);
    S.Message();
    return 0;
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值