zoukankan      html  css  js  c++  java
  • 输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换。

    输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换。使用3个函数解决问题:
    (1) 输入10个整数的函数
    (2) 进行交换处理的函数
    (3) 输出10个数的函数

    输出格式

    输出结果,一行一个数字
    输入样例
    2 1 3 4 5 6 7 8 9 0
    输出样例
    input done
    swap done
    0
    1
    3
    4
    5
    6
    7
    8
    2
    9
    display done
     1 #include <stdio.h> 
     2 
     3 void input(int a[]) 
     4 { 
     5     _______________________ 
     6 } 
     7 
     8 void swap(int a[]) 
     9 { 
    10     _______________________ 
    11 } 
    12 
    13 void display(int a[]) 
    14 { 
    15     int i; 
    16     for(i=0; i<10; i++) 
    17         printf("%d
    ", a[i]); 
    18 } 
    19 
    20 int main() 
    21 { 
    22     int a[10]; 
    23     input(a); 
    24     printf("input done
    "); 
    25     swap(a); 
    26     printf("swap done
    "); 
    27     display(a); 
    28     printf("display done
    "); 
    29     return 0; 
    30 }

    第一种非指针:
     1 void swap(int a[])
     2 {
     3    int i=0,max=0,min=0;
     4    int temp=0,temp1=0;
     5    for(i=1;i<10;i++)
     6  {
     7    if(a[max]<a[i])    max=i;
     8    if(a[min]>a[i]) min=i;
     9   }
    10   temp=a[9];
    11   a[9]=a[max];
    12   temp1=a[0];
    13   a[0]=a[min];
    14   a[max]=temp;
    15   a[min]=temp1;
    16 }
    
    

       第二种指针:

     1 void swap(int a[])
     2 {
     3      int *f=a;
     4      int i,j=0,k=9,t,r;//用j来记录最小的数的下标,用k来记录最大的数的下
     5     for(i=0;i<10;i++)
     6    {
     7       if(*(f+j)<*(f+i)) continue;//找出数组中最小的数//
     8      j=i;          //这个最小的数的下标用j来记录//
     9     }
    10    for(i=8;i>=0;i--)
    11   {
    12     if(*(f+k)>*(f+i)) continue; //找出数组中最大的数//
    13     k=i;         //这个最大的数的下标用k来记录//
    14    }
    15    t=*(f+j);
    16   *(f+j)=*f;
    17   *f=t;      //将最小的数与第一个数对换//
    18    r=*(f+k);
    19    *(f+k)=*(f+9);
    20   *(f+9)=r;
    21 }
     标准答案:
     1     int temp,mini,maxi;
     2     int i;
     3     mini=0;
     4     for(i=1; i<10; i++)
     5         if(a[mini]>a[i])
     6             mini=i;
     7     temp=a[mini];a[mini]=a[0];a[0]=temp;
     8     maxi=0;
     9     for(i=1; i<10; i++)
    10         if(a[maxi]<a[i])
    11             maxi=i;
    12     temp=a[maxi];a[maxi]=a[9];a[9]=temp;
    
    
    
    
    
     



  • 相关阅读:
    MyBatis常见面试题以及解读
    如何防止sql注入攻击
    宝塔Linux面板基础命令
    Centos7配置静态ip
    宝塔Linux面板安装
    idea中安装阿里巴巴的代码规范插件
    idea中快速将类中的属性转为Json字符串的插件
    创建线程的四种方式
    sleep()方法与wait()方法的区别
    解决线程安全的几种方式
  • 原文地址:https://www.cnblogs.com/lianghaijie-ctw/p/5014986.html
Copyright © 2011-2022 走看看