橙啊橙


私信TA

用户名:Jesty

访问量:850

签 名:

等  级
排  名 11503
经  验 971
参赛次数 3
文章发表 5
年  龄 0
在职情况 学生
学  校 饶职
专  业 大前端

  自我简介:

垃圾前端狗

TA的其他文章

bak bin 二进制
浏览:57

解题思路:
    一开始自己想的都是复杂的方法 各种新建一个数组 然后在借助第三方变量保存 就挺麻烦 然后这次还学到了动态分配数组长度(百度)

    其实双指针写法挺简单的一个变量控制头 一个变量控制尾 以后有类似这样的题目都可以使用这种方式来解题确实不错 自己记录一下这里
注意事项:

参考代码:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
void scf(int a[], int n)
{
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
}
 
void printArr(int a[], int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
}
int main()
{
    int *arr = NULL;
    int n, m;
    scanf("%d", &n);
    // 动态设定数组长度
    arr = (int *)malloc(n * sizeof(int));
    scf(arr, n);
    scanf("%d", &m);

    // 头指针 尾指针
    int head = 0, tail = n - m;
    while (head != n - 1)
    {
            // printf("head = %d tail = %d \n", head, tail);
            int temp = arr[head];
            arr[head] = arr[tail];
            arr[tail] = temp;
            
            //指针后移
            ++head;
            ++tail;
            if (tail == n)
            tail = n - m;
    }

    printArr(arr, n);

    return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区