求c++高手帮我改改这个程序,谢谢了

2024-12-31 14:30:24
推荐回答(3个)
回答1:

重载函数的定义写错了,应该是
char& a::operator [](int i)

另外,你的拷贝函数写错了,直接p=s是不行的,比如这个程序中,你用的"kai"是常量,直接p=s的话,p指向常量字符串,而常量字符串是不允许修改的,所以你的q[i]=q[i]+32的操作会出错.

还有,小写字母减32才是大写字母.

正确程序如下:
#include
using namespace std;
#define N 10
class a
{public:
char &operator [](int i);
a()
a(char s[N]);
~a()
void print();
private:
char *p;
};
char& a::operator [](int i)

void a::print()

a::a(char s[N])
{
int len=strlen(s);
p=new char[len+1];
strcpy(p,s);
}
int main()
{a q("kai");
int i;
for(i=0;i<3;i++)
q[i]=q[i]-32;
q.print();

return 0;
}

回答2:

123123123123123

回答3:

//我快晕了,我复制的时候复制错了,现在如下
//在cout<<"数据长度为:"<#include
#include
#include
#include
void Return();
//主函数
void main()
{
Return();
}
double sum=0,l,fsum,tf,t,b,p,j,bzca,ssum;
int n;
int sise_1,sise_2=0;
int cn,ci,cnumber=0,chy[50];
char cs[400];
// 把数据还原的函数
void huanyuan()
{
cout<<"请输入您要计算的数据并以‘,’隔开"< cin>>cs;
sise_1=strlen(cs);
cout<<"数据长度为:"<cnumber=0;//每次返回初始化
sise_2=0;//每次返回初始化
cn=0;//每次返回初始化
for (ci=0;ci{
if(cs[ci]!=',')
cnumber++;
else
{if (cnumber>0&&cnumber<8)
sise_2++;
switch (cnumber)
{case 0:cn--;break;
case 1:chy[cn]=(cs[ci-1]-48);break;
case 2:chy[cn]=(cs[ci-2]-48)*10+(cs[ci-1]-48);break;
case 3:chy[cn]=(cs[ci-3]-48)*100+(cs[ci-2]-48)*10+(cs[ci-1]-48);break;
case 4:chy[cn]=(cs[ci-4]-48)*1000+(cs[ci-3]-48)*100+(cs[ci-2]-48)*10+(cs[ci-1]-48);
break;
case 5:chy[cn]=(cs[ci-5]-48)*10000+(cs[ci-4]-48)*1000+(cs[ci-3]-48)*100+\
(cs[ci-2]-48)*10+(cs[ci-1]-48);
break;
case 6:chy[cn]=(cs[ci-6]-48)*100000+(cs[ci-5]-48)*10000+(cs[ci-4]-48)*1000+(cs[ci-3]-48)*100+\
(cs[ci-2]-48)*10+(cs[ci-1]-48);
break;
case 7:chy[cn]=(cs[ci-7]-48)*1000000+(cs[ci-6]-48)*100000+(cs[ci-5]-48)*10000+(cs[ci-4]-48)*1000+(cs[ci-3]-48)*100+\
(cs[ci-2]-48)*10+(cs[ci-1]-48);
break;
default:
cout<<"第"< cn--;break;
}
cn++;cnumber=0;
}
}

for(cn=0;cncout<<"chy["<cout<<"cn="<}

void Return()
{
cout<<"基本数据的操作:"< cout<<"1-把数据还原"<cout<<"2-关闭程序"<int choice;
char ch;
for(;;)
{
cin>>choice;
if(choice==2) break;
else if(choice==1)
{
system("cls");//清屏
huanyuan();
cout<<"你想返回菜单选项吗?(是的话按 'Y',否则按N):";
cin>>ch;
if(ch=='Y'||ch=='y')
{system("cls");
Return();}
if(ch=='N'||ch=='n')
{ system("cls");
break;}//不是continue
}
else
cout<<"You center a worng number"< }
}