调用函数实现数组的输入排序插入与输出

输入一串数字,输出排序插入后输出最后的数字序列;

把主要步骤交给主函数,通过调用函数来实现整体的功能:

写出主函数(这里使用冒泡排序):

int main(){
    int n;
    int a[10];
    cin>>n;
    inputa(a,n);
    ouputa(a,n);
    cout<<endl;
    bubble(a,n);
    cout<<endl;
    inserta(a,n); 
}

定义每个函数:

输入:

void inputa(int aa[],int n){
        int i;
        for(i=0;i<n;i++)
            cin>>aa[i];
    }

输出(核验):推荐使用指针,故写之

void ouputa(int aa[],int n){
        int i;
        for(i=0;i<n;i++)
            cout<<aa[i]<<" ";
        cout << endl;
        for (int *i = aa; i != aa + n; i++)
            cout << *i << " ";
    }

排序:

void bubble(int aa[],int n){
        int i,j,t;    
        for(i=0;i<n-1;i++){
            for(j=0;j<n-1-i;j++){
                if(aa[j]>aa[j+1]){
                    t=aa[j];aa[j]=aa[j+1];aa[j+1]=t;
                }
            }
        }
        for(i=0;i<n;i++)
            cout<<aa[i]<<"  ";
}

插入与最后输出:

void inserta(int aa[],int n){
    int i,x;
    int N=n;
    cin>>x;
    for(i=0;i<n;i++){
        if(x<aa[i]){
            for(n-=1;n>=i;n--){
                aa[n+1]=aa[n];
            }
            break;
        }
    }
    aa[i]=x;  
    for(i=0;i<=N;i++)
        cout<<aa[i]<<"  ";
}

最后,别忘了声明:

using namespace std;
void inputa(int aa[], int n);
void ouputa(int aa[], int n);
void bubble(int aa[], int n);
void inserta(int aa[], int n);

总代码如下:

#include <iostream>
using namespace std;
void inputa(int aa[], int n);
void ouputa(int aa[], int n);
void bubble(int aa[], int n);
void inserta(int aa[], int n);
int main()
{
    int n;
    int a[10];
    cin >> n;
    inputa(a, n);
    ouputa(a, n);
    cout << endl;
    bubble(a, n);
    cout << endl;
    inserta(a, n);
}
void inputa(int aa[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        cin >> aa[i];
}
void ouputa(int aa[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        cout << aa[i] << " ";
    cout << endl;
    for (int *i = aa; i != aa + n; i++)
        cout << *i << " ";
}
void bubble(int aa[], int n)
{
    int i, j, t;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (aa[j] > aa[j + 1])
            {
                t = aa[j];
                aa[j] = aa[j + 1];
                aa[j + 1] = t;
            }
        }
    }
    for (i = 0; i < n; i++)
        cout << aa[i] << "  ";
}
void inserta(int aa[], int n)
{
    int i, x;
    int N = n;
    cin >> x;
    for (i = 0; i < n; i++)
    {
        if (x < aa[i])
        {
            for (n -= 1; n >= i; n--)
            {
                aa[n + 1] = aa[n];
            }
            break;
        }
    }
    aa[i] = x;
    for (i = 0; i <= N; i++)
        cout << aa[i] << "  ";
}

简单的代码实现,主要练习一下我们函数的调用和内容!

  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以通过以下步骤完成数组输入排序输出: 1. 定义一个函数,用于输入数组元素。函数可以使用循环语句和 scanf() 函数来读取用户输入的值,并将其存储到数组中。 2. 定义一个函数,用于对数组进行排序。可以使用冒泡排序、选择排序插入排序等算法来实现排序函数应该接受数组数组长度作为参数,并在函数内部对数组进行排序。 3. 定义一个函数,用于输出数组元素。函数可以使用循环语句和 printf() 函数来遍历数组,并将每个元素输出到屏幕上。 4. 在主函数调用上述三个函数,按照输入排序输出的顺序依次调用。可以先输入数组元素,然后对数组进行排序,最后输出排序后的数组元素。 示例代码如下: ``` #include <stdio.h> // 输入数组元素 void input(int arr[], int n) { printf("请输入 %d 个整数:\n", n); for (int i = ; i < n; i++) { scanf("%d", &arr[i]); } } // 对数组进行排序 void sort(int arr[], int n) { for (int i = ; i < n - 1; i++) { for (int j = ; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } // 输出数组元素 void output(int arr[], int n) { printf("排序后的数组为:\n"); for (int i = ; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[100], n; printf("请输入数组长度:\n"); scanf("%d", &n); input(arr, n); sort(arr, n); output(arr, n); return ; } ``` ### 回答2: 数组是编程语言中常用的一种数据结构,经常需要对数组进行排序,以便更方便地使用数组中的数据。有很多种方法可以实现数组排序操作,而函数调用可以是其中一种比较优雅的方法。下面将详细介绍如何通过函数调用完成数组输入排序输出。 1. 完成数组输入 要想输入数组,我们可以设计一个函数,这个函数会接收一个数字n作为参数,然后根据这个数字从键盘上逐一输入n个数字,最后将这些数字存储到一个数组中。函数实现如下所示: ``` void input_array(int arr[], int n) { for(int i = 0; i < n; i++) { scanf("%d", &arr[i]); } } ``` 该函数输入参数为一个int类型的数组和一个int类型的变量n,表示要输入数组的长度。函数的操作步骤如下:循环n次,每次从键盘上读入一个数字,并将它存储到数组中。读入的数字可以使用scanf函数完成。 2. 完成数组排序 在完成数组输入的基础上,我们可以通过设计一个排序函数,对数组中的元素进行排序。当然,排序的方法可以有很多种,这里我们采用冒泡排序算法。 ``` void bubble_sort(int arr[], int n) { int temp; for(int i = 0; i < n-1; i++) { for(int j = 0; j < n-1-i; j++) { if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } ``` 该函数输入参数为一个int类型的数组和一个int类型的变量n,表示要排序数组长度。函数的操作步骤如下:首先对数组进行n-1次外层循环,每次循环对数组中相邻的两个元素进行比较,若前一个比后一个大,则交换它们的位置,最终,数组中的元素就按照从小到大的顺序排列了。 3. 完成数组输出 到了这一步,我们已经完成数组输入排序了,接下来要对数组进行输出。这个过程也可以通过编写一个单独的函数来完成。 ``` void output_array(int arr[], int n) { for(int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); } ``` 该函数输入参数为一个int类型的数组和一个int类型的变量n,表示要输出数组的长度。函数的操作步骤如下:循环n次,每次输出数组中的一个元素,并在输出完所有元素之后,添加一个换行符,使输出更加美观。 综上所述,我们可以结合上述三个函数,完成通过函数调用完成数组输入排序输出的任务。具体实现方法为: ``` int main() { int n, arr[100]; scanf("%d", &n); input_array(arr, n); bubble_sort(arr, n); output_array(arr, n); return 0; } ``` 其中,我们先从键盘上读入数组的长度n,然后调用input_array函数输入数组,接着调用bubble_sort函数排序数组,最后调用output_array函数输出排好序的数组。以上就是通过函数调用完成数组输入排序输出的完整步骤。 ### 回答3: 数组是一种重要的数据结构,在许多编程语言中都有着广泛的应用。当需要对数组进行排序时,可以通过函数调用实现输入排序输出,下面我将详细介绍这个过程。 1.数组输入 数组输入是通过函数中的参数实现的,我们可以将数组作为函数的参数传递进去。具体的过程如下: (1)定义一个函数,并在函数参数中声明一个数组。 (2)在函数中读入数组元素,常用的方法有键盘输入和随机生成。 (3)返回读入的数组。 具体代码如下: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #define size 10 int *input_array(int arr[]) { srand((unsigned)time(NULL)); // 用系统时间作为随机种子,确保每次生成的随机数都不同 printf("请输入%d个整数,以空格分隔:", size); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } // 生成随机数 for (int i = 0; i < size; i++) { arr[i] = rand() % 100; } return arr; } ``` 2.数组排序函数中完成数组排序的过程可以使用多种方法,如冒泡排序、选择排序插入排序、归并排序等。这里我以冒泡排序为例进行讲解。 冒泡排序排序过程如下: (1)外层循环控制排序的轮数,内层循环控制每一轮的比较和交换操作。 (2)比较相邻的两个元素,如果前面的元素大于后面的元素,则交换它们。 (3)重复上述操作,直到最后一个元素。 具体代码如下: ```c void bubble_sort(int arr[]) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - i - 1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } } ``` 3.数组输出 数组输出可以在函数中进行,也可以在主函数中进行。通常情况下,我们将排序后的数组输出到控制台上。具体内容如下: ```c void print_array(int arr[]) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } ``` 结合以上三个函数,我们可以编写如下的程序: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #define size 10 int *input_array(int arr[]); void bubble_sort(int arr[]); void print_array(int arr[]); int main() { int arr[size]; input_array(arr); printf("排序前:"); print_array(arr); bubble_sort(arr); printf("排序后:"); print_array(arr); return 0; } int *input_array(int arr[]) { srand((unsigned)time(NULL)); printf("请输入%d个整数,以空格分隔:", size); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < size; i++) { arr[i] = rand() % 100; } return arr; } void bubble_sort(int arr[]) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - i - 1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } } void print_array(int arr[]) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } ``` 使用这个程序,即可实现通过函数调用完成数组输入排序输出的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值