C++的一个编程问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:39:19
以下的程序是我编的用来实现从小到大排列,当输入第几小的序号就对应输出一个数
#include<iostream.h>
void main()
{
int a[10] ={11,55,77,6,8,10,0,38,66,100};
for(int j=0;j<9;j++)
for(int k=j+1;k<10;k++)
if(a[j]>a[k])
{
int t;
t=a[j];
a[j]=a[k];
a[k]=t;
}
for (int i=0;i<10;i++)
cout<<a[i]<<endl;
int m ;
cout<<"请输入第几小的序号:"<<endl;
cin>>m;
if (m>0&&m<=10)
cout<<a[m-1]<<endl;
else
cout<<"输入的序号不正确,请稍候重试"<<endl;

}
可是就在当m的值不符合要求的时候,怎么实现重新输入个序号呢?我写的不好,特别是最后一步,不能够实现重新输入一个数
本人新手,请高手给指点一下,谢了~

可以按下面的改:
先在“cout<<"请输入第几小的序号:"<<endl; ”这一句的行首加个“line:”,然后在最后一句后面加一句:

“ goto line;“
即可解决你的问题。

while(true)
{
cout<<"请输入第几小的序号,输入0退出:"<<endl;
cin>>m;
if (m>0&&m<=10)
cout<<a[m-1]<<endl;
else if (m == 0)
break;
else
cout<<"输入的序号不正确,请稍候重试"<<endl;
}

// 只需要修改 后面的部分

cout<<"请输入第几小的序号:"<<endl;

while(m<=0 || m>10)
{
cin>>m;
if (m>0&&m<=10)
cout<<a[m-1]<<endl;
else
{
cout<<"输入的序号不正确,请稍候重试"<<endl;
cout<<"请输入第几小的序号:"<<endl;
}
}

bool flag = false;//标记,判断序号是否正确
cout<<"请输入第几小的序号:"<<endl;
while(!flag)
{
cin>>m;
if (m>0&&m<=10) {
flag = false;
cout<<"输入的序号不