将数组元素循环流动的问题(即数组第一个元素变成最后一个,后面的补上,如此循环几次)
2014-04-04 22:12
447 查看
#include<stdio.h> void input(int *,int ); void swap(int *,int ,int); void output(int *,int); int main() { int m,n; printf("How many numbers do you want ? "); scanf("%d",&n); int num ; printf("enter %d numbers: \n",n); input(num,n); printf("How many numbers do you want to move? (It must less than %d) ",n); scanf("%d",&m); while(m>=n) { printf("input error!\n"); scanf("%d",&m); } swap(num,0,n-1); swap(num,0,n-m-1); swap(num,n-m,n-1); printf("\nthe result of moving numvers is :\n"); output(num,n); return 0; } void input(int *a,int n) { int *head=a; while(a<=head+n-1) scanf("%d",a++); } void swap(int *a,int i,int j) { int temp; for(;i<=(i+j)/2;i++,j--)/*这个公式适用于所有需要中间元素参与的题*/ { temp=a[i]; a[i]=a[j]; a[j]=temp; } } void output(int *a,int n) { int *head=a; while(a<=head+n-1) printf("%d ",*(a++)); }
相关文章推荐
- (2)int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。错误写法以及正确写法。
- php获取并删除数组的第一个和最后一个元素
- 定义一个int型数组,包含10个元素,分别赋值为1~10, 然后将数组中的元素都向前移一个位置,最后一个元素的值是原来第一个元素的值,然后输出这个数组
- PAT乙级 1008. 数组元素循环右移问题 (20) 数组反转思想
- android用数组保存输出流的数据包的问题(最后等到的所有的都变成最后一个包)
- PHP 删除数组第一个元素和最后一个元素
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- php--------删除数组的第一个元素和最后一个元素
- 数组最后一个元素的 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。。
- 【读书笔记】输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- php获取并删除数组的第一个和最后一个元素
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- js 数组操作常用方法。 push():在数组后面加入元素,并返回数组的长度 unshif()t:在数组前面加入元素,并返回数组的长度 pop()删除最后一个元素
- php删除数组最后一个元素和第一个元素,array_shift(),array_pop()的用法
- 1008. 数组元素循环右移问题 (20)——数组循环移动算法
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- php 删除数组的最后一个元素 和第一个元素