5.题目如下:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前m个数 。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个整数。
我的代码如下。定义指针怎么也定义不对,另外报错中显示“p cannot be used as a function”
#include <stdio.h>
int main()
{void lstz(int *p,int m,int n);
int n,m,i=0;
printf("请输入n和m:");
scanf("%d%d",&n,&m);
int a[n];
printf("请输入这n个整数:");
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
}
int *d=&a;
lstz(d,m,n);
printf("得到的n个整数是:");
for(i=0;i<n;i++)
{printf("%d ",*d);
}
}
void lstz(int *p,int m,int n)
{int i=0,j;
for(j=0;j<m;j++)
{p(j)=p(i++);
}
for(j=m+1;j<n;j++)
{p(j)=p(i++);
}
}
p(j)=p(i++)
这里数组下标是方括号
p[j]=p[i++]
别的类似
#include <stdio.h>
void lstz(int *p,int m,int n);
int main()
{
int n,m,i=0;
printf("请输入n和m:");
scanf("%d%d",&n,&m);
int a[n];
printf("请输入这n个整数:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
lstz(a,m,n);
printf("得到的n个整数是:");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void lstz(int *p,int m,int n)
{
int temp[m];
for(int i = 0; i < m; i++){
temp[i] = p[n - m + i];
}
for(int i = n - m - 1; i >= 0; i--){
p[i + m] = p[i];
}
for(int i = 0; i < m; i++){
p[i] = temp[i];
}
}