数据移位(C案例)
2016-05-12 23:35
295 查看
有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m个数变成最前面的m个数。
编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。
例子
Input n(n<=10):10
Input 10 integers:1 2 3 4 5 6 7 8 9 10
Output the original:1 2 3 4 5 6 7 8 9 10
Input m(m<=10):4
Output the shifted:7 8 9 10 1 2 3 4 5 6
本体有着一种独特的感觉,就是对于一维数组结构的一种回环,我在这里使用的是借助数字计算中存在的一种循环规律来代替这种循环,从而实现了目的
这在某种程度上反映了,编程语言所代表的事件内在的逻辑,与具有严格逻辑意义的学科——数学之间存在的美妙神奇的交汇。
编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。
例子
Input n(n<=10):10
Input 10 integers:1 2 3 4 5 6 7 8 9 10
Output the original:1 2 3 4 5 6 7 8 9 10
Input m(m<=10):4
Output the shifted:7 8 9 10 1 2 3 4 5 6
#include "stdafx.h" void shift( int* p_num1[10] ,int n ,int m) { int i,t; int num[10]; for (i = 0; i < n; i++) num[i] = *p_num1[i]; for ( i = 0 ;i < n ;i++) *p_num1[i] = num[(n-m+i)%n]; } void main() { int n,m,i; int num[10]; int* p_num0[10]; printf("Input n(n<=10):"); scanf("%d",&n); printf("Input n integers:"); for (i = 0; i < n; i++) scanf("%d",&num[i]); printf("Input m(m<=10):"); scanf("%d",&m); for (i = 0; i < n; i++) p_num0[i] = & num[i]; shift( p_num0 ,n ,m); for ( i = 0 ;i < n ;i++) printf("%d " ,*p_num0[i]); }
本体有着一种独特的感觉,就是对于一维数组结构的一种回环,我在这里使用的是借助数字计算中存在的一种循环规律来代替这种循环,从而实现了目的
这在某种程度上反映了,编程语言所代表的事件内在的逻辑,与具有严格逻辑意义的学科——数学之间存在的美妙神奇的交汇。
相关文章推荐
- Android进程间通信(IPC)之Messenger
- Codeforces 350 Div2 E Correct Bracket Sequence Editor(list模拟)
- hdu1754 I Hate it
- IOC容器其他相关特性设计与实现
- 计算机组成.计算机在计算啥.运算与ALU
- 判断两个顶点之间是否联通,是否有长度为K的路径
- leetcode26. Remove Duplicates from Sorted Array
- 安卓逆向安全从今天开始
- Github学习之RecyclerView实现View滑动折叠效果
- 查找算法
- 新站之网站优化方案[优化]
- Project facet Java 1.8 is not supported by target runtime Apache Tomcat v7.0.
- [leetcode] 206.Palindrome Linked List
- UVA437 The Tower of Babylon
- 对照Java学习Swift--嵌套类型(Nested Types)
- JavaScript继承详解
- 网站策划:网站用户需求分析
- iOS获取设备唯一的UUID(解决删除应用UUID变更的问题)
- ASP.NET的三层架构(DAL,BLL,UI)
- 如何添加图片