#include<iostream>
using namespace std;
int main()
{
int n,m,j;
int a[101];
while(scanf("%d %d",&n,&m)!=EOF)
{
if(n==0&&m==0)
break;
int i=0,j=0,flag=0; /*注意定义的flag在这里是作为一个找到位置的标志,防止持续的比较交换,
且切记flag要设立在for循环外 */
for(i=0,j=0;i<n;i++,j++) //这里的i和j的用法十分巧妙,i仅用作循环次数不参与数组,j参与
{
cin>>a[j];
if(a[j]>m&&flag==0) //找到之后将下一个数赋值为m,同时要j++要使用两次!
{
a[j+1]=a[j];
a[j]=m;
flag=1;
j++;
}
}
for(i=0;i<=n;i++)//这也是新的一种输出的方式,和之前用的标记法比起来 这个更加简便
{
if(i>0)
cout<<" ";
cout<<a[i];
}
cout<<endl;
} return 0;
}
这个题目体会挺多