C语言编程:指针应用与选择法排序实现

需积分: 0 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程序至关重要。
2022-10-22 上传