C语言实验——数组逆序

本文介绍了一个数组旋转问题的解决思路,使用冒泡思想进行遍历和数值交换,确保最后m个数变成最前面的m个数,同时保持原有顺序。通过具体示例和代码实现,展示了如何处理数组元素的位置调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic Discuss

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个数位置放对了,但顺序放反了,可能做的时候考虑的有点多....

最重要的是遍历,交换数值,这是最重要的,大方向要搞明白。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值