关于一维数组的问题
有n个整数,现在将前面各数顺序向后移m个位置,最后m个数变成最前面m个数,并输出。(编程提示:定义函数,实现每次数组往后移动一个元素,最后一个放到数组前面,这样调用m次即实现数组后移m个数。emmm不知道哪里出错了裂开了,有没有小伙伴帮一下,感谢{:10_266:}
#include"stdio.h"
void move(int,int,int);
int main()
{
int number, n, i ,m;
printf("请输入初始数组长度:");
scanf("%d",&n);
printf("请输入%d个数字:",n);
for(i = 0; i < n; i++)
{
scanf("%d",&number);
}
printf("请输入移动的次数:");
scanf("%d",&m);
move(number,n,m);
for(i = 0; i < n; i++)
{
printf(" %d ",number);
}
return 0;
}
void move(int number,int n,int m)
{
while(m >= n);
{
m -= n;
}
int temp, i, j;
for(i = 0 ; i < m ; i++)
{
temp = number;
for (j = n-1 ; j >=0 ; j--)
{
number = number;
}
number = temp;
}
for(i = 0; i < n; i++)
{
printf(" %d ",number);
}
printf("\n");
} void move(int number,int n,int m)
{
while(m >= n)
{
m -= n;
}
int temp, i, j;
for(i = 0;i < m;i++)
{
temp = number;
for (j = n-1;j>=1;j--)
{
number = number;
}
number = temp;
}
}
发现了最后的move函数写错了 move函数里有个while写错了,while最后不应该加分号。
另:将while函数换成m=m%n效率会更高 一些有趣做法#include <stdio.h>
void reverse(int* array, size_t start, size_t end){
int temporary;
while(start < --end){
temporary = array;
array = array;
array = temporary;
}
}
int main(){
int number, n, i ,m;
printf("请输入初始数组长度:");
scanf("%d",&n);
printf("请输入%d个数字:",n);
for(i = 0; i < n; i++) scanf("%d",&number);
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);
return 0;
}
页:
[1]