有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
#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]);
}
本体有着一种独特的感觉,就是对于一维数组结构的一种回环,我在这里使用的是借助数字计算中存在的一种循环规律来代替这种循环,从而实现了目的
这在某种程度上反映了,编程语言所代表的事件内在的逻辑,与具有严格逻辑意义的学科——数学之间存在的美妙神奇的交汇。