- 主题:有没有什么简洁办法将数组的前m个元素往后移n位?
前提是不使用临时数组暂存:
下面是通过指针整体移位:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // ptr指向数组的第一个元素
int j;
for(j=0;j<5;j++)
{
printf("%4d",ptr[j]);
}
printf("\n");
ptr = ptr - 1;
for(j=0;j<5;j++)
{
printf("%4d",ptr[j]);
}
}
输出结果是:
1 2 3 4 5
0 1 2 3 4
我希望把前3个数往后移一位,而最后的5不变:请问有啥好的办法?多谢
0 1 2 3 5
--
FROM 111.193.229.*
你这程序没移动元素
【 在 sqsl 的大作中提到: 】
: 前提是不使用临时数组暂存:
: 下面是通过指针整体移位:
:
: ...................
--
FROM 223.104.41.*
整体平移了一位啊
【 在 slowaction 的大作中提到: 】
: 你这程序没移动元素
--
FROM 111.193.229.*
这程序你写的?
哪行是移动元素?
【 在 sqsl 的大作中提到: 】
: 整体平移了一位啊
:
--
FROM 223.104.41.*
csdn搜到的
0 1 2 3 4这一行啊
【 在 slowaction 的大作中提到: 】
: 这程序你写的?
: 哪行是移动元素?
--
FROM 111.193.229.*
如果这个程序你认为移动了元素
那基本你要从第一章开始从学c语言了
【 在 sqsl 的大作中提到: 】
: csdn搜到的
: 0 1 2 3 4这一行啊
:
--
修改:slowaction FROM 223.104.41.*
FROM 223.104.41.*
1. 你能把你的 code 好好缩进一下吗?
2. ptr 是一个指针。你把指针挪了一个位置。
一个比方是 对于f(x),你搞了 x'=x-1
【 在 sqsl 的大作中提到: 】
: 前提是不使用临时数组暂存:
: 下面是通过指针整体移位:
:
: ...................
--
FROM 167.220.233.*
嗯呐,指针挪了一个位置,数组arr其实没变,但是我也不是太需要,我就是需要一个简
洁操作得到打印结果。似乎是没有捷径的,只有用for循环
【 在 mango7788 的大作中提到: 】
: 1. 你能把你的 code 好好缩进一下吗?
: 2. ptr 是一个指针。你把指针挪了一个位置。
: 一个比方是 对于f(x),你搞了 x'=x-1
: ...................
--
FROM 111.193.229.*
请原谅我笑了
【 在 slowaction 的大作中提到: 】
: 如果这个程序你认为移动了元素
: 那基本你要从第一章开始从学c语言了
:
: ...................
--
FROM 223.104.39.*
在适当的位置再加一句arr[4]=5;
【 在 sqsl 的大作中提到: 】
:
: 前提是不使用临时数组暂存:
:
: 下面是通过指针整体移位:
:
--
FROM 39.144.57.*