
C++程序中的错误——下面的代码错在哪里,是什么原因的错误,求高手指教!
给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35...
给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,
并保持数字字符串和非数字字符串原有的先后次序。
例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。
#include<iostream>
using namespace std;
class character
{
private:
char a[1000];
char b[1000];//存储数字
char c[1000];//存储非数字的字符
char *p;
int m,n,sum;
public:
character();
void input();
void fun();
void display();
~character(){};
};
character::character()
{
a[1000]={'0'};b1000]={'0'};
c [1000]={'0'};
*p=NULL;
m=0;
n=0;
sum=0;
}
void character::input()
{
cout<<"请输入字符串:"<<endl;
gets(a);
}
void character::fun()
{
p=a;
while(*p!='\0')
p++;
sum=p-a;
for(int i=0;i<sum;i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b[m]=a[i];
m++;
}
else
{
c[n]=a[i];
n++;
}
}
}
void character::display()
{
cout<<"处理后的结果为:"<<endl;
for(int i=0;i<n;i++)
cout<<c[i];
for(int j=0;j<m;j++)
cout<<b[j];
cout<<endl;
}
void main()
{
character a;
a.input();
a.fun();
a.display();
} 展开
并保持数字字符串和非数字字符串原有的先后次序。
例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。
#include<iostream>
using namespace std;
class character
{
private:
char a[1000];
char b[1000];//存储数字
char c[1000];//存储非数字的字符
char *p;
int m,n,sum;
public:
character();
void input();
void fun();
void display();
~character(){};
};
character::character()
{
a[1000]={'0'};b1000]={'0'};
c [1000]={'0'};
*p=NULL;
m=0;
n=0;
sum=0;
}
void character::input()
{
cout<<"请输入字符串:"<<endl;
gets(a);
}
void character::fun()
{
p=a;
while(*p!='\0')
p++;
sum=p-a;
for(int i=0;i<sum;i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b[m]=a[i];
m++;
}
else
{
c[n]=a[i];
n++;
}
}
}
void character::display()
{
cout<<"处理后的结果为:"<<endl;
for(int i=0;i<n;i++)
cout<<c[i];
for(int j=0;j<m;j++)
cout<<b[j];
cout<<endl;
}
void main()
{
character a;
a.input();
a.fun();
a.display();
} 展开
展开全部
a[1000]={'0'};b1000]={'0'};
c [1000]={'0'};
数组不支持这样初始化
可以 memset(a,0,sizeof(a));
还有*p = NULL; //改成 p=NULL;只要地址用NULL 其值没有NULL表示,
c [1000]={'0'};
数组不支持这样初始化
可以 memset(a,0,sizeof(a));
还有*p = NULL; //改成 p=NULL;只要地址用NULL 其值没有NULL表示,
追问
除了那还有其他问题啊,改了后还是有问题,这时怎么回事啊??
追答
char a[1000]={'0'}; //数组可以这样在声明的时候初始化赋值
*p = NULL; //改成 p=NULL;
还有问题嘛?!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询