原题的意思是给定一个指定长度的数组,然后接受一个数字m,将原数组前m位移动到最后,且顺序不变。

看到这个题,想到的第一个方法就是在用一个数组来储存改变后的数字,代码如下

 int func(){
int i,j,n;
int b[];     //定义一个新数组用来储存改变后的数字
int a[]={,,,,,,,,,};
printf("请输入要后移的位数");
scanf("%d",&n);
for(i=n,j=;i<;i++,j++) //把原数组n位后的数放到新数组最前面
b[j]=a[i];
for(i=;i<n;i++,j++) //将原数组前n位接着放到新数组中
b[j]=a[i];
for(i=;i<;i++)
{
printf("%d ",b[i]);
}
return ;

然后看题意好像是不允许用另外一个数组,接着就有了下一种思路,每次把原数组最后一个数放到最前面,循环数组长度(len)-n次,代码如下:

 void func()
{
int temp,i,j,n;
int a[]={,,,,,,,,,};
printf("\n请输入后移的位数");
scanf("%d",&n);
n=-n;
for(i=;i<n;i++) //循环n次把原数组后n位放到最前
{
j=;
temp=a[j]; //每次记录原数组最后一个数字
for(;j>;j--)
{
a[j]=a[j-]; //把整个数组后移一位
}
a[j]=temp; //把最后一个数放到最前
}
for(i=;i<;i++)
{
printf("%d ",a[i]);
}
}

这样一个程序感觉看的很头疼,然后自己就在网上又找到了一种''偷懒''的方法,  这种方法的思路是只按后移之后的顺序输出原数组,代码如下:

 void func()
{
int i,k,n;
int a[]={,,,,,,,,,};
printf("\n输入后移的位数");
scanf("%d",&n);
for(i=;i<;i++)
{
k=(i+n)%;     //求后移之后的下标
printf("%d ",a[k]); //直接输出该数字
}
}

感觉这个题的解决方法很多,然后就又在搜了下,又找到了一种方法,这种方法的思路是先分别将m位之前和之后的数字反转,最后将整个数组反转,代码贴下:

 void fun()
{
int i,j,n,temp;
int a[]={,,,,,,,,,};
printf("\n请输入后移的位数");
scanf("%d",&n);
for(i=,j=n-;i<n/;i++,j--) //将n位之前的数字反转
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=n,j=;i<(n+)/;i++,j--) //将n位之后的数字反转
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=,j=;i<;i++,j--) //将整个数组反转
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
/*上面这三个循环可以写成一个函数*/
for(i=;i<;i++)
{
printf("%d ",a[i]);
} }

今天就先写这四种方法,能找到其他的还会继续添加,如果大家有什么比较好的方法,也可以交流下。

给定一列数字将其平移n位的更多相关文章

  1. 验证abc三列数字符合我的小弟要求

    需求好像是: 1.第一列数据有重复的找出来,并且找出它的重复位置 2.第三列根据第一列得出的位置,取出相应位置的数据进行相加 3.相加的结果 是否等同于第二列的对应位置数据 <!DOCTYPE ...

  2. 求矩阵中各列数字的和 Exercise08_01

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年12月 * 题目:求矩阵中各列数字的和 * */ public class Exercise ...

  3. 在EXCEL中如何让一列数字变成文本格式?就是想让单元格的左上角变一个绿绿的?

    如何在EXCEL中如何让一列数字变成文本格式?就是想让单元格的左上角变一个绿绿的? 解决方案:将整列单元格格式设为文本,然后,选中该列,数据--分列--完成 详细步骤: (1)选中1行或者1列,再单击 ...

  4. 给定n个数字,问能否使这些数字相加得到h【折半查找/DFS】

    A Math game Time Limit: 2000/1000MS (Java/Others) Memory Limit: 256000/128000KB (Java/Others) Submit ...

  5. 控制input标签中只能输入数字以及小数点后两位

    js 代码如下: /* 控制input标签中只能输入数字 和小数点后两位 */ function checkNum(obj) { //检查是否是非数字值 if (isNaN(obj.value)) { ...

  6. 加密传输:每位数字+6,然后用除以9的余数代替该数字, 在把第一位和第四位交换,第二位和第三位交换,例如3276->3840

    /** * @author:(LiberHome) * @date:Created in 2019/3/6 10:00 * @description: * @version:$ */ /*今日目标:5 ...

  7. input输入框只能输入数字和 小数点后两位

    //input输入框只能输入数字和 小数点后两位 function num(obj,val){ obj.value = obj.value.replace(/[^\d.]/g,"" ...

  8. wps直接打开CVS文件会把长串数字订单号最后4位变为0

    WPS打开CVS文件,发现里面的长串数字订单号后4位全变成0了,而且是以科学计数法来显示了 上网查了下,不能直接打开,得先在WPS(OFFICE中也一样)中新建一个空白表格,然后用菜单里的数据导入功能 ...

  9. 《剑指offer》第四十四题(数字序列中某一位的数字)

    // 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1, ...

随机推荐

  1. ContestHunter暑假欢乐赛 SRM 04

    逃了一场SRM(躺 A题可以看成0点到1点,有p的几率从0到1,1-p几率不动,求0到1的期望步数.很显然概率是不降序列数/n!,然后列个方程E[0] = E[0] * (1 - p) + 1,解得E ...

  2. XMind 8 破解补丁 XMindCrack.jar注册机激活教程

    XMind 8 破解补丁 XMindCrack.jar注册机激活教程 Xmind 8 update7破解版(附破解教程|激活补丁|序列号) 思维导图 XMind 8 Update 7 Pro 破解版 ...

  3. CursorAdapter中getView newView bindView异同

    Adapter的作用是界面与数据之间的桥梁,通过设置适配器至ListView控件后(如调用ListView的 setAdapter(ListAdapter adapter)               ...

  4. Robotframework Web自动化实战课程

    想学习的小伙伴,现在可以报名了!!!7月1日正式开课本期课程主要是web自动化为主,根据平时工作经验整理的一套流程以及使用过程中常见的问题总结.学完后能很快上手,即学即用,课后遇到问题在线解答,远程协 ...

  5. LightOJ 1062 - Crossed Ladders 基础计算几何

    http://www.lightoj.com/volume_showproblem.php?problem=1062 题意:问两条平行边间的距离,给出从同一水平面出发的两条相交线段长,及它们交点到水平 ...

  6. MyBatis框架的使用及源码分析(十二) ParameterHandler

    在StatementHandler使用prepare()方法后,接下来就是使用ParameterHandler来设置参数,让我们看看它的定义: package org.apache.ibatis.ex ...

  7. java将文件转为UTF8工具类

    package hiveTest; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File ...

  8. 20155335《java程序设计》第一周学习总结

    18个章节的问题 (1)为什么需要JVM让java跨平台? (2)JVM与JDK,与JRE的关系? (3)为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号 ...

  9. MySQL数据库运行环境的搭建

    第一步:安装wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b文件,安装过程中可能会遇到问题,把遇到的问题代码复制粘贴到360人工服务,查找方案 ...

  10. bzoj 1006 MCS算法

    根据陈丹琪的论文弦图与区间图,求出弦图的完美消除序列之后,反向给每个点染可以染的最小的颜色,这样可以使用最少的颜色染色,染色的方案即为队伍数. 那么我们需要求该图的完美消除序列,使用MCS算法,从后向 ...