一张黑桃K 2023-12-04 21:16 采纳率: 100%
浏览 4
已结题

oj数组函数题,懂得看一下吧

img

img

#include <stdio.h>          //1195
#define MAXN 10
void ArrayShift( int a[], int n, int m );
int main(void)
{
    int a[MAXN], n, m;
    int i;
    scanf("%d %d", &n, &m);
    for ( i = 0; i < n; i++ ) scanf("%d", &a[i]);
    ArrayShift(a, n, m);
    for ( i = 0; i < n; i++ ) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");
    return 0;
}

void ArrayShift( int a[], int n, int m )
{
    int i=0,j;
    m=m%n;
    for(j=n-m;j<n;j++)
    {
        a[i]=a[j];
        i++;
    }
    for(j=0;j<n-m;j++)
    {
        a[i]=a[j];
        i++;
    }
    a[i]='\0';
}








懂得看一下吧,不要在给给其他答案了,我只想知道我那错了,给我个答案没啥用,还是解决不了我的求知欲呀。

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-12-05 10:59
    关注

    原代码里,移动数组元素时相互覆盖了,需增加一个中间变量 tmp 临时过渡,修改如下,供参考:

    #include <stdio.h>          //1195
    #define MAXN 10
    void ArrayShift(int a[], int n, int m);
    int main(void)
    {
        int a[MAXN], n, m;
        int i;
        scanf("%d %d", &n, &m);
        for (i = 0; i < n; i++) scanf("%d", &a[i]);
        ArrayShift(a, n, m);
        for (i = 0; i < n; i++) {
            if (i != 0) printf(" ");
            printf("%d", a[i]);
        }
        printf("\n");
        return 0;
    }
    
    void ArrayShift(int a[], int n, int m)
    {
        int i = 0, j, tmp;  // 修改
        m = m % n;
        for (j = n - m; j <= (2 * n - 1 - m) / 2; j++) // 修改
        {
            tmp = a[j];                 // 修改
            a[j] = a[2 * n - 1 - m -j];
            a[2 * n - 1 - m - j] = tmp;
            //i++;
        }
        for (j = 0; j <= (n - m - 1) / 2; j++)// 修改
        {
            tmp = a[j];               // 修改
            a[j] = a[n - m - 1 - j];
            a[n - m - 1 - j] = tmp;
            //i++;
        }
        //a[i] = '\0';               // 修改 
        for (j = 0; j <= (n - 1) / 2; j++) // 修改
        {
            tmp = a[j];             // 修改
            a[j] = a[n - 1 - j];
            a[n - 1 - j] = tmp;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 12月4日