C 练习实例68-数组循环移动m次

**题目:**有 n 个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。

思路:

  1. 先保存数组最后面的一个数
  2. 把最后那个数前面的所有数向后移动一位
  3. 最后,套入循环语句,循环m次,即移动m个位置

代码:

cpp 复制代码
#include <stdio.h>
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,10};
	int n=sizeof(a)/4;
	int *p=a;	//p指向数组第一个元素
	printf("数组里有%d个元素\n",n);
	printf("移动前的数组为:\n");
	for(p=a;p<a+n;p++){
		printf("%-4d",*p);
	}
	
	int m=3;	//移动3次
	for(int i=0;i<m;i++){
		p=a+n-1;	//p指向数组最后一个元素
		int temp;
		temp=*p;
		//把最后一位数前面的所有数,依次后移一位
		while(p>a){
			*p=*(p-1);
			p--;
		};
		*p=temp;
	}
	//输出数组
	printf("\n移动后的数组为:\n");
	for(p=a;p<a+n;p++){
		printf("%-4d",*p);
	}
	
	return 0;
}

运行:

bash 复制代码
数组里有10个元素
移动前的数组为:
1   2   3   4   5   6   7   8   9   10
移动后的数组为:
8   9   10  1   2   3   4   5   6   7
相关推荐
一路往蓝-Anbo4 分钟前
C语言从句柄到对象 (八) —— 当对象会说话:观察者模式与事件链表
c语言·开发语言·数据结构·stm32·单片机·观察者模式·链表
s441 分钟前
Python安装在C盘后如何移到D盘
c语言·windows·python
Herbert_hwt2 小时前
C语言位操作符详解:从入门到实战应用
c语言·算法
唐装鼠3 小时前
C语言syslog()函数(deepseek)
c语言·开发语言·syslog
Aaron15884 小时前
三种主流接收机架构(超外差、零中频、射频直采)对比及发展趋势浅析
c语言·人工智能·算法·fpga开发·架构·硬件架构·信号处理
Dillon Dong14 小时前
从C到Simulink: 使用STM32硬件支持包后为什么还不支持PC仿真ARM建模程序
c语言·stm32·simulink
Dillon Dong19 小时前
从C到Simulink: ARM Compiler 5 (RVDS) 为什么simulink 不能使用arm编译
c语言·arm开发·simulink
黎雁·泠崖19 小时前
Java底层探秘进阶:JIT汇编逐行拆解!Java方法栈帧与C语言深度对标
java·c语言·汇编
无限进步_20 小时前
【C语言】用队列实现栈:数据结构转换的巧妙设计
c语言·开发语言·数据结构·c++·链表·visual studio
Dillon Dong21 小时前
从C到Simulink: 使用 `simulation_stubs`(仿真存根)处理MBD中的硬件依赖
c语言·stm32·matlab