题目描述编写程序,将一维数组中的元素向右循环移动N次。
输入
第一行整数n,表示数组大小为n
第二行,n个数,表示数组中的n个元素。
第三行,整数N,表示数组向右移动N次。
输出
移动后的数组元素,每个元素后跟空格。样例输入5
1 2 3 4 5
2样例输出4 5 1 2 3
程序如下:
#include <stdio.h>#include <stdlib.h>
main()
{
int *a,n,N,i,j,tmp;
printf("输入数组元素个数:");
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
printf("输入数组元素:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("输入循环移动的位数:");
scanf("%d",&N);
printf("移位前数组:");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0,j=n-1;i<j;i++,j--)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=0,j=N-1;i<j;i++,j--)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=N,j=n-1;i<j;i++,j--)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
printf("移位后数组:");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
free(a);
}
运行截图:
追问
#include
这个表示什么,可以没有吗
函数malloc和free在该头文件中定义,如果去掉这个头文件,编译会出错。
追问这两个函数我们还没有学过。。。
可以换成别的比较简单的吗
因为数组的大小是根据输入数据定的,所以使用动态内存分配比较方便,而且这么多函数也不可能每个都在课堂上学吧。你可以百度一下这两个函数的作用,很容易懂的。
本回答被提问者和网友采纳