C语言求第四题我写的代码问题在哪?

2025-03-23 12:08:59
推荐回答(3个)
回答1:

//首先你在函数里面并没有对你传进去的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];
}

回答2:

#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));
}

回答3:

你要实现什么?