C++ 如何在不使用循环的情况下返回到代码的顶部?
我正在尝试制作一个“Flames”程序,我的问题是在用户输入他/她的名字和合作伙伴的名字并得到结果后,我想问用户是否希望输入另一个名字而不使用循环 我尝试过使用goto,但是当用户无法输入初始名称时会出现错误C++ 如何在不使用循环的情况下返回到代码的顶部?,c++,C++,我正在尝试制作一个“Flames”程序,我的问题是在用户输入他/她的名字和合作伙伴的名字并得到结果后,我想问用户是否希望输入另一个名字而不使用循环 我尝试过使用goto,但是当用户无法输入初始名称时会出现错误 #include <iostream> #include <string> using namespace std; int main() { start: system("cls"); char t; string fname1,f
#include <iostream>
#include <string>
using namespace std;
int main()
{
start:
system("cls");
char t;
string fname1,fname2;
int i,x,z,y,name1len=0,name2len=0,b,total,name1spc=0,name2spc=0;
cout<<"Enter your full name: ";
getline(cin,fname1);
cout<<"Enter partners name: ";
getline(cin,fname2);
cout<<endl;
for(i=0;i<=fname1.length();i++ )
{
fname1[i]=toupper(fname1[i]);
}
for(i=0;i<=fname2.length();i++)
{
fname2[i]=toupper(fname2[i]);
}
x=fname1.length();
y=fname2.length();
//============check for spaces=========
for(i=0;i<x;i++)
{
if(fname1[i]==' ')
{
name1spc++;
}
}
for(i=0;i<y;i++)
{
if(fname2[i]==' ')
{
name2spc++;
}
}
//=========for 1st name compare=========
for(i=0;i<fname1.length();i++)
{
for(b=0;b<fname2.length();b++)
{
//cout<<fname1[i]<<endl;
if(fname1[i]==fname2[b])
{
name1len++;
break;
}
}
}
//============2nd name compare================
for(i=0;i<fname2.length();i++)
{
for(b=0;b<fname1.length();b++)
{
//cout<<fname1[i]<<endl;
if(fname2[i]==fname1[b])
{
name2len++;
break;
}
}
}
name1len=name1len-name1spc;
name2len=name2len-name2spc;
cout<<name1len<<endl<<name2len;
total=name1len+name2len;
if(total>6)
{
total=total%6;
}
switch(total)
{
case 1:
cout<<fname1<<" and "<<fname2<<" are Friends"<<endl;
break;
case 2:
cout<<fname1<<" and "<<fname2<<" are Lovers"<<endl;
break;
case 3:
cout<<fname1<<" and "<<fname2<<" are Aquaintance"<<endl;
break;
case 4:
cout<<fname1<<" and "<<fname2<<" are Married"<<endl;
break;
case 5:
cout<<fname1<<" and "<<fname2<<" are Enemies"<<endl;
break;
case 6:
cout<<fname1<<" and "<<fname2<<" are Sweethearts"<<endl;
break;
default:
cout<<"No name entered"<<endl;
}
cout<<"Would you like to enter another name? Y/N?";
cin>>t;
if(t=='Y' || t=='y')
{
goto start;
}
else if(t=='N' || t=='n')
{
cout<<"THANKS"<<endl;
system("pause");
}
else{
return 0;
}
}//ending for int main
#包括
#包括
使用名称空间std;
int main()
{
开始:
系统(“cls”);
查尔特;
字符串fname1,fname2;
整数i,x,z,y,name1len=0,name2len=0,b,总计,name1spc=0,name2spc=0;
cout您可以使用while循环,如下所示:
using namespace std;
int main()
{
while(true){
system("cls");
char t;
string fname1,fname2;
int i,x,z,y,name1len=0,name2len=0,b,total,name1spc=0,name2spc=0;
cout<<"Enter your full name: ";
cin.ignore();
getline(cin,fname1);
cout<<"Enter partners name: ";
getline(cin,fname2);
cout<<endl;
for(i=0;i<=fname1.length();i++ )
{
fname1[i]=toupper(fname1[i]);
}
for(i=0;i<=fname2.length();i++)
{
fname2[i]=toupper(fname2[i]);
}
x=fname1.length();
y=fname2.length();
//============check for spaces=========
for(i=0;i<x;i++)
{
if(fname1[i]==' ')
{
name1spc++;
}
}
for(i=0;i<y;i++)
{
if(fname2[i]==' ')
{
name2spc++;
}
}
//=========for 1st name compare=========
for(i=0;i<fname1.length();i++)
{
for(b=0;b<fname2.length();b++)
{
//cout<<fname1[i]<<endl;
if(fname1[i]==fname2[b])
{
name1len++;
break;
}
}
}
//============2nd name compare================
for(i=0;i<fname2.length();i++)
{
for(b=0;b<fname1.length();b++)
{
//cout<<fname1[i]<<endl;
if(fname2[i]==fname1[b])
{
name2len++;
break;
}
}
}
name1len=name1len-name1spc;
name2len=name2len-name2spc;
cout<<name1len<<endl<<name2len;
total=name1len+name2len;
if(total>6)
{
total=total%6;
}
switch(total)
{
case 1:
cout<<fname1<<" and "<<fname2<<" are Friends"<<endl;
break;
case 2:
cout<<fname1<<" and "<<fname2<<" are Lovers"<<endl;
break;
case 3:
cout<<fname1<<" and "<<fname2<<" are Aquaintance"<<endl;
break;
case 4:
cout<<fname1<<" and "<<fname2<<" are Married"<<endl;
break;
case 5:
cout<<fname1<<" and "<<fname2<<" are Enemies"<<endl;
break;
case 6:
cout<<fname1<<" and "<<fname2<<" are Sweethearts"<<endl;
break;
default:
cout<<"No name entered"<<endl;
}
cout<<"Would you like to enter another name? Y/N?";
cin>>t;
if(t=='Y' || t=='y')
{
continue;
}
else if(t=='N' || t=='n')
{
cout<<"THANKS"<<endl;
break;
}
else{
return 0;
}
} //while end
}//ending for int main
使用名称空间std;
int main()
{
while(true){
系统(“cls”);
查尔特;
字符串fname1,fname2;
整数i,x,z,y,name1len=0,name2len=0,b,总计,name1spc=0,name2spc=0;
我可以尝试使用goto——为什么?循环是实现这一点的结构化方法。你考虑过使用循环吗?我添加了全部代码,以便你能明白我的意思。实际上,循环是完成这项工作的正确工具。除非你有明确的理由不使用循环(例如,你这样做是为了一项禁止将循环用作练习的任务),这就像在不使用面包的情况下制作三明治:)现在的问题是我无法输入第一个名字,它会跳到合作伙伴的名字。使用cin.ignore();打印“输入您的全名”:。我已经更新了答案中的代码,请检查。getline的问题是它将previos输入存储在cin对象中,要忽略之前的输入,我们必须使用cin.ignore()函数。