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
相关推荐
Alex Cafu8 分钟前
Linux网络编程1(OSI模型与TCP/IP协议栈)
linux·c语言·网络·tcp/ip
博语小屋20 分钟前
转义字符.
c语言·c++
Tandy12356_2 小时前
手写TCP/IP协议栈——实现ping响应不可达
c语言·网络·c++·网络协议·tcp/ip·计算机网络
程芯带你刷C语言简单算法题2 小时前
Day37~求组合数
c语言·开发语言·学习·算法·c
范纹杉想快点毕业2 小时前
入门工程师指南:基于CRC校验的通信协议底层C语言实现
c语言·开发语言·mongodb
Tandy12356_4 小时前
手写TCP/IP协议——实现ping的响应
c语言·网络·c++·网络协议·tcp/ip·计算机网络
六个九十度4 小时前
用C语言把BCD编码的数字转换成普通16进制
c语言·bcd
历程里程碑4 小时前
破解三数之和:双指针高效解法
c语言·数据结构·c++·经验分享·算法·leetcode·排序算法
大头流矢5 小时前
《数据结构·排序·进阶:希尔、堆、快排核心解析》——为何希尔是插入进阶?堆排序时间复杂度的关键?
c语言·数据结构·算法
ha_lydms5 小时前
2、Spark 函数_a/b/c
大数据·c语言·hive·spark·时序数据库·dataworks·数据开发