一个求及格成绩的简单实现

Posted 技术不支持

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个求及格成绩的简单实现相关的知识,希望对你有一定的参考价值。

题目要求, 求N个人的成绩及格线, 要求60%的人及格, 及格线高于60, 则取60. 且及格线是10的倍数.

  • result.h
#ifndef RESULT_H
#define RESULT_H

#include <stdlib.h>
#include <time.h>

class Result{
public:
    Result();
    Result(int n);
    Result &operator=(const Result &Re);
    int getPassLine();
    void printResult();
    ~Result();
    int passLine;
public:
    int *p;
    int n;
};

#endif // RESULT_H
  • result.cpp
#include "result.h"
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <iostream>
using namespace std;
Result::Result()
{
    this->passLine = -1;
    this->n = -1;
    p = NULL;
}

Result::Result(int n)
{
    this->passLine = -1;
    if(n<=0)
    {
        this->n = -1;
        p = NULL;
        return;
    }
    this->n = n;
    p = new int[n];
    srand((unsigned int)time(NULL));
    for(int i = 0;i<n;++i)
    {
        p[i] = rand()%101;
        cout<<p[i]<< endl;
    }
}

Result &Result::operator=(const Result &Re)
{
    if(Re.n>0)
    {
        n = Re.n;
        this->p = new int[n];
        memcpy(this->p, Re.p,Re.n*sizeof(int));
        this->passLine = -1;
    }
    else
    {
        this->passLine = -1;
        this->n = -1;
        p = NULL;
    }
    return *this;
}

int Result::getPassLine()
{
    if(this->passLine ==-1&&this->n==-1)
    {
        return -1;
    }
    else if(this->passLine>=0)
    {
        return this->passLine;
    }
    else
    {
        if(n == 1)
        {
            this->passLine = p[0];
        }
        else
        {
            int tmp ;
            for(int i = 0;i<n-1;++i)
            {
                for(int j = 0; j<n-1-i;++j)
                {
                    if(p[j] > p[j+1])
                    {
                        tmp = p[j];
                        p[j] = p[j+1];
                        p[j+1] = tmp;
                    }
                }
            }
            tmp = (int)(n*0.4);
            this->passLine = p[tmp]/10*10;
            if (this->passLine>60)
            {
                this->passLine = 60;
            }
        }
    }
    return this->passLine;
}

void Result::printResult()
{
    if(this->n<=0)
    {
        return;
    }
    else
    {
        for(int i = 0; i< n; ++i)
        {
            cout << p[i]<< "," ;
        }
        cout<< endl;
    }
}

Result::~Result()
{
    delete []p;
}
  • main.cpp
#include <stdio.h>
#include "result.h"
#define N 10
int main(int argc, char *argv[])
{
    Result R(N);
    int line = R.getPassLine();
    R.printResult();
    printf("PassLine:%d\n", line);
    return 0;
}

以上是关于一个求及格成绩的简单实现的主要内容,如果未能解决你的问题,请参考以下文章

数据库提oracle 一张成绩表(里面有三个字段 姓名,学科,成绩) 求显示所有学科均及格的同学名字。

跪求C语言程序代码“学生成绩管理”

C语言 函数 求全班成绩的等级?

结对-及格成绩查询-需求分析

用python输入一个百分制考试成绩,判断是不是及格并输出结果?

php语言编写switch判断成绩代码。分别输出优秀、良好、中等、及格和不及格。