![]() |
#2
xg56992011-09-22 18:23
我用VS2005编译不止是第一个选项出错,全部都有问题
![]() #include<iostream> 这些错误全部是基础问题,这只是整个程序运行起来不出错误,但实际上你程序中数组的那些算法都是有问题的我就不仔细看了你自己找吧#include<stdlib.h> #include<math.h> using namespace std; const int M=100; class person { char name[M][M]; float elect[M]; float sum[M]; int count; public: person(){count=0;}//如不讲count初始化为0那么你猜猜count会是一个什么值? person(int count) { count=0; } float charge(void); void getperson(void); void putperson(void); void singleperson(void); }; void person::getperson(void) { cout<<"输入用户名"; cin>>name[count]; cout<<"输入用电量"; cin>>elect[count]; count++; } void person::putperson(void) { cout<<"用户名"<<" "<<"用电单位"<<" "; cout<<"应缴费用"<<"\n"; for(int i=0;i<count;i++) { cout<<name[i]<<" "<<elect[i]<<" "; cout<<sum[i]<<"\n"; } } float person::charge(void) { for(int i=0;i<count;i++) { if(elect[i]<83.3) sum[i]=50; else if (elect[i]>=83.3&&elect[i]<=100) sum[i]=60*elect[i]; else if(elect[i]>100&&elect[i]<=300) sum[i]=6000+80*(elect[i]-100); else if(elect[i]>300) sum[i]=2200+90*(elect[i]-300)+(elect[i]-300)*0.15; return sum[i]; } } void person::singleperson() { cout<<sum[count-1]<<endl; } void main() { bool q=false;//判定条件退出 person number; int n; int x=0,y=0; person(); while(1) { cout<<"\n1.输入用户信息\n"; cout<<"\n2.输出单个用户应缴费用\n"; cout<<"\n3.打印列表\n"; cout<<"\n4.退出!\n"; cout<<"请输入你要进行操作的序号:"; cin>>n; switch(n) { case 1:number.getperson();break;//break漏了 case 2:number.charge();number.singleperson();break; case 3:number.charge();number.putperson();break; case 4:q=true;break;//选择了4q赋值为真 default:cout<<"\n输入有误,请重新输入:\n"; } if(q)//q为真退出while循环 break; } } [ 本帖最后由 xg5699 于 2011-9-22 18:26 编辑 ] |
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
const int M=100;
class person
{
char name[M][M];
float elect[M];
float sum[M];
int count;
public:
person(){ };
person(int count)
{
count=0;
}
float charge(void);
void getperson(void);
void putperson(void);
void singleperson(void);
};
void person::getperson(void)
{
cout<<"输入用户名";
cin>>name[count];
cout<<"输入用电量";
cin>>elect[count];
count++;
}
void person::putperson(void)
{
cout<<"用户名"<<" "<<"用电单位"<<" ";
cout<<"应缴费用"<<"\n";
for(int i=0;i<count;i++)
{
cout<<name[i]<<" "<<elect[i]<<" ";
cout<<sum[i]<<"\n";
}
}
float person::charge(void)
{
for(int i=0;i<count;i++)
{ if(elect[i]<83.3)
sum[i]=50;
else if (elect[i]>=83.3&&elect[i]<=100)
sum[i]=60*elect[i];
else if(elect[i]>100&&elect[i]<=300)
sum[i]=6000+80*(elect[i]-100);
else if(elect[i]>300)
sum[i]=2200+90*(elect[i]-300)+(elect[i]-300)*0.15;
return sum[i];
}
}
void person::singleperson()
{
cout<<sum[count-1];
}
void main()
{
person number;
int n;
int x=0,y=0;
person();
do
{
cout<<"\n1.输入用户信息\n";
cout<<"\n2.输出单个用户应缴费用\n";
cout<<"\n3.打印列表\n";
cout<<"\n4.退出!\n";
cout<<"请输入你要进行操作的序号:";
cin>>n;
switch(n)
{
case 1:number.getperson();
case 2:number.charge();number.singleperson();break;
case 3:number.charge();number.putperson();break;
case 4:break;
default:cout<<"\n输入有误,请重新输入:\n";
}
cout<<"请按任意键继续";
cin>>y;
system("cls");
}while(n!=4);
}
VS2010生成解决方案没问题,输入用户信息时(case 1:number.getperson();)出现问题,小生不才,困扰了几天。望高手赐教!