#include<iostream>
using namespace std;
int main()
{
int n,i,j,k,a[10001],t,m,g[10001],l,q,r;
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>a[i];//这个是给数组a[]赋值
for(l=1;l<=m;l++)
{
j=n-1; //给j赋值为n-1
q=n;
while(a[j]>a[j+1]&&j>=0) j--;//找到一个位置 一个前面的数大于后面数的地方跳出
for(i=j+1;i<n;i++)//=n的时候会越界 所以要改了
if((a[i]-a[j]<q)&&(a[i]-a[j]>0))
{
q=a[i]-a[j];r=i;//这是在找一个位置 找到a[j]大于前面小于后面的位置
} //然后这个位置值 赋给了r 通过r传递下去
t=a[r];
a[r]=a[j];//这里三步就是 把刚刚的 a[j]和 a[r]值对换
a[j]=t;
for(i=j+1;i<=j+(n-j)/2;i++)
{//这一段要改
t=a[i];
a[i]=a[n+j+1-i];//这里很明显会导致越界 越界可是个不好的错误哦
a[n+j+1-i]=t;//看到这里时 我凌乱了 因为我不清楚这几句表达的意思了
}
}
for(i=1;i<=n-1;i++)
cout<<a[i]<<" ";
cout<<a[n]<<endl;
//system("pause");
return 0;
}
这个 你要是 不知道 我凌乱的地方表达的意思 我可以帮你 再分析 显然 要加分 呵呵
#include<stdioh>
fun(s, n1, n2)
int s, n1, n2;//没有见过这样写的,c不是这样写的吧!!!!
{ int i, j, t;
i=n1; j=n2;
while(i<j)
{ t= (s+i); (s+i)= (s+j); (s+j)=t;
i++; j--;
}
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},i, p=a;//这里a是多少呢? a是数组的起始地址
fun(p,0,3); //这个是没有返回值的,功能是把数组a中的0-3倒序一下,
//a 中的数据为4321567890
fun(p,4,9); //4-9倒序a中的数据为4321098765
fun(p,0,9);//这里的fun(p,0,3)是多少?//a 中的数据为5678901234
for(i=0; i<10; i++) printf(“%d”, (a+i));
//输出结果为5678901234
printf(“\n”);
}
c1=getchar(); //如果这里输入一个a然后回车,那么getchar()会把a接收,把回车留在缓冲区
c2=getchar(); //这个c2就没有机会输入,它会接收缓冲区的回车,于是c2=='\n', putchar(c2);就是输出一个换行
可以这样
c1=getchar();
getchar(); //读取缓冲区的回车
c2=getchar(); //现在这个可以输入了
以上就是关于问个C++的程序全部的内容,包括:问个C++的程序、问一个c语言程序的执行过程、问一个C语言简单程序!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)