6-20 实验7_11_循环移位 (100 分)

设计函数void shift(int *array , int num , int size ) ;,实现将整型数组内元素循环向左移若干位置。循环向左移位含义如下:

比如,原始数组a[0],a[1]...a[9]内元素依次为:1 2 3 4 5 6 7 8 9 10,循环向左移1位后,则a[0],a[1]...a[9]内元素依次为:2 3 4 5 6 7 8 9 10 1,循环向左移2位后,则a[0],a[1]...a[9]内元素依次为:3 4 5 6 7 8 9 10 1 2。依次类推。

函数接口定义:

void shift(int *array , int num , int size ) ;

其中 array 、 num和 size 都是用户传入的参数。 array 为指向原始数组的指针; num 为向左移的位数;size 为数组的大小。函数没有返回值。

裁判测试程序样例:


#include <stdio.h>
#include <stdlib.h>

void shift(int *array , int num , int size ) ;

int main()
{
    int        i , n , p , array[100] ;

    scanf(" %d%d" , &n , &p ) ;//测试用例保证0<p<n<=100
    for( i = 0 ; i < n ; i++ )
        scanf( "%d" , &array[i] ) ;//测试用例保证所有输入可以用整型存储

    shift( array , p , n ) ;//向左移p位
    for( i = 0 ; i < n - 1 ; i++ )
        printf( "%d " , array[i] ) ;
    printf( "%d\n" , array[i] ) ;

    return 0;    
}

/* 请在这里填写答案 */

输入样例:

10 1
1 2 3 4 5 6 7 8 9 10

输出样例:

2 3 4 5 6 7 8 9 10 1
void shift(int *array , int num , int size )
{
	int k=0;
	for(int i=0;i<num;i++)
	{
		array[size]=array[0];
		for(int j=1;j<=size;j++)
		{
			array[j-1]=array[j];
		}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一章 EDA_VHDL 实验/设计与电子设计竞赛 4 1-1、 应用QuartusII 完成基本组合电路设计 5 1-2. 应用QuartusII 完成基本时序电路的设计 6 1-3. 设计含异步清0 和同步时钟使能的加法计数器 7 1-4. 7 段数码显示译码器设计 8 1-5. 8 位数码扫描显示电路设计 9 1-6. 数控分频器的设计 10 1-7. 32 位并进/并出移位寄存器设计 10 1-8. 在QuartusII 中用原理图输入法设计8 位全加器 11 1-9. 在QuartusII 中用原理图输入法设计较复杂数字系统 11 1-10. 用QuartusII 设计正弦信号发生器 13 1-11. 8 位16 进制频率计设计 16 1-12. 序列检测器设计 16 1-13. VHDL 状态机A/D 采样控制电路实现 18 1-14. 数据采集电路和简易存储示波器设计 19 1-15. 比较器和D/A 器件实现A/D 转换功能的电路设计 20 1-16 移位相加硬件乘法器设计 24 1-17 采用流水线技术设计高速数字相关器 24 1-18 线性反馈移位寄存器设计 25 1-19 乐曲硬件演奏电路设计 28 1-20 乒乓球游戏电路设计 32 1-21 循环冗余校验(CRC)模块设计 33 1-22. FPGA 步进电机细分驱动控制设计(电子设计竞赛赛题) 34 1-23. FPGA 直流电机PWM 控制实验 35 1-24. VGA 彩条信号显示控制器设计 37 1-25. VGA 图像显示控制器设计 37 1-26. 清华大学学生基于GW48PK2 系统VGA 图像显示控制器设计示例5 则 38 1-27. 直接数字式频率合成器(DDS)设计实验(电子设计竞赛赛题) 39 1-28. 嵌入式锁相环PLL 应用实验 41 1-29. 使用嵌入式锁相环的DDS 设计实验(200MHz 超高速 DAC 的PLL 测试 42 1-30. 基于DDS 的数字移相信号发生器设计(电子设计竞赛赛题) 45 1-31. 采用超高速A/D 的存储示波器设计(含PLL,电子设计竞赛赛题) 46 1-32. 信号采集与频谱分析电路设计(电子设计竞赛赛题) 46 1-33. 等精度数字频率/相位测试仪设计实验(电子设计竞赛赛题) 48 1-34. FPGA 与单片机联合开发之isp 单片机编程方法 49 1-35. 测相仪设计(电子设计竞赛赛题) 50 1-36. PS/2 键盘鼠标控制电子琴模块设计 50 1-37. PS/2 鼠标与VGA 控制显示游戏模块设计 50 1-38. FPGA_单片机_PC 机双向通信测频模块设计 50 1-39. 10 路逻辑分析仪设计(电子设计竞赛赛题) 51 1-40. IP 核:数控振荡器NCO 应用设计 52 1-41. IP 核:FIR 数字滤波器应用设计 53 1-42. IP 核:FFT 应用设计 53 1-43. IP 核:CSC VGA 至电视色制互转模块应用设计 54 1-44. IP 核:嵌入式逻辑分析仪SignalTapII 调用 55 1-45. USB 与FPGA 通信实验 56 第二章 SOPC/EDA 设计实验I - 56 2-1 用逻辑锁定优化技术设计流水线乘法器实验 57 2-2 用逻辑锁定优化技术设计16 阶数字滤波器实验 59 2-3 基于DSP Builder 的FIR 数字滤波器设计实验 60 2-4 基于DSP Builder 的IIR 数字滤波器设计实验 60 2-5 基于DSP Builder 的DDS 与数字移相信号发生器设计实验 62 2-6 m 序列伪随机序列发生器设计实验 63 2-7 巴克码检出器设计实验 65 2-8 RS 码编码器设计实验 65 2-9 正交幅度调制与解调模型设计实验 67 第三章 SOPC/EDA 设计实验II 67 3-1 基于MATLAB/DSP Builder DSP 可控正弦信号发生器设计 72 3-2 32 位软核嵌入式处理器系统Nios 开发实验 73 3-3 设计一个简单的SOPC 系统 74 3-4 简单测控系统串口接收程序设计 74 3-5 GSM短信模块程序设计 75 3-6 基于SOPC 的秒表程序设计 77 3-7 Nios Avalon Slave 外设(PWM 模块)设计 78 3-8 Nios Avalon Slave 外设(数码管动态扫描显示模块)设计 79 3-15 DMA 应用和俄罗斯方块游戏设计 79 第四章 SOPC/EDA 设计实验III ( NiosII 系统设计 ) 79 4-1、建立NIOSII 嵌入式处理器硬件系统 87 4-2、NIOSII 软件设计与运行流程 94 4-3、加入用户自定义组件设计 100 4-4、加入用户自定义指令设计 103 4-5、FLASH 编程下载 104 4-6、设计DSP 处理器功能系统 104 4-7、AM 调制电路设计 105 第五章 液晶接口实验 105 5-1 GDM12864A 液晶显示模块接口开发 111 5-2 HS162-4 液晶显示模块与单片机的接口 114 5-3 G240-128A 液晶显示模块的接口 115 第六章 8051/89C51 CPU 核及片上系统设计实验 115 6-1 基本CPU 软硬件设计 122 6-2 8051/89C51 单片机核,等精度频率计与液晶显示实验 123 6-3 8051/89C51 单片机核,等精度频率计与数码管显示实验 124 第七章 模拟EDA 实验 124 7-1 模拟EDA 实验及其设计软件使用向导(PAC _Designer 使用) 124 7-2 基于ispPAC80 的5 阶精密低通滤波器设计 126 7-3 基于ispPAC10 的直流增益为9 的放大器设计 129 附录:GW48 EDA/SOPC 主系统使用说明 129 第一节:GW48 教学系统原理与使用介绍, 132 第二节:实验电路结构图 137 第三节:超高速A/D、D/A 板GW-ADDA 说明 138 第四节:步进电机和直流电机使用说明 138 第五节:SOPC 适配板使用说明 139 第六节:GWDVPB 电子设计竞赛应用板使用说明
循环移位指令(CIRC)可以用来实现流水灯控制。以下是一个基本的例子,使用S7-1200 PLC,控制8个LED灯的流水灯效果。 1. 首先,在PLC中进行硬件配置,将8个LED灯连接到PLC的8个输出口上。 2. 在TIA Portal中创建一个新的S7-1200项目,并创建一个程序块。 3. 在程序块中定义一个8位的变量Byte1,表示8个LED灯的状态。 4. 在主程序中使用循环语句,循环执行以下操作: (1) 将Byte1变量左移一位,并将最高位的值存储到最低位。 (2) 将Byte1变量输出到PLC的8个输出口,控制LED灯的亮灭。 (3) 延时一段时间,以控制流水灯的速度。 5. 编译程序,并上传到PLC中运行。 下面是一个简单的S7-1200 PLC程序示例,实现8个LED灯的流水灯效果: ``` PROGRAM MainProgram VAR Byte1 : BYTE; //定义8位的变量Byte1,表示8个LED灯的状态 END_VAR //主程序 BEGIN //初始化Byte1变量 Byte1 := 1; //循环执行流水灯控制 WHILE TRUE DO //将Byte1变量左移一位,并将最高位的值存储到最低位 Byte1 := CIRC(Byte1, 1); //将Byte1变量输出到PLC的8个输出口,控制LED灯的亮灭 Q0.0 := BYTE_TO_BOOL(Byte1.0); Q0.1 := BYTE_TO_BOOL(Byte1.1); Q0.2 := BYTE_TO_BOOL(Byte1.2); Q0.3 := BYTE_TO_BOOL(Byte1.3); Q0.4 := BYTE_TO_BOOL(Byte1.4); Q0.5 := BYTE_TO_BOOL(Byte1.5); Q0.6 := BYTE_TO_BOOL(Byte1.6); Q0.7 := BYTE_TO_BOOL(Byte1.7); //延时一段时间,以控制流水灯的速度 TON_Delay(IN := TRUE, PT := T#1S); END_WHILE; END_PROGRAM ``` 在上面的程序中,CIRC指令将Byte1变量左移一位,并将最高位的值存储到最低位。例如,如果Byte1的值是00000001(二进制),执行CIRC指令后,Byte1的值变成00000010(二进制)。 BOOL_TO_BYTE和BYTE_TO_BOOL函数可以将BOOL类型和BYTE类型之间进行转换。例如,BYTE_TO_BOOL(Byte1.0)将Byte1变量的最低位转换为BOOL类型,并将其输出到Q0.0输出口上。 最后,使用TON_Delay指令实现延时一段时间,以控制流水灯的速度。例如,设置PT参数为T#1S,表示延时1秒。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆水獭_(:_」∠)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值