为什么程序报错?
用类写了一个把字符串长度变为所输入字符个数+1,并统计字母、数字、空格和其它字符个数的程序,如下:
#include<iostream>
#include<string>
using namespace std;
class str
{public:
str();
Count();
Print();
private:
char *s,*sp;
int m,n,p,q,len;
};
str::str()
{m=0;n=0;p=0;q=0;
sp=new char[1000];
gets(sp);
len=strlen(sp);
s=new char[len+1];
strncpy(s,sp,len);
*(s+len)='\0';
delete []sp;
}
void str::Count()
{
for(int i=0;s[i]!=0;i++)
{if(s[i]>=65&&s[i]<=90||s[i]>=97&&s[i]<=122)
m++;
else if(s[i]>=48&&s[i]<=57) p++;
else if(s[i]==32)n++;
else q++;
}
}
void str::Print()
{cout<<"word="<<m<<",space="<<n<<",number="<<p<<",other="<<q<<endl;
delete []s;
}
int main()
{str a;
a.Count();
a.Print();
}
程序老是报错,搞不懂了。
[解决办法]
首先你public 里面的函数 除了构造函数 其余的都需要返回类型
[解决办法]
#include<iostream>#include<string>using namespace std;class str{public: str(); void Count(); //加void void Print(); //加voidprivate: char *s,*sp; int m,n,p,q,len;};str::str(){ m=0;n=0;p=0;q=0; sp=new char[1000]; gets(sp); len=strlen(sp); s=new char[len+1]; strncpy(s,sp,len); *(s+len)='\0'; delete []sp;}void str::Count(){ for(int i=0;s[i]!=0;i++) { if(s[i]>=65&&s[i]<=90||s[i]>=97&&s[i]<=122) m++; else if(s[i]>=48&&s[i]<=57) p++; else if(s[i]==32)n++; else q++; }}void str::Print(){ cout<<"word="<<m<<",space="<<n<<",number="<<p<<",other="<<q<<endl; delete []s;}int main(){ str a; a.Count(); a.Print(); return 0; //加return 0}
[解决办法]
类的成员函数需要添加返回类型,以楼主的例子来说要添加void,表示没有任何返回值,另外main函数最好返回一个值,如return 0;