C++错误,求高手帮忙改一下 PS:能运行,但是结果不正确,共两个题
1.排序排不出来,出现莫名其妙的数#include<iostream.h>classStudent{intEnglish,computer,total;public:vo...
1.排序排不出来,出现莫名其妙的数
#include<iostream.h>
class Student
{int English,computer,total;
public:
void getscore();
void display();
int retotal()
{return total;}
};
void Student::getscore()
{cout<<"输入英语成绩:";
cin>>English;
cout<<"输入计算机成绩:";
cin>>computer;
total=English+computer;
}
void Student::display()
{
cout<<"英语="<<English<<"计算机="<<computer<<"总分="<<total<<endl;
}
int main()
{
int total,stu1,stu2,stu3,t;
Student student1;
student1.getscore();
student1.display();
stu1=total;
Student student2;
student2.getscore();
student2.display();
stu2=total;
Student student3;
student3.getscore();
student3.display();
stu3=total;
if(stu1<stu2)
{t=stu1;stu1=stu2;stu2=t;}
else if(stu2<stu3)
{t=stu2;stu2=stu3;stu2=t;}
else if(stu1<stu2)
{t=stu1;stu1=stu2;stu2=t;}
cout<<"stu1="<<stu1<<"stu2="<<stu2<<"stu3="<<stu3<<endl;
}
2.输不出来right或wrong
#include<iostream>
using namespace std;
class charRange
{public:
void setRange();
void showRange();
private:
char a[10];
};
void charRange::setRange()
{int i;
for(i=0;i<10;i++)
cin>>a[i];
}
void charRange::showRange()
{int i;
if(a[i]>'A'&&a[i]<'D')
cout<<"right"<<a[i];
else
cout<<"wrong"<<a[i];
}
int main()
{charRange Range;
Range.setRange();
Range.showRange();
return 0;
} 展开
#include<iostream.h>
class Student
{int English,computer,total;
public:
void getscore();
void display();
int retotal()
{return total;}
};
void Student::getscore()
{cout<<"输入英语成绩:";
cin>>English;
cout<<"输入计算机成绩:";
cin>>computer;
total=English+computer;
}
void Student::display()
{
cout<<"英语="<<English<<"计算机="<<computer<<"总分="<<total<<endl;
}
int main()
{
int total,stu1,stu2,stu3,t;
Student student1;
student1.getscore();
student1.display();
stu1=total;
Student student2;
student2.getscore();
student2.display();
stu2=total;
Student student3;
student3.getscore();
student3.display();
stu3=total;
if(stu1<stu2)
{t=stu1;stu1=stu2;stu2=t;}
else if(stu2<stu3)
{t=stu2;stu2=stu3;stu2=t;}
else if(stu1<stu2)
{t=stu1;stu1=stu2;stu2=t;}
cout<<"stu1="<<stu1<<"stu2="<<stu2<<"stu3="<<stu3<<endl;
}
2.输不出来right或wrong
#include<iostream>
using namespace std;
class charRange
{public:
void setRange();
void showRange();
private:
char a[10];
};
void charRange::setRange()
{int i;
for(i=0;i<10;i++)
cin>>a[i];
}
void charRange::showRange()
{int i;
if(a[i]>'A'&&a[i]<'D')
cout<<"right"<<a[i];
else
cout<<"wrong"<<a[i];
}
int main()
{charRange Range;
Range.setRange();
Range.showRange();
return 0;
} 展开
5个回答
展开全部
一、
int total,stu1,stu2,stu3,t;
Student student1;
...
stu1=retotal(); //你的total在这里是个局部变量,没有人给他赋值,不能直接使用的!!下同
Student student2;
...
stu2=retotal();
Student student3;
...
stu3=retotal();
二、
void charRange::showRange()
{int i; //同样没有赋值就直接使用,当然没有意义了!!
for(i=0;i<10;i++) //加上这句
if(a[i]>'A'&&a[i]<'D')
cout<<"right"<<a[i]<<endl;
else
cout<<"wrong"<<a[i]<<endl;
}
int total,stu1,stu2,stu3,t;
Student student1;
...
stu1=retotal(); //你的total在这里是个局部变量,没有人给他赋值,不能直接使用的!!下同
Student student2;
...
stu2=retotal();
Student student3;
...
stu3=retotal();
二、
void charRange::showRange()
{int i; //同样没有赋值就直接使用,当然没有意义了!!
for(i=0;i<10;i++) //加上这句
if(a[i]>'A'&&a[i]<'D')
cout<<"right"<<a[i]<<endl;
else
cout<<"wrong"<<a[i]<<endl;
}
更多追问追答
追问
按照您的方法改后第一题运行时出现了以下两个错误:
Cpp1.cpp(27) : error C2065: 'retotal' : undeclared identifier
Cpp1.cpp(43) : warning C4508: 'main' : function should return a value; 'void' return type assumed
第二题对了thanks
追答
哦,我大意了,SORRY
stu1=student1.retotal();
stu2=student2.retotal();
stu3=student3.retotal();
展开全部
#include <iostream>
using namespace std;
//1.排序排不出来,出现莫名其妙的数
class Student
{
public:
int English,computer,total;
void getscore();
void display();
int retotal()
{return total;}
};
void Student::getscore()
{cout<<"输入英语成绩:";
cin>>English;
cout<<"输入计算机成绩:";
cin>>computer;
total=English+computer;
}
void Student::display()
{
cout<<"英语="<<English<<"计算机="<<computer<<"总分="<<total<<endl;
}
int main()
{
int stu1,stu2,stu3,t;
Student student1;
student1.getscore();
student1.display();
stu1=student1.total;
Student student2;
student2.getscore();
student2.display();
stu2=student2.total;
Student student3;
student3.getscore();
student3.display();
stu3=student3.total;
if(stu1<stu2)
{t=stu1;stu1=stu2;stu2=t;}
if(stu2<stu3)
{t=stu2;stu2=stu3;stu3=t;}
if(stu1<stu3)
{t=stu1;stu1=stu3;stu3=t;}
cout<<"stu1="<<stu1<<"stu2="<<stu2<<"stu3="<<stu3<<endl;
return 0;
}
第二个没有看太懂。
using namespace std;
//1.排序排不出来,出现莫名其妙的数
class Student
{
public:
int English,computer,total;
void getscore();
void display();
int retotal()
{return total;}
};
void Student::getscore()
{cout<<"输入英语成绩:";
cin>>English;
cout<<"输入计算机成绩:";
cin>>computer;
total=English+computer;
}
void Student::display()
{
cout<<"英语="<<English<<"计算机="<<computer<<"总分="<<total<<endl;
}
int main()
{
int stu1,stu2,stu3,t;
Student student1;
student1.getscore();
student1.display();
stu1=student1.total;
Student student2;
student2.getscore();
student2.display();
stu2=student2.total;
Student student3;
student3.getscore();
student3.display();
stu3=student3.total;
if(stu1<stu2)
{t=stu1;stu1=stu2;stu2=t;}
if(stu2<stu3)
{t=stu2;stu2=stu3;stu3=t;}
if(stu1<stu3)
{t=stu1;stu1=stu3;stu3=t;}
cout<<"stu1="<<stu1<<"stu2="<<stu2<<"stu3="<<stu3<<endl;
return 0;
}
第二个没有看太懂。
更多追问追答
追问
如果不把私有数据total定义为公有数据,并且main函数之前的都不改,该怎么改呢?
第二题的原题是:
设计一个charRange类,这种类型的对象允许用户输入一个字符,然后检验该字符是否位于指定范围(例如,‘A'~'D’)之内。当用户输入的字符超出指定范围时,该对象将显示一个出错信息,并等待用户重新输入一个新字符(因为不能让程序无限循环下去,所以要是能定义个N来控制输入字符的个数就更好了,我原本设定的是10。)
追答
那第一个就用你的类函数 int retotal(){return total;} 来返回总数,这样在外部,类的外部就不能够直接访问类的私有变量,只能经过retotal函数来返回,只要调整main中的代码就可以了,另外排序也处理了一下,更合理正确。
第二个问题,把显示的函数showRange放在私有中,类中调用显示。
在setRange中调用,另外把局部变量i定义为类中私有,只能在类的范围内中,封装起来。对类外面是看不到的。 在主程序中也不可使用,只使用showRange就满足要求了。
更新如下:
#include
using namespace std;
//1.排序排不出来,出现莫名其妙的数
class Student
{
private:
int English,computer,total;
public:
void getscore();
void display();
int retotal(){return total;}
};
void Student::getscore()
{cout>English;
cout>computer;
total=English+computer;
}
void Student::display()
{
cout
using namespace std;
class charRange
{
public:
void setRange();
private:
int i;
char a[10];
void showRange();
};
void charRange::setRange()
{
for(i=0;i>a[i];
showRange();
}
}
void charRange::showRange()
{
if(a[i]>'A'&&a[i]<'D')
cout<<"right "<<a[i]<<endl;
else
cout<<"wrong "<<a[i]<<endl;
}
int main()
{
charRange Range;
Range.setRange();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题的
int total,stu1,stu2,stu3,t;
Student student1;
student1.getscore();
student1.display();
stu1=total;
toatl可没有赋值的啊,应该在哪里给它值吧?
第二题
show 的时候没有循环啊
你是想10存储完,然后依次输出right或者wrong的吧?
那就需要循环了
int total,stu1,stu2,stu3,t;
Student student1;
student1.getscore();
student1.display();
stu1=total;
toatl可没有赋值的啊,应该在哪里给它值吧?
第二题
show 的时候没有循环啊
你是想10存储完,然后依次输出right或者wrong的吧?
那就需要循环了
更多追问追答
追问
其实我是想输入一个字符就输出right或者wrong,输入10个后程序结束,这个改改哪呢?
追答
在setRange里输入为一个就调用show
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先说第一个问题
stu1=total;
这个total是你主函数里面定义的total,他不属于对象student1。
正确的调用时将student类中的total定义为公有,stu1=student1.total;同理后面两个也要改。
第二题
i没有赋值,a[i]指向未知区域。你是想10存储完,然后依次输出right或者wrong的吧?
如楼上的,用循环。
stu1=total;
这个total是你主函数里面定义的total,他不属于对象student1。
正确的调用时将student类中的total定义为公有,stu1=student1.total;同理后面两个也要改。
第二题
i没有赋值,a[i]指向未知区域。你是想10存储完,然后依次输出right或者wrong的吧?
如楼上的,用循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-15
展开全部
第一个程序
在mian()函数里声明的int total没有赋值,一个没有值的变量然后在赋给另外一个变量?
#include <iostream>
using namespace std;
class Student
{
private:
int English, computer, total;
public:
void getscore();
void display();
int retotal() { return total; }
};
void Student::getscore()
{
cout<<"输入英语成绩:";
cin>>English;
cout<<"输入计算机成绩:";
cin>>computer;
total = English + computer;
}
void Student::display()
{
cout << "英语 = "<< English << " 计算机 = " << computer << " 总分 = " << total << endl;
}
int main(void)
{
int stu1, stu2, stu3, t;
Student student1;
student1.getscore();
student1.display();
stu1 = student1.retotal();
Student student2;
student2.getscore();
student2.display();
stu2 = student2.retotal();
Student student3;
student3.getscore();
student3.display();
stu3 = student3.retotal();
if (stu1 < stu2)
{
t = stu1;
stu1 = stu2;
stu2 = t;
}
else if (stu2 < stu3)
{
t = stu2;
stu2 = stu3;
stu2 = t;
}
else if (stu1 < stu2)
{
t = stu1;
stu1 = stu2;
stu2 = t;
}
cout << "stu1 = " << stu1 << " stu2 = " << stu2 << " stu3 = " << stu3 << endl;
return 0;
}
第二个程序
在 charRange::showRange() 函数里面声明的 i 没有赋值,程序不知道 a[i] 等于什么,所以根本无法比较,自然无法输出 right 或者 wrong 。
void charRange::showRange()
{
int i;
if (a[i] > 'A' && a[i] < 'D')
{
cout << "right" << a[i];
}
else
{
cout << "wrong" << a[i];
}
}
在mian()函数里声明的int total没有赋值,一个没有值的变量然后在赋给另外一个变量?
#include <iostream>
using namespace std;
class Student
{
private:
int English, computer, total;
public:
void getscore();
void display();
int retotal() { return total; }
};
void Student::getscore()
{
cout<<"输入英语成绩:";
cin>>English;
cout<<"输入计算机成绩:";
cin>>computer;
total = English + computer;
}
void Student::display()
{
cout << "英语 = "<< English << " 计算机 = " << computer << " 总分 = " << total << endl;
}
int main(void)
{
int stu1, stu2, stu3, t;
Student student1;
student1.getscore();
student1.display();
stu1 = student1.retotal();
Student student2;
student2.getscore();
student2.display();
stu2 = student2.retotal();
Student student3;
student3.getscore();
student3.display();
stu3 = student3.retotal();
if (stu1 < stu2)
{
t = stu1;
stu1 = stu2;
stu2 = t;
}
else if (stu2 < stu3)
{
t = stu2;
stu2 = stu3;
stu2 = t;
}
else if (stu1 < stu2)
{
t = stu1;
stu1 = stu2;
stu2 = t;
}
cout << "stu1 = " << stu1 << " stu2 = " << stu2 << " stu3 = " << stu3 << endl;
return 0;
}
第二个程序
在 charRange::showRange() 函数里面声明的 i 没有赋值,程序不知道 a[i] 等于什么,所以根本无法比较,自然无法输出 right 或者 wrong 。
void charRange::showRange()
{
int i;
if (a[i] > 'A' && a[i] < 'D')
{
cout << "right" << a[i];
}
else
{
cout << "wrong" << a[i];
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询