C语言实现数组的循环左移,右移,翻转的示例
时间:2018-07-20
今天小编就为大家分享一篇C语言实现数组的循环左移,右移,翻转的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
数组结合指针可以实现很多有趣的功能,比如下面这个程序:
假设数组为 : 12345
如果左移一次即为:23451 ,依次类推
如果右移一次即为:51234 ,依次类推
翻转则为:54321
我们来实现下这个程序:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define NR(x) (sizeof(x)/sizeof(x[0])) //数组左移 int buffer_left_move(int *buffer , int buf_len) { int i ; char tmp = buffer[0]; for(i = 1 ; i < buf_len ; i++) { buffer[i-1] = buffer[i] ; } buffer[buf_len-1] = tmp ; } //数组右移 int buffer_right_move(int *buffer , int buf_len) { int i ; char tmp = buffer[buf_len - 1]; for(i = buf_len ; i > 0 ; i--) { buffer[i] = buffer[i-1] ; } buffer[0] = tmp ; } //数组翻转 int buffer_turn_over(int *buffer , int buf_len) { int size = buf_len ; int i , tmp; for(i = 0 ; i < size/2 ; i++) { tmp = buffer[i] ; buffer[i] = buffer[size-1-i] ; buffer[size-1-i] = tmp; } } //打印数组 void print_buffer(int *buffer, int buf_len) { int i ; system("cls"); printf("please input 'a' or 'b' or 'w' n"); for(i = 0 ; i < buf_len ; i++) { printf("%d",buffer[i]); } putchar('n'); } int main(void) { int buffer[5] = {1,2,3,4,5} ; print_buffer(buffer,NR(buffer)); while(1) { switch(getch()) { //左边 case 'a': buffer_left_move(buffer,NR(buffer)) ; print_buffer(buffer,5); break ; //右边 case 'd': buffer_right_move(buffer,NR(buffer)); print_buffer(buffer,5); break ; //翻转 case 'w': buffer_turn_over(buffer,NR(buffer)) ; print_buffer(buffer,5); break ; } } return 0 ; }
运行结果:
please input 'a' or 'b' or 'w' 12345
按下a为不断左移,按下d为不断右移,按下w则为翻转
以上这篇C语言实现数组的循环左移,右移,翻转的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- Go语言同步(Synchronization)
- Android开发必备知识:为什么说Kotlin值得一试
- Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法
- Go语言排序与接口实例分析
- 从 Android 静音看正确的查找 bug 的姿势
- GO语言并发编程之互斥锁、读写锁详解
- 浅析Go语言中的Range关键字
- Go语言使用sort包对任意类型元素的集合进行排序的方法
- 优化Linux的内核参数来提高服务器并发处理能力
- 浅析 Android 的窗口
- Golang同步:锁的使用案例详解
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
- 高性能网络编程7--tcp连接的内存使用
- 从websocket看go的应用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 短网址程序YOURLS安装及配置教程与设置中文
- MGR用哪个版本?5.7 vs 8.0
- 同事直呼666!小姐姐仅用3行代码就能玩出花来
- MySQL升级至8.0需要考虑哪些因素?
- 某云Music——JS破解全过程
- 和低效 IO 说再见,回头补一波 Java 7 的 NIO.2 特性
- 框架源码调试实战之easypoi异常解决方案精讲
- MySQL8.0的错误日志
- Shiro学习笔记(一)
- Shiro学习笔记(二)
- Shiro学习笔记 三(认证授权)
- Shiro学习笔记四(Shiro集成WEB)
- Shiro学习笔记五(Shiro标签,及通配符)
- Shiro学习笔记六(自定义Reaml-使用数据库设置 user roles permissions)
- Luncene学习 第一天 《入门程序》