如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
典型例题4第页共NUMPAGES3页广东海洋大学GuangdongOceanUniversityC语言程序设计技能训练试题(典型例题4))TrainingItem【题目】:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,如下图所示。【问题分析与算法设计】:假设有N个数,要移动m个位置,则移动数的规律为:i=0时:第N-m+1个数组元素即a[N-m+0]移到第一个位置a[0],将a[N-m]前面的所有数组元素即(a[0]~a[N-m-1])依次往后移一个位置;i=1时:第N-m+2个数组元素即a[N-m+1]移到第二个位置a[1],同时将a[1]~a[N-m+0]的数组元素依次往后移一个位置;i=2时:第N-m+3个数组元素即a[N-m+2]移到第三个位置a[2],同时将a[2]~a[N-m+1]的数组元素依次往后移一个位置;………………………i=m-1时:第N-m+m个数组元素即a[N-m+m-1]移到第m个位置a[m-1],同时将a[m]~a[N-m+m-2]的数组元素依次往后移一个位置;【程序源代码、说明及注释】:#include<stdio.h>#defineN10main(){inta[N],m,i,j,temp;printf("pleaseinput%dnumberstoarraya:\n",N);for(i=0;i<N;i++)/*任意输入N个数到数组a中*/scanf("%d",&a[i]);printf("pleaseinputthevalueofplacesyouwanttomove:\n");scanf("%d",&m);/*输入想要后移的位置数m*/for(i=0;i<m;i++)/*将数组后面m个数依次移到数组的前面*/{temp=a[N-m+i];/*将数组元素a[N-m+i]的值保存起来*/for(j=N-m+i-1;j>=i;j--)a[j+1]=a[j];/*将数组中a[i]~a[N-m+i-1]的数组元素依次往后移一个位置*/a[i]=temp;/*将数组元素a[N-m+i]的值放在a[i]中*/}printf("thelastnumbersis:\n");for(i=0;i<N;i++)printf("%d",a[i]);/*以上for循环完成的功能是:打印输出移动m个位置后数组元素的值*/}