整数はN個あるため、前の数の順序はM位後ろにずれ、最終的にMの数が前のM個の数になります。上記の関数を実現するための関数を書き、N個の整数を入力し、調整後のN個をメイン関数に出力します。
#include 「stdafx.h」 #include 「stdio.h」 INTメイン(int ARGC、Char* ARGV[]) {void move(int array[20],int n,int m); 整数[20],n,m,i; printf(「いくつ?」); SCANF("%d",&n); printf("input %d numbers:\n",n); for(i=0; i<n; i++) scanf("%d",&number[i]); Printf(「何度移動したい?」); scanf("%d",&m); move(number, n, m); printf(「今、彼らは:\n」); for(i=0; i<n; i++) printf("%d ",number[i]); printf("\n"); 返す0;
} void move(int array[20], int n, int m) // ループ内で一度後退する関数 {int *p,array_end; array_end=*(array+n-1); for(p=array+n-1; p>array; p--) *p=*(p-1); *array=array_end; m--; if(m>0) move(array,n,m); 再帰呼び出しでは、ループ数Mが0に減ると呼び出しは停止されます
}
|