C语言编程:指针应用与选择法排序实现
需积分: 0 159 浏览量
更新于2024-08-04
收藏 5KB MD 举报
"六、指针.md"
在C语言中,指针是一种强大的工具,它允许我们存储变量的内存地址,并且可以直接操作存储在该地址处的值。在本题解中,有两个实验涉及到了指针的使用,分别是利用指针实现拆分实数和使用函数进行选择法排序。
### 实验07-1:利用指针实现拆分实数
这个实验要求我们创建一个名为`splitFloat`的函数,该函数接受一个浮点数`x`,以及两个指针,一个是指向整数部分`intpart`,另一个是指向小数部分`fracpart`。核心思想是通过指针来改变函数外部变量的值。
在提供的代码中,`splitFloat`函数首先将整数部分设为`x`的绝对值(`abs(x)`),并将小数部分设为`x`减去其整数部分。这里需要注意,由于浮点数的精度问题,小数部分可能会有额外的零,因此在输出时需要确保正确显示。
```c
void splitFloat(float x, int* intpart, float* fracpart) {
*intpart = abs(x);
*fracpart = x - abs(x);
}
```
在主函数中,我们读取用户输入的浮点数,然后调用`splitFloat`函数,通过传递指向整数和小数部分的指针,函数会修改这两个指针所指的内存区域的值。最后,我们分别打印出整数和小数部分。
```c
int main() {
float x, fp;
int ip;
scanf("%f", &x);
splitFloat(x, &ip, &fp);
printf("The int part is %d\n", ip);
printf("The frac part is %.6f\n", fp);
}
```
### 实验07-2:使用函数进行选择法排序
在这个实验中,我们需要定义一个名为`sort`的函数,该函数接受一个整数数组`a`和它的大小`n`,并按照升序对其进行选择法排序。在主函数中,我们首先读取数组的大小`n`,然后读取`n`个整数,将它们存入数组,调用`sort`函数进行排序,最后输出排序后的数组。
```c
void sort(int a[], int n) {
int t;
for (int i = 0; i < n; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (a[j] < a[min_idx]) {
min_idx = j;
}
}
t = a[i];
a[i] = a[min_idx];
a[min_idx] = t;
}
}
```
在`sort`函数中,我们使用了选择法的基本思路:遍历数组,每次找到当前未排序部分的最小元素,然后与第一个未排序的元素交换位置。这个过程重复`n`次,直到整个数组排序完成。
在主函数中,我们使用`for`循环读取用户输入的整数,并将它们存储到数组`a`中,调用`sort`函数后,再遍历数组`a`并打印出排序后的结果。
```c
int main() {
int a[10], n, i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
sort(a, n);
for (int i = 0; i < n; i++) {
printf("%d", a[i]);
}
return 0;
}
```
这两个实验都展示了指针在C语言中的应用,如何通过指针传递和修改函数外部的变量值,以及如何编写和使用函数来处理数据结构,如数组。指针是C语言的关键特性,熟练掌握指针的使用对于理解和编写高效的C程序至关重要。
2021-06-30 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-12-23 上传
Edward274
- 粉丝: 0
- 资源: 1