热情的颓废者 2023-12-01 08:55 采纳率: 63.3%
浏览 110
已结题

C语言问题:循环左移数组元素

已知一个数组 a 存有 n 个整数,要求编写函数把下标从 0 到 p 的数组元素平移到数组的最后。要求:不要使用额外的数组,也不要增加数组元素。
其中已经给出了部分代码,请你编写要求的函数,实现数组元素的循环左移。只提交你写的函数。

部分代码如下:

#include <stdio.h>
 /******函数写在此处******/
int main() 
{
    int n, p;
    scanf("%d %d", &n, &p);
    int a[n], i;
    for(i=0; i<n; i++)
        scanf("%d", &a[i]);
    fun(a, n, p);
    for(i=0; i<n; i++)
        printf("%d ", a[i]);
    return 0;
}

【输入格式】 有两行。第一行是两个正整数 n(n≤100) 和 p(p≤n−1),分别表示数组元素个数和下标 p。第二行是数组中的 n 个整数,其间以空格分隔。
【输出格式】 仅一行。元素平移后数组 a 的各元素,之间由一个空格分隔。
【输入样例】
5 2
2 4 7 1 5
【输出样例】
1 5 2 4 7

  • 写回答

2条回答 默认 最新

  • 一个风轻云淡 优质创作者: 后端开发技术领域 2023-12-01 09:30
    关注
    
    
    #include <stdio.h>
    
    void fun(int a[], int n, int p)
    {
    int i, j, temp;
    for(i=0; i<=p; i++) //循环p次
    {
    temp = a[0]; //将第一个元素保存到临时变量中
    for(j=0; j<n-1; j++) //将数组中的元素向前移动一位
    {
    a[j] = a[j+1];
    }
    a[n-1] = temp; //将临时变量的值赋给最后一个元素
    }
    }
    
    int main()
    {
    int n, p;
    scanf("%d %d", &n, &p);
    int a[n], i;
    for(i=0; i<n; i++)
    scanf("%d", &a[i]);
    fun(a, n, p);
    for(i=0; i<n; i++)
    printf("%d ", a[i]);
    return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 12月1日