louiset 2015-09-07 11:21 采纳率: 57.1%
浏览 1640

请问一下这个c程序哪里错了??谢谢!!

题目:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面的m个数,写出一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。(如:输入1 2 3 4 5 ,n=5,m=2,输出4 5 1 2 3)

#include
int main()
{void move(int ,int,int);
int n,m,number[20],i;
printf("how many number?");
scanf("%d",&n);
printf("enter %d number:",n);
for(i=0;i<=n-1;i++)
scanf("%d",&number[i]);
printf("how many number u wanto move? ");
scanf("%d",&m);
move(number,n,m);
for(i=0;i<=n-1;i++)
printf("%d\t",number[i]);
return 0;
}
void move(int *p,int n,int m)
{int a[20],i,t;
for(i=0;i<=m-1;i++)
a[i]=
(p+n-m+i);
for(t=1;t<=m;t++)
{for(i=n-m-1;i>=0;i--)
(p+i+1)=(p+i);}
for(i=0;i<=m-1;i++)
*(p+i)=a[i];
}

(可以运行,如果输入1 2 3 4 5,m=2,输出的是 4 5 1 2 5)帮忙看一下哪里有问题。。谢谢!!

  • 写回答

5条回答 默认 最新

  • threenewbee 2015-09-07 11:33
    关注
    
    #include <stdio.h>
    int main()
    {
        void move(int *, int, int);
        int n, m, number[20], i;
        printf("how many number?");
        scanf_s("%d", &n);
        printf("enter %d number:", n);
        for (i = 0; i <= n - 1; i++)
            scanf_s("%d", &number[i]);
        printf("how many number u wanto move? ");
        scanf_s("%d", &m);
        move(number, n, m);
        for (i = 0; i <= n - 1; i++)
            printf("%d\t", number[i]);
        return 0;
    }
    void move(int *p, int n, int m)
    {
        for (int i = 0; i < m; i++)
        {
            int t = *(p + n - 1);
            for (int j = n - 2; j >= 0; j--)
            {
                p[j + 1] = p[j];
            }
            p[0] = t;
        }
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条