前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言实现数组的循环左移,右移,翻转

C语言实现数组的循环左移,右移,翻转

作者头像
杨源鑫
发布2019-07-04 16:19:14
2.1K0
发布2019-07-04 16:19:14
举报
文章被收录于专栏:嵌入式开发圈嵌入式开发圈
找工作笔试中,经常喜欢考像下面这样的题目,这样的题目在工作中也是很常用的,我们来看看:

假设数组为 :

12345

如果左移一次即为:23451 ,依次类推

如果右移一次即为:51234 ,依次类推

翻转则为:54321

我们来实现下这个程序:

代码语言:javascript
复制
 1#include <stdio.h>
 2#include <stdlib.h>
 3#include <string.h>
 4#define  NR(x)  (sizeof(x)/sizeof(x[0]))
 5//数组左移 
 6int buffer_left_move(int *buffer , int buf_len)
 7{
 8    int i ;
 9    char tmp = buffer[0];
10    for(i = 1 ; i < buf_len ; i++)
11    {
12        buffer[i-1] = buffer[i] ;
13    }
14    buffer[buf_len-1] = tmp ;
15}
16//数组右移 
17int buffer_right_move(int *buffer , int buf_len)
18{
19    int i ;
20    char tmp = buffer[buf_len - 1];
21    for(i = buf_len ; i > 0 ; i--)
22    {
23        buffer[i] = buffer[i-1] ; 
24    }
25    buffer[0] = tmp ;
26}
27//数组翻转 
28int buffer_turn_over(int *buffer , int buf_len)
29{
30    int size = buf_len ; 
31    int i , tmp; 
32    for(i = 0 ; i < size/2 ; i++)
33    {
34        tmp = buffer[i] ; 
35        buffer[i] = buffer[size-1-i] ;
36        buffer[size-1-i] = tmp;
37    }
38}
39//打印数组 
40void print_buffer(int *buffer, int buf_len)
41{
42    int i ;
43    system("cls");
44    printf("please input \'a' or \'b' or \'w' \n");
45    for(i = 0 ; i < buf_len ; i++)
46    {
47        printf("%d",buffer[i]);
48    }
49    putchar('\n');
50}
51
52int main(void)
53{
54    int buffer[5] = {1,2,3,4,5} ;
55
56    print_buffer(buffer,NR(buffer));
57    while(1)
58    {
59        switch(getch())
60        {   
61            //左边 
62            case 'a': 
63                    buffer_left_move(buffer,NR(buffer)) ;
64                    print_buffer(buffer,5);
65                    break ;
66            //右边 
67            case 'd':  
68                    buffer_right_move(buffer,NR(buffer));
69                    print_buffer(buffer,5);
70                    break ;
71            //翻转 
72            case 'w':
73                    buffer_turn_over(buffer,NR(buffer)) ;
74                    print_buffer(buffer,5);
75                    break ;
76        }
77    }
78    return 0 ; 
79}

运行结果:

按下a为不断左移,按下d为不断右移,按下w则为翻转

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式开发圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档