注册 登录
编程论坛 C++教室

为什么非要把程序中的float改为double才不报错?

maiiho 发布于 2008-10-21 12:27, 789 次点击
#include <iostream.h>
#include <string.h>
class student
{
private:
    static int count;                     //人数
    static float allgrade;                 //成绩
    char *no;
    char *name;
    float grade;
public:
    student(char *no1,char *name1,float grade1)         //构造
    {
        no=new char[strlen(no1)+1];
        strcpy(no,no1);
        name=new char[strlen(name1)+1];
        strcpy(name,name1);
        grade=grade1;
        grade+=allgrade;
        count++;
    }
    ~student()
    {
        delete []name;
        delete []no;
    }
    void setxx(char *no1,char *name1,float grade1)
    {
        no=new char[strlen(no1)+1];
        strcpy(no1,no);
        name=new char[strlen(name1)+1];
        strcpy(name1,name);
        grade=grade1;
        grade+=allgrade;
        count++;
    }
    void showxx(student &)
    {
        cout<<"\n编号="<<no<<"\n姓名="<<name<<"\n成绩="<<grade<<endl;
    }
    void allxx()
    {
        cout<<"\n\n团队人数="<<count<<"\n总成绩="<<allgrade<<"\n评定级别="<<level(float allgrade)<<endl;
    }
    char level(float a)
    {
        char temp;
        if(a>0&&a<30)
            temp='D';
        if(a>30&&a<60)
            temp='C';
        if(a>60&&a<90)
            temp='B';
        if(a>90&&a<120)
            temp='A';
        return(temp);
    }
};
int student::count=0;
float student::allgrade=0;
int main()
{
    student p1("95001","ishimuramaiiho",88.51);
    student p2;
    p2.setxx("95002","shimizusaki",88.67);
    showxx(p2);
    return 0;
}
4 回复
#2
maiiho2008-10-21 12:28
其他错误大家不用管
其他的错误我已经解决了!
#3
随心2008-10-21 13:06
[bo][un]maiiho[/un] 在 2008-10-21 12:27 的发言:[/bo]

#include <iostream>
#include <string>
using namespace std;
class student
{
private:
    static int count;                     //人数
    static float allgrade;                 //成绩
    char *no;
    char *name;
    float grade;
public:
    student(char *no1,char *name1,float grade1)         //构造
    {
        no=new char[strlen(no1)+1];
        strcpy(no,no1);
        name=new char[strlen(name1)+1];
        strcpy(name,name1);
        grade=grade1;
        grade+=allgrade;
        count++;
    }
    ~student()
    {
        delete []name;
        delete []no;
    }
    void setxx(char *no1,char *name1,float grade1)
    {
        no=new char[strlen(no1)+1];
        strcpy(no1,no);
        name=new char[strlen(name1)+1];
        strcpy(name1,name);
        grade=grade1;
        grade+=allgrade;
        count++;
    }
    void showxx(student &)
    {
        cout<<"\n编号="<<no<<"\n姓名="<<name<<"\n成绩="<<grade<<endl;
    }
    void allxx()
    {
        cout<<"\n\n团队人数="<<count<<"\n总成绩="<<allgrade<<"\n评定级别="<<level(float allgrade)<<endl;    // 这个地方错了,你是在声明还是在调用????好好想想,看看书
    }
    char level(float a)
    {
        char temp;
        if(a>0&&a<30)
            temp='D';
        if(a>30&&a<60)
            temp='C';
        if(a>60&&a<90)
            temp='B';
        if(a>90&&a<120)
            temp='A';
        return(temp);
    }
    student()
    {
        count = 0;
        allgrade = 0;
    }
};

int main()
{
    student p1("95001","ishimuramaiiho",88.51);
    student p2;
    p2.setxx("95002","shimizusaki",88.67);
    showxx(p2);    //方法调用有问题,它是一个类中的,能这样调用吗?????
    return 0;
}

// 评语: 问题多多,还需要努力!
#4
maiiho2008-10-21 13:35
问题都该了,只有一个问题了
#include <iostream.h>
#include <string.h>
class student
{
private:
    static int count;                  
    static float allgrade;               
    char *no;
    char *name;
    float grade;
public:
    student(char *no1,char *name1,float grade1)     
    {
        no=new char[strlen(no1)+1];
        strcpy(no,no1);
        name=new char[strlen(name1)+1];
        strcpy(name,name1);
        grade=grade1;
        grade+=allgrade;
        count++;
    }
    ~student()
    {
        delete []name;
        delete []no;
    }
    void setxx(char *no1,char *name1,float grade1)
    {
        no=new char[strlen(no1)+1];
        strcpy(no1,no);
        name=new char[strlen(name1)+1];
        strcpy(name1,name);
        grade=grade1;
        grade+=allgrade;
        count++;
    }
    void showxx(student &)
    {
        cout<<"\n编号="<<no<<"\n姓名="<<name<<"\n成绩="<<grade<<endl;
    }
    void allxx()
    {
        char level(float a);
        cout<<"\n\n团队人数="<<count<<"\n总成绩="<<allgrade<<"\n评定级别="<<level(allgrade)<<endl;
    }
    char level(float a)
    {
        char temp;
        if(a>0&&a<30)
            temp='D';
        if(a>30&&a<60)
            temp='C';
        if(a>60&&a<90)
            temp='B';
        if(a>90&&a<120)
            temp='A';
        return(temp);
    }
};
int student::count=0;
float student::allgrade=0;
int main()
{
    student p1;
    student p2("95001","ishimuramaiiho",89);
    p1.setxx("95002","shimizusaki",88);
    void student::allxx();
    return 0;
}
        
    
错误信息:
--------------------Configuration: 静态函数访问 - Win32 Debug--------------------
Compiling...
静态函数访问.cpp
G:\Users\Maiiho\Desktop\新建文件夹 (2)\c\静态函数访问.cpp(64) : error C2512: 'student' : no appropriate default constructor available
执行 cl.exe 时出错.

静态函数访问.exe - 1 error(s), 0 warning(s)
#5
choco10242008-10-21 22:37
对象p1应该和p2一样被赋初值,要不然编译也会报错。
1