最近帮朋友看了这个问题,最终调试了出来,怕以后忘记,贴出来,有错误请指正。
#include<iostream>
using namespace std;
class fudian
{
public:
fudian(const char *ss)
{
len=strlen(ss);
s=(char*)malloc(len+1);
strcpy(s,ss);
}
void init(const char *ss)
{
len=strlen(ss);
s=(char*)malloc(len+1);
strcpy(s,ss);
}
~fudian()
{
if(s!=NULL)
free(s);
s=NULL;
len=0;
}
int getlen()
{
//cout<<len<<endl;
return len;
}
void print()
{
int flag = 1,i,d;
int pointer=0;
//char *c;
//c=(char*)malloc(len);
for(i = 0; s[i]; ++i)
{
if(s[i] == '.')
{
flag = 0;
d = i;
break;
}
}
if(flag) { // 没有小数点,当然可能性不大
printf("整数部分:");
for(i = 0; s[i]; ++i)
{
printf("%c ",s[i]);
pointer=i;
// c[i]=s[i];
}
printf("\n");
}
else {
printf("整数部分:");
for(i = 0; s[i] != '.'; ++i)
{
printf("%c ",s[i]);
//c[i]=s[i];
}
printf("\n");
printf("小数部分:");
for(++i; s[i]; ++i)
{
printf("%c ",s[i]);
//c[i]=s[i];
}
printf("\n");
}
}
void diverse()
{
int i;
printf("逆序结果为:");
for(i=len-1;i>=0;i--)//逆序输出
{
printf("%c",s[i]);
/* if(i!=0)
printf(" ");//不取消掉最后一个空格可能会造成格式错误
*/
}
printf("\n");
}
private:
int len;
char *s;
};
/*int main01()
{
fudian obj1("32.01");
cout<<obj1.getlen()<<endl;
obj1.print ();
obj1.diverse ();
return 0;
}*/
int main()
{
char m[20];
cout<<"请输入浮点数:"<<endl;
cin>>m;
fudian obj1(m);
//obj1.init (m);
//m=strlen(pp);
//char *p = new char[m];
//fudian obj1("32.01");
//cout<<obj1.getlen()<<endl;
obj1.print ();
obj1.diverse ();
return 0;
}