C语言实验——数组逆序
程序员文章站
2022-03-21 20:41:08
...
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m < n < 100)个位置。
Input
输入数据有2行,第一行的第一个数为n,后面是n个整数,第二行整数m。
Output
按先后顺序输出n个整数。
Sample Input
5 1 2 3 4 5 2
Sample Output
4 5 1 2 3
#include<stdio.h>
int main()
{
int n,m,a[100],i,k=1,temp,l;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(k=1;k<=m;k++)//还是冒泡思想的应用。本层控制着遍历交换的次数。
{
l=n;
for(i=1;i<n;i++)//本层循环将原来的最后的数一次一次通过循环完成代换。
{
temp=a[l-1];
a[l-1]=a[l-2];
a[l-2]=temp;
l=l-1;//注意更新。
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
做题历程:第一遍做的时候,没考虑到冒泡的时候要把倒数第m个数放到最前面,结果要放到前面的m个数位置放对了,但顺序放反了,可能做的时候考虑的有点多....
最重要的是遍历,交换数值,这是最重要的,大方向要搞明白。
上一篇: C++11/14学习(三)区间迭代
下一篇: 用户名密码注册与登录的应用