|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
|
|