7-4 用函数指针实现数组排

实验7 函数 一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

6.输入10个整数进行排序并输出,其中用函数指针编写一个通用的排序函数,如果输入1,程序实现数据按升序排序;如果输入2,程序实现数据按降序。

(1)编程提示

定义ascend函数,决定按升序排序;定义descend函数,决定按降序排序;定义sort函数,实现排序的算法,根据实参,确定指向函数的指针变量调用ascend函数还是descend函数。

输入样例:

输入数据,之间用空格分隔 输入样例1:

2 3 4 9 10 8 7 6 5 1
1

结尾无空行

输出样例:

输出格式数据格式如下,用一个空格分隔;最后一个数字后没有空格。

输出样例1:

1 2 3 4 5 6 7 8 9 10

结尾无空行

输入样例2:

2 3 4 9 10 8 7 6 5 1
2

结尾无空行

输出样例2

10 9 8 7 6 5 4 3 2 1

结尾无空行

代码:

#include<stdio.h>
 void input(int a[],int n)
 {
     int i;
     for(i=0;i<n;i++)
         scanf("%d",&a[i]);
 }
   void ascend(int a[],int n)
   {
       int i,j,t;
       for(i=0;i<n-1;i++)
       {
           for(j=0;j<n-1-i;j++)
           {
               if(a[j+1]<a[j])
               {
                   t=a[j+1];
                   a[j+1]=a[j];
                   a[j]=t;
               }
           }
       }
   }
   void descend(int a[],int n)
   {
        int i,j,t;
       for(i=0;i<n-1;i++)
       {
           for(j=0;j<n-1-i;j++)
           {
               if(a[j+1]>a[j])
               {
                   t=a[j+1];
                   a[j+1]=a[j];
                   a[j]=t;
               }
           }
       }
   }
   void output(int a[],int n)
   {
          int i;
          printf("%d",a[0]);
         for(i=1;i<n;i++)
             printf(" %d",a[i]);
       printf("\n");
   }
      int main()
      {
            int *p,a[10],k;
            p=a;
            input(p,10);
            scanf("%d",&k);
            if(k==1)
                ascend(p,10);
            else
                descend(p,10);
            output(p,10);
          return 0;
      }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰12800

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值