c++note1 简单的学生信息处理程序实现

来源:互联网 发布:计算机二级考试知乎 编辑:程序博客网 时间:2024/06/04 20:35

简单的学生信息处理程序实现

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

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

描述

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

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

输入

姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩, 第四学年平均成绩。其中姓名、学号为字符串,不含空格和逗号;年龄为正整数;成绩为非负整数。各部分内容之间均用单个英文逗号”,”隔开,无多余空格。输出一行,按顺序输出:姓名,年龄,学号,四年平均成绩(向下取整)。
各部分内容之间均用单个英文逗号”,”隔开,无多余空格。

样例输入

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

样例输出

Tom,18,7817,80

习题来源:http://cxsjsxmooc.openjudge.cn/test/C/

实现代码如下:

#include "stdafx.h"#include<iostream>#include <stdlib.h>#include <string.h>using namespace std;class StuInfo{private: char *pname = new char(sizeof(char)), *pnum = new char(sizeof(char));         int age, gra1, gra2, gra3, gra4;         int average;public:         StuInfo()        {        }        ~StuInfo()        {            delete(pname);            delete(pnum);        }        int get_average(int a[],int cout);        char get_name(char a);        char get_num(char a);        int get_ingre(char *a);};int main(){    char *na = new char(sizeof(char)), *n = new char(sizeof(char)), a[7][15] = {0};    int age,g, gra[4] = {0};    StuInfo A;    int i = 0;    for (i = 0; i < 6; i++)        cin.getline(a[i], 15, ',');    cin.getline(a[i], 5);    na = a[0];    n = a[1];    age = A.get_ingre(a[2]);    for (i = 0; i < 4; i++)    {        gra[i] = A.get_ingre(a[3+i]);    }    g = A.get_average(gra,i);    cout << na << ',' << n <<',' << age << ',' << g << endl;    delete(na);    delete(n);    system("pause");    return 0;}char StuInfo::get_num(char a){    return a;}char StuInfo::get_name(char a){    return a;}int StuInfo::get_ingre(char a[]){    return atoi(a);}int StuInfo::get_average(int a[],int cout){    int i;    float average = 0;    for (i = 0; i < cout; i++)    {        average += a[i];    }    return floor(average / cout);}

注释:

common:

private: 私有元素,内部对象函数才可使用。StuInfo()与~StuInfo(): 分别为构造函数和析构函数。可用于类对象的初始化和类对象的结束解析。"::": 作用域运算符。表示该函数被声明在类A的作用域内。

getline:

basic_istream& getline( char_type* s, std::streamsize count ); (1)  basic_istream& getline( char_type* s, std::streamsize count, char_type delim ); (2)  s - pointer to the character string to store the characters to count - size of character string pointed to by s delim - delimiting character to stop the extraction at. It is extracted but not stored. 

int atoi( const char *str );

Interprets an integer value in a byte string pointed to by strstr - pointer to the null-terminated byte string to be interpreted 

double floor( double arg );

Computes the largest integer value not greater than arg.arg - floating point value 

void* operator new ( std::size_t count ); (1)
void* operator new[]( std::size_t count ); (2)

(1) Called by non-array new-expressions to allocate storage required for a single object. The standard library implementation allocates count bytes from free store. In case of failure, the standard library implementation calls the function pointer returned by std::get_new_handler and repeats allocation attempts until new handler does not return or becomes a null pointer, at which time it throws std::bad_alloc. This function is required to return a pointer suitably aligned to hold an object of any fundamental alignment.(2) Called by the array form of new[]-expressions to allocate all storage required for an array (including possible new-expression overhead). The standard library implementation calls version (1)count - number of bytes to allocate 

void operator delete ( void* ptr ); (1)
void operator delete[]( void* ptr ); (2)

1) Called by delete-expressions to deallocate storage previously allocated for a single object. The behavior of the standard library implementation of this function is undefined unless ptr is a null pointer or is a pointer previously obtained from the standard library implementation of operator new(size_t) or operator new(size_t, std::nothrow_t).2) Called by delete[]-expressions to deallocate storage previously allocated for an array of objects. The behavior of the standard library implementation of this function is undefined unless ptr is a null pointer or is a pointer previously obtained from the standard library implementation of operator new[](size_t) or operator new[](size_t, std::nothrow_t).ptr - pointer to a memory block to deallocate or a null pointer 
阅读全文
0 0