c++程序编译通过,但是运行时显示exe文件停止运行是怎么回事?
程序如下:#include<iostream>#include<string>#include<cstring>usingnamespacestd;constintmax...
程序如下:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
const int max=100;
class setting
{
private:
int count;
string a[max];
public:
void setmember();
string print();
};
void setting::setmember()
{
char* c="00";
char* point="0000";
cout<<"请输入集合元素(注意:当输入0000时表示集合元素输入完毕!)";
while(strcmp(c,point)!=0)
{
cin>>c;
a[count]=c;
count++;
}
cout<<"集合输入完毕"<<endl;
}
string setting::print()
{
int i;
cout<<"该集合元素为:{";
for(i=0;i<count-1;i++)
{
cout<<a[i]<<",";
}
if(i==count)
cout<<a[i]<<"}"<<endl;
return 0;
}
void display()
{
cout<<" ******************欢迎进入集合类运算小系统*******************"<<endl;
cout<<" ***** ****"<<endl;
cout<<" 1 输入集合元素"<<endl;
cout<<" 2 显示集合元素"<<endl;
cout<<" 3 退出"<<endl;
cout<<" ***** ****"<<endl;
cout<<" **********************************************************"<<endl;
}
void exit()
{
cout<<" 您好,已退出该系统,欢迎您下次使用"<<endl;
}
int main()
{
setting s1,s2,s3;
int choice;
display();
cout<<"请输入您的选择:";
cin>>choice;
if(choice<1||choice>3)
{
cout<<"您的选择有误,请再次正确选择!"<<endl;
}
else
{
switch(choice)
{
case 1:s1.setmember();
case 2:s1.print();
case 3:exit();
}
return 0;
}
}
求指教 展开
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
const int max=100;
class setting
{
private:
int count;
string a[max];
public:
void setmember();
string print();
};
void setting::setmember()
{
char* c="00";
char* point="0000";
cout<<"请输入集合元素(注意:当输入0000时表示集合元素输入完毕!)";
while(strcmp(c,point)!=0)
{
cin>>c;
a[count]=c;
count++;
}
cout<<"集合输入完毕"<<endl;
}
string setting::print()
{
int i;
cout<<"该集合元素为:{";
for(i=0;i<count-1;i++)
{
cout<<a[i]<<",";
}
if(i==count)
cout<<a[i]<<"}"<<endl;
return 0;
}
void display()
{
cout<<" ******************欢迎进入集合类运算小系统*******************"<<endl;
cout<<" ***** ****"<<endl;
cout<<" 1 输入集合元素"<<endl;
cout<<" 2 显示集合元素"<<endl;
cout<<" 3 退出"<<endl;
cout<<" ***** ****"<<endl;
cout<<" **********************************************************"<<endl;
}
void exit()
{
cout<<" 您好,已退出该系统,欢迎您下次使用"<<endl;
}
int main()
{
setting s1,s2,s3;
int choice;
display();
cout<<"请输入您的选择:";
cin>>choice;
if(choice<1||choice>3)
{
cout<<"您的选择有误,请再次正确选择!"<<endl;
}
else
{
switch(choice)
{
case 1:s1.setmember();
case 2:s1.print();
case 3:exit();
}
return 0;
}
}
求指教 展开
3个回答
展开全部
void setting::setmember()
{
char* c="00";
char* point="0000";
cout<<"请输入集合元素(注意:当输入0000时表示集合元素输入完毕!)";
while(strcmp(c,point)!=0)
{
cin>>c;
a[count]=c;
count++;
}
cout<<"集合输入完毕"<<endl;
}
这里的a[count]=c;有问题,不能这样用
{
char* c="00";
char* point="0000";
cout<<"请输入集合元素(注意:当输入0000时表示集合元素输入完毕!)";
while(strcmp(c,point)!=0)
{
cin>>c;
a[count]=c;
count++;
}
cout<<"集合输入完毕"<<endl;
}
这里的a[count]=c;有问题,不能这样用
更多追问追答
追问
那该怎么用呢?a是字符串数组,把字符串c存进去不可以吗?
那该怎么用呢?a是字符串数组,把字符串c存进去不可以吗?
展开全部
setmember 函数中
char* c="00";
char* point="0000";
不能直接对未申请空间的指针赋值
可改成下面代码
char c[]="00";
char point[]="0000";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setmember里面的count没有初始化。你为setting类添加一个构造函数,在构造函数里面添加上count=0就行了。
更多追问追答
追问
还是不行哦
追答
是哪个阶段出现异常了?程序一运行就出现异常还是输入的时候出现了异常?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |