|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有n个整数,现在将前面各数顺序向后移m个位置,最后m个数变成最前面m个数,并输出。(编程提示:定义函数,实现每次数组往后移动一个元素,最后一个放到数组前面,这样调用m次即实现数组后移m个数。
emmm不知道哪里出错了裂开了,有没有小伙伴帮一下,感谢
- #include"stdio.h"
- void move(int[50],int,int);
- int main()
- {
- int number[50], n, i ,m;
-
- printf("请输入初始数组长度:");
- scanf("%d",&n);
-
- printf("请输入%d个数字:",n);
- for(i = 0; i < n; i++)
- {
- scanf("%d",&number[i]);
- }
-
- printf("请输入移动的次数:");
- scanf("%d",&m);
-
- move(number,n,m);
- for(i = 0; i < n; i++)
- {
- printf(" %d ",number[i]);
- }
- return 0;
- }
- void move(int number[50],int n,int m)
- {
- while(m >= n);
- {
- m -= n;
- }
-
- int temp, i, j;
- for(i = 0 ; i < m ; i++)
- {
- temp = number[n-1];
- for (j = n-1 ; j >=0 ; j--)
- {
- number[j-1] = number[j];
- }
- number[0] = temp;
- }
-
- for(i = 0; i < n; i++)
- {
- printf(" %d ",number[i]);
- }
- printf("\n");
- }
复制代码
一些有趣做法 - #include <stdio.h>
- void reverse(int* array, size_t start, size_t end){
- int temporary;
- while(start < --end){
- temporary = array[start];
- array[start++] = array[end];
- array[end] = temporary;
- }
- }
- int main(){
- int number[50], n, i ,m;
- printf("请输入初始数组长度:");
- scanf("%d",&n);
- printf("请输入%d个数字:",n);
- for(i = 0; i < n; i++) scanf("%d",&number[i]);
- printf("请输入移动的次数:");
- scanf("%d",&m);
- m %= n;
- reverse(number, 0, n);
- reverse(number, 0, m);
- reverse(number, m, n);
- for(i = 0; i < n; i++) printf(" %d ",number[i]);
- return 0;
- }
复制代码
|
|