读书人

为何程序报错

发布时间: 2012-08-29 08:40:14 作者: rapoo

为什么程序报错?
用类写了一个把字符串长度变为所输入字符个数+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 里面的函数 除了构造函数 其余的都需要返回类型
[解决办法]

C/C++ code
#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;

读书人网 >C++

热点推荐