//首先你在函数里面并没有对你传进去的p 进行操作所以你主函数里面的p并没改变
//第二你的函数有问题,思路有点乱从第二个for开始
//我改了一下你的函数,这样子比较容易理解,之后你可以想想类似于上面那个人的想法
void move(int *p,int n)
{
int b[10],i,j,m,k,t;
for (i=0; i<10; i++)
b[i]=*(p+i);
//n是m得形参,各整数向后移n个位置
// for (m=0; m// {
// //交换n个整数值,循环n次
// for (j=10+n,k=n; j>=n; j--,k++)
// {
// //各整数后移n位置,整数的开始地址为10+n
// t=b[j];
// b[j]=b[k];
// b[k]=t;//交换前n个数和最后n个数的值
// }
// }
j=10-n;
for(i=0;i{
*(p+i)=b[j];
j++;
}
for(j=0;i<10;i++,j++)
*(p+i)=b[j];
}
#include
void move(int * p, int n) {
n = ( ( n % 10 ) + 10 ) % 10;
int b[10];
for (int i = 0; i < 10; i++)
b[(i + n)%10] = * (p + i);
for (int i = 0; i < 10; ++i)
*(p + i) = b [i];
}
main() {
int a[10], i, m;
int * p;
p = a; //a首地址赋给p
printf("随机输入随机个整数:\n");
for (i = 0; i < 10; i++, p++)
scanf("%d", p);
p = a; //输入数据后p已改变,重新将a首地址赋给p
printf("\n输入各整数后移位置个数:\n");
scanf("%d", & m);
move(p, m);
printf("\n输出调整后的各整数:\n");
for (i = 0; i < 10; i++)
printf("%5d", * (p + i));
}
你要实现什么?