解题思路:通过两个数组来完成,原数组输入原数字,并将要移动的数字装入另一个数组中,原数组中的剩下的数字后移,然后将另一个数组中的数字赋给原数组即可。
涉及知识点:数组中下标的使用;
代码如下:
#include<stdio.h> #define z 100 int main() { int a[z]; int b[z]; int i,m,n; scanf("%d",&n); //输入要输入的个数; for(i=0;i<n;i++)//通过数组,循环输入n个数;注意:n一定要小于z。z表示可以输入100个数字。 { scanf("%d",&a[i]); } scanf("%d",&m);//输入要移动的个数;注意:(n-m)实际上就是数组中要移动到最前面的那个数字(也就是要移动到a[0]的那个数字)。 for(i=0;i<m;i++)//用另一个数组先将原数组中要向前移动的m个数字装起来。 { b[i]=a[n-m+i];//n-m是原数组中第一个要装入到另一个数组中的下标,加i的意思是要装入m个该数组中的数字和它的下标(i<m). } for(i=n-1;i>=m;i--)//将该数组中剩下的数字,向后移动位置。n-1,是最后一位数的下标。i>=m是后移多少位的意思。i--是后移。 { a[i]=a[i-m];//比如输入了8个数,要移动3个数,那么i=8-1,等于7,a[7]=a[7-3],这样遍历个数后移。 } for(i=0;i<m;i++)//将另一个数组中的数(要移动的m个数),放回原数组中。 { a[i]=b[i]; } for(i=0;i<n;i++)//遍历输出。 { printf("%d ",a[i]); }printf("\n"); return 0; }
0.0分
0 人评分
我觉得这样写比较简单,修改了下你的代码。 #include <stdio.h> int main() { int n,a[100],b[100],i,m; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } scanf("%d",&m); for(i=0;i<m;i++) { b[i]=a[n-m+i]; printf("%d ",b[i]); } for(i=0;i<n-m;i++) { printf("%d ",a[i]); } return 0; }
Bridge 2018-02-28 23:17:18 |
楼主写的也很好,很详细,受益了,抱拳了老铁。
不容易系列2 (C语言代码)浏览:699 |
倒杨辉三角形 (C语言代码)浏览:4039 |
你的开发任务 (C++代码)写到一半,等有心情回来补全浏览:923 |
C语言训练-求PI* (C语言代码)(正确结果竟然是谜一样的3.141591)浏览:1335 |
点我有惊喜!你懂得!浏览:1415 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:481 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:561 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:724 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1177 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:631 |