文件包含练习:对10个整数进行从小到大排序(插入排序方法、冒泡排序、选择排序分别进行设计)。 ⑴在主函数中完成3个函数模块调用(shuru(); paixu(); shucu();); ⑵文件包含模块里包括数据的输入、排序及输出三个自定义函数。
时间: 2024-03-22 07:41:35 浏览: 92
好的,这道题目需要用到文件包含来实现。你可以首先创建一个头文件,例如 "sort.h",在其中定义三个函数:输入函数 shuru()、排序函数 paixu() 和输出函数 shucu(),具体实现如下:
```c
// sort.h
#ifndef SORT_H
#define SORT_H
#define ARRAY_SIZE 10
void shuru(int array[]);
void paixu(int array[]);
void shucu(int array[]);
#endif
```
注意:这里数组的大小需要与排序函数中使用的大小一致,可以通过宏定义来实现。
然后在另外一个源文件中实现这三个函数,例如 "sort.c",具体实现如下:
```c
// sort.c
#include "sort.h"
#include <stdio.h>
void shuru(int array[]) {
printf("请输入10个整数:\n");
int i;
for (i = 0; i < ARRAY_SIZE; i++) {
scanf("%d", &array[i]);
}
}
void paixu(int array[]) {
// 插入排序
int i, j;
for (i = 1; i < ARRAY_SIZE; i++) {
int key = array[i];
j = i - 1;
while (j >= 0 && array[j] > key) {
array[j+1] = array[j];
j--;
}
array[j+1] = key;
}
// 冒泡排序
/*int i, j;
for (i = 0; i < ARRAY_SIZE-1; i++) {
for (j = 0; j < ARRAY_SIZE-i-1; j++) {
if (array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}*/
// 选择排序
/*int i, j;
for (i = 0; i < ARRAY_SIZE-1; i++) {
int min_index = i;
for (j = i+1; j < ARRAY_SIZE; j++) {
if (array[j] < array[min_index]) {
min_index = j;
}
}
int temp = array[i];
array[i] = array[min_index];
array[min_index] = temp;
}*/
}
void shucu(int array[]) {
printf("排序后的结果为:\n");
int i;
for (i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", array[i]);
}
printf("\n");
}
```
这里实现了三种排序方法,你可以根据需要注释掉其他排序方法,只保留需要的排序方法。
最后在主函数中调用这三个函数即可,例如:
```c
// main.c
#include "sort.h"
int main() {
int array[ARRAY_SIZE];
shuru(array);
paixu(array);
shucu(array);
return 0;
}
```
这里首先定义了一个大小为 10 的数组,然后分别调用输入函数、排序函数和输出函数,最后输出排序后的结果。
注意:在编译时需要将所有的源文件进行编译,例如:
```
gcc -o main main.c sort.c
```
这样就可以将所有的代码编译成可执行文件 main,然后运行即可。
阅读全文