在c语言中用指针方法将n个整数按升序排列
时间: 2023-05-12 10:04:21 浏览: 175
可以使用冒泡排序、选择排序、插入排序等算法来实现。以下是使用冒泡排序的示例代码:
void sort(int *arr, int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (*(arr + j) > *(arr + j + 1)) {
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
}
}
其中,arr 是指向整数数组的指针,n 是数组的长度。使用 *(arr + i) 来访问数组中的元素。
相关问题
详细介绍一下C语言中用指针的运算
指针是一个存储变量内存地址的变量。在C语言中,指针运算包括以下几种类型:
1. 指针加法:指针可以加上一个整数值,这个整数值会被乘以指针指向类型的大小,然后加到指针的地址上。例如:`ptr + n`,其中`ptr`是一个指向类型为`int`的指针,`n`是一个整数值。
2. 指针减法:指针也可以减去一个整数值,这个整数值也会被乘以指针指向类型的大小,然后从指针的地址中减去。例如:`ptr - n`。
3. 指针比较:指针可以进行比较操作,包括等于、不等于、大于、小于、大于等于、小于等于等。指针之间的比较操作的结果是通常是一个整数值。
4. 指针赋值:指针还可以进行赋值操作,例如:`int *ptr1, *ptr2; ptr1 = ptr2;`。
需要注意的是,指针运算的结果可能会超出指针指向的内存区域,这会导致程序出现异常行为,如崩溃或数据损坏等。因此,在使用指针时,需要特别注意指针指向的内存区域是否被正确地分配和释放。
C语言中用指针法求有10个整数的数组a中奇数的个数和平均值,以及偶数的个数和平均值
好的,针对你的问题,我可以提供以下代码示例:
```c
#include <stdio.h>
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int odd_count = 0, even_count = 0;
int odd_sum = 0, even_sum = 0;
int *p = a;
for (int i = 0; i < 10; i++, p++) {
if (*p % 2 == 1) { // 判断奇偶性
odd_count++;
odd_sum += *p;
} else {
even_count++;
even_sum += *p;
}
}
double odd_average = (double)odd_sum / odd_count;
double even_average = (double)even_sum / even_count;
printf("奇数个数:%d,奇数平均值:%f\n", odd_count, odd_average);
printf("偶数个数:%d,偶数平均值:%f\n", even_count, even_average);
return 0;
}
```
代码中,我们用指针变量 p 指向数组 a 的首地址,然后通过循环遍历数组中的每个元素,判断其奇偶性,统计奇数个数、偶数个数、奇数和、偶数和。最后根据统计结果计算平均值并输出。