sqmw


私信TA

用户名:20206805

访问量:16204

签 名:

在否定中提升自己

等  级
排  名 330
经  验 5298
参赛次数 0
文章发表 91
年  龄 19
在职情况 学生
学  校 东大
专  业 软件工程

  自我简介:

代码是大一上学期写的,格式等都不规范,请多包涵。编写的代码,有些是为了练习库函数的使用,所以看着可能比较怪或者难以理解。

TA的其他文章

解题思路:可以用数组,特别注意指针的运用

注意事项:不要在指针层面对赋值

参考代码:

1】:

#include <stdio.h>

#include <malloc.h>


void change(int* array,int m, int len);


int main()

{

int n = 0, m = 0 ,i = 0;

scanf("%d", &n);

int *a = (int*)malloc(n * sizeof(int));

do

{

scanf("%d", &a[i]);

i++;

} while (i < n);

scanf("%d", &m);

change(a,m,n);

for ( i = 0; i < n; i++)

{

printf("%d ", a[i]);

}

}

void change(int* array,int m,int len)

{

int i = 0;

int* b = (int*)malloc(len * sizeof(int));

for (i = 0; i < len; b[i] = array[i], i++);

i = 0;

while(i<len-m)

{

array[i + m] = b[i];

i++;

}

for (i = 0; i < m; array[i] = b[len - m + i], i++);

}

2】:

#include

void change(int a[101],int n,int m);


int main()

{

    int a[101],n = 0,m = 0,i = 1;

    scanf("%d", &n);

    for (; i <= n; i++)

    {

        scanf("%d", &a[i]);

    }

    scanf("%d", &m);

    change(a,n,m); 

    i = 1;

    do

    {

        printf("%d", a[i]);

        i++;

    } while (i < n + 1);

}

void change(int a[101],int n,int m)

{

    int b[101], i = 1;

    while (i<=n-m)

    {

        b[i + m] = a[i];

        i++;

    }

    for (i = 1; i <= m; i++)

    {

        b[i] = a[n-m+i];          

    }

    i = 1;

{

    while (i < n + 1) //之前一直错误,并没有这三句话,而是只有(a = b);

    {

        a[i] = b[i];      //在查看数值变化时发现数组传参时进入自定义函数后a的地址并没有变化

        i++;               //但在将b赋a给时发现a的在自定义函数地址变过了(因此,应在元素层面操作)

    }                         //事实上在进行a = b时只是简单地将a(此时应看作一个指针变量)被b的地址赋值???

}                             //而a的地址又是存在的,即之前a的地址在main函数中还是没变(一般而言,地址是很底层的,是不变的)

}

 

0.0分

0 人评分

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

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区