c++-求解C++编程中遇到的问题

问题描述

求解C++编程中遇到的问题


#include
#include
using namespace std;
class Stud
{private:
int no;
char name;
float deg;
public:
static float sum;
static int num;
static float avg();
static void disp();
};
float Stud::sum=0.0;
int Stud::num=0;
Stud::Stud(int m,char n,float d)
{no=m;
name=n;
deg=d;
sum+=deg;
}

float Stud::avg()
{return sum/num;}

void Stud::disp()
{cout<<"学号:"<<no<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"成绩:"<<deg<<endl;
cout<<"平均分:"<<avg()<<endl;
}

int main()
{
Stud s1(101,"Xiaoming",84),s2(102,"Xiaohong",94),s3(103,"Xiaofang",87);
s1.avg();
s1.disp();
s2.avg();
s2.disp();
s3.avg();
s3.disp();
return 0;
}

解决方案

构造函数重载需要在类中声明才能使用,另外一个是非静态成员变量不能直接在静态成员函数中使用,可以采用类指针(模拟类似this指针)解决。

 #include <iostream>
using namespace std;

class Stud
{
    private:
        int no;
        char* name;
        float deg;
    public:
        Stud(int m, char* n, float d);
        static float sum;
        static int num;
        static float avg(Stud* stud);
        static void disp(Stud* stud);
};

float Stud::sum = 0.0;
int Stud::num = 3;

Stud::Stud(int m, char* n, float d)
{
    no=m;
    name=n;
    deg=d;
    sum+=deg;
}

float Stud::avg(Stud* stud)
{
    return stud->sum/stud->num;
}

void Stud::disp(Stud* stud)
{
    cout<<"学号:"<<stud->no<<endl;
    cout<<"姓名:"<<stud->name<<endl;
    cout<<"成绩:"<<stud->deg<<endl;
    cout<<"平均分:"<<stud->avg(stud)<<endl;
}

int main()
{
    Stud s1(101,"Xiaoming",84),s2(102,"Xiaohong",94),s3(103,"Xiaofang",87);
    s1.avg(&s1);
    s1.disp(&s1);
    s2.avg(&s2);
    s2.disp(&s2);
    s3.avg(&s3);
    s3.disp(&s3);
    return 0;
}

解决方案二:

http://blog.csdn.net/xianfajushi/article/details/25134799

解决方案三:

另外字符char只能存储一个字符,像你的Xiaoming要么用字符指针或数组,我给你改成用字符指针了。不知道你这里是不是求三个人的平均分。
我给你改成按这三个人,每人就这一门成绩,求这三个人的平均分(int Stud::num = 3;)了。

时间: 2024-11-15 22:48:24

c++-求解C++编程中遇到的问题的相关文章

java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了)

问题描述 java编程中我想用显示密码把密码显示出来了然而登录却有错 求解 急用 (我想了一天实在没法了) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class weixin extends JFrame implements ActionListener { JPanel panmain; //面板 JLabel lblname,lblpassword,lblphoto; //标签 JLab

求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出?

问题描述 求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出? windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出? 主要是如何测得字符串的长度,然后可以用for循环吗,如果不能用什么循环. 解决方案 string bb = ""; foreach (char aa in "求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出?") { bb += aa.ToString();

对c++多线程编程中信号量的疑惑,求解

问题描述 对c++多线程编程中信号量的疑惑,求解 最近在写多线程,使用到信号量,对于信号量创建.释放createsemaphore和releasesemaphore中的初始资源数.最大并发数.计数增加个数不解,之前有用过,但都没有深入了解以至于现在模糊不清,最大并发数是指什么线程的最大并发数,自己线程or其他线程?增加的计数如果是2,是不是就相当于调用了两次waitfor函数?恳请熟悉这方面的朋友能给一个更为细致具体的讲解,小女不胜感激 解决方案 信号量就是限制同时只有1个或多个线程能够运行,数

服务器-关于java网络编程中获取输入流中数据的问题?

问题描述 关于java网络编程中获取输入流中数据的问题? //服务器端接收消息的类.定制端口号为8888 serviceSocket = new ServerSocket(10000); //获取socket.这个方法是阻塞式的 socket = serviceSocket.accept(); inputStream = socket.getInputStream(); byte buf[] = new byte[1024]; int len = 0; len =inputStream.read

java代码-关于CSDN英雄会挑战赛 java编程中的一些问题

问题描述 关于CSDN英雄会挑战赛 java编程中的一些问题 各位大神,我在挑战英雄会的题目的时候,在线下运行的没有问题,可是一提交就会提示,"挑战失败:你的程序正常编译,不过运行时发生错误,通常是代码有问题,如除数为零数组上下界溢出等" 我觉得可能是java输入数据时的问题,因为题目要求:输入多行数据,输出多行我是这样写的: Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do {

C++UDP组播编程中,组播地址(组播号)与组播地址的关系是什么?和TCP中IP和端口的关系一样吗?

问题描述 C++UDP组播编程中,组播地址(组播号)与组播地址的关系是什么?和TCP中IP和端口的关系一样吗? C++UDP组播编程中,组播地址(组播号)与组播地址的关系是什么?和TCP中IP和端口的关系一样吗?另外,一台计算机上(不经过路由器或交换机)只能有一个组播吗?急求!!! 解决方案 组播地址和多播地支的关系与TCP中IP和端口的关系不太一样. 首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序.通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧. 使

如何在wavecom编程中通过AT指令判断被呼方的第一声回铃音

问题描述 如何在wavecom编程中通过AT指令判断被呼方的第一声回铃音 如何在wavecom编程中通过AT指令判断被呼方的第一声回铃音 解决方案 wavecom 的 AT 返回 RING,即可认为是被叫方的回铃声

深入理解JavaScript编程中的同步与异步机制

  这篇文章主要介绍了深入理解JavaScript编程中的同步与异步机制,不仅仅是AJAX已经深入到了各个角落,Node.js的火爆也让JS的异步编程格外引人注目,需要的朋友可以参考下 JavaScript的优势之一是其如何处理异步代码.异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程.然而,对于初学者来说,书写异步代码可能会比较困难.而在这篇文章里,我将会消除你可能会有的任何困惑. 理解异步代码 JavaScript最基础的异步函数是setTimeout和setInt

Java和jsp编程中应该注意的几个常见问题

1. 对应String类型的对象使用println()方法时,如果对象为null,将打印null而不是引发NullPointerException,由此引用的问题是容易造成错觉,对于以后对字符串的操作容易引起问题. 2. 引发NullPointerException异常,主要原因是没有对对象的存在性进行验证,在jsp编程中经常出现:if(request.getParameter("username").equals("xxx")).out.println(sessi