c语言编写冒泡程序对输入的15个无序整数排序。要求,编写3个子函数;1个为数组输入数据,1个为排序,一个为输出数组数据(输出结果5个一行显示)。主函数调用子函数来完成冒泡排序。
时间: 2023-08-31 20:23:32 浏览: 97
### 回答1:
好的,我会回答您的问题。下面是针对您的问题的代码:
```
#include <stdio.h>
#define MAX_NUM 15
// 定义三个子函数:输入、排序、输出
void input(int arr[])
{
printf("请输入%d个无序整数:\n", MAX_NUM);
for(int i = 0; i < MAX_NUM; i++)
{
scanf("%d", &arr[i]);
}
}
void sort(int arr[])
{
int temp;
for(int i = 0; i < MAX_NUM-1; i++)
{
for(int j = 0; j < MAX_NUM-i-1; j++)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void output(int arr[])
{
printf("排序后的结果为:\n");
for(int i = 0; i < MAX_NUM; i++)
{
printf("%d ", arr[i]);
if((i+1) % 5 == 0) printf("\n"); // 每输出5个数换行
}
}
int main()
{
int arr[MAX_NUM];
input(arr); // 调用输入函数
sort(arr); // 调用排序函数
output(arr); // 调用输出函数
return 0;
}
```
希望能对您有所帮助。
### 回答2:
根据题目要求,我编写了以下三个子函数和主函数来完成冒泡排序的要求:
1. 数组输入函数 `input_array`:
```c
void input_array(int arr[], int n) {
printf("请输入15个无序整数:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
}
```
2. 排序函数 `bubble_sort`:
```c
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
3. 数组输出函数 `output_array`:
```c
void output_array(int arr[], int n) {
printf("排序后的数组为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
if ((i + 1) % 5 == 0) {
printf("\n");
}
}
}
```
最后,在主函数中调用这三个子函数来完成冒泡排序:
```c
int main() {
int arr[15];
int n = sizeof(arr) / sizeof(arr[0]);
input_array(arr, n);
bubble_sort(arr, n);
output_array(arr, n);
return 0;
}
```
以上代码实现了对输入的15个无序整数进行冒泡排序,并按照每行显示5个结果进行输出。
### 回答3:
首先,我们可以定义一个全局变量NUM来表示输入的整数数量,这里是15。
然后,我们编写第一个子函数inputArray(),用于接收用户输入的15个无序整数,并存储到一个名为array的数组中。
接下来,我们编写第二个子函数bubbleSort(),用于对array数组进行冒泡排序。冒泡排序的基本思想是从数组的第一个元素开始,与其后相邻的元素进行比较,若发现逆序则交换位置,这样经过一轮的比较和交换,可以将最大的元素“冒泡”到数组的末尾。重复这个过程,直到所有元素排序完毕。
最后,我们编写第三个子函数outputArray(),用于输出排序后的整数数组。根据题目要求,我们每行输出5个数。因此,我们可以使用一个循环,遍历数组并按照要求输出。
在主函数中,我们先调用inputArray()函数输入15个整数到数组中,然后调用bubbleSort()函数对数组进行排序,最后调用outputArray()函数输出排序后的数组。
以下是完整的代码示例:
#include <stdio.h>
#define NUM 15
void inputArray(int array[]) {
printf("请输入15个无序整数:\n");
for (int i = 0; i < NUM; i++) {
scanf("%d", &array[i]);
}
}
void bubbleSort(int array[]) {
for (int i = 0; i < NUM - 1; i++) {
for (int j = 0; j < NUM - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
void outputArray(int array[]) {
printf("排序后的数组为:\n");
for (int i = 0; i < NUM; i++) {
printf("%d ", array[i]);
if ((i + 1) % 5 == 0) {
printf("\n");
}
}
}
int main() {
int array[NUM];
inputArray(array);
bubbleSort(array);
outputArray(array);
return 0;
}
通过运行上述代码,用户可以输入15个无序整数,程序将对其进行冒泡排序,并按照每行5个数的格式输出排序好的结果。
阅读全文