使用指针将整形数组元素逆序输出
时间: 2023-03-19 07:25:37 浏览: 286
可以使用指针将整形数组元素逆序输出。具体做法是定义两个指针,分别指向数组的首尾元素,然后交换它们所指向的元素,并将指针向中间移动,直到指针相遇。代码如下:
```
#include <stdio.h>
void reverse(int arr[], int len) {
int *p1 = arr, *p2 = arr + len - 1;
while (p1 < p2) {
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
p1++;
p2--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(int);
reverse(arr, len);
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:
```
5 4 3 2 1
```
相关问题
用指针将整形数组逆序输出
好的,我明白了,以下是回答:
要将整型数组逆序输出,可以使用指针来实现。具体的实现方法是:先定义两个指针,一个指向数组的起始位置,一个指向数组的末尾位置,然后交换这两个指针所指向的元素,然后让起始位置指针向后移动一个位置,让末尾位置指针向前移动一个位置,再次交换这两个指针所指向的元素,重复这个过程,直到起始位置指针大于或等于末尾位置指针为止。这样就能将整型数组逆序输出。
以下是代码示例:
```
void reverseArray(int* arr, int size) {
int *start = arr, *end = arr + size - 1;
while (start < end) {
int temp = *start;
*start++ = *end;
*end-- = temp;
}
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
}
```
使用该函数时,只需要传入整型数组和数组的大小即可,函数会将数组逆序输出。
定义一个整形数组,将自己学号后10位同学的学号存入数组用for循环实现直接在程序中赋值将其逆序输出用for循环实现,将第5个数跟第9个数交换用数组实现,第六个数与第2数交换用指针实现
首先,我们定义一个整型数组,用于存储学号。由于学号后10位通常是一个固定长度的数字序列,我们可以假设它为一个整数类型。在程序中,我们首先初始化一个数组并使用for循环直接赋值,然后再次使用for循环将数组逆序输出。对于数组元素的交换,我们使用数组索引直接实现第5个数与第9个数的交换,对于第6个数与第2个数的交换,则需要使用指针操作。
以下是用C语言实现的示例代码:
```c
#include <stdio.h>
int main() {
int studentIDs[10]; // 假设数组足够大,可以存储10个学号
int i;
// 使用for循环直接在程序中赋值
for (i = 0; i < 10; ++i) {
studentIDs[i] = 1234567890 + i; // 假设学号后10位是从1234567890开始的连续数字
}
// 将数组逆序输出
printf("逆序输出学号:\n");
for (i = 9; i >= 0; --i) {
printf("%d ", studentIDs[i]);
}
printf("\n");
// 第5个数与第9个数交换
int temp = studentIDs[4];
studentIDs[4] = studentIDs[8];
studentIDs[8] = temp;
// 第6个数与第2个数交换,使用指针实现
int *ptr1 = &studentIDs[5];
int *ptr2 = &studentIDs[1];
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
// 再次逆序输出交换后的数组
printf("交换后的学号逆序输出:\n");
for (i = 9; i >= 0; --i) {
printf("%d ", studentIDs[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,我们首先用for循环初始化了10个整数到数组`studentIDs`中,然后逆序输出了这个数组。接着我们交换了数组中的第5个和第9个元素,以及第6个和第2个元素。注意,交换指针指向的值时,我们定义了一个临时变量`temp`来帮助交换,这是因为在C语言中,没有内置的指针交换操作。
阅读全文