• 1120 最值交换


    题目来源:
    https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1120
    Description
    有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。
    int MinIndex(int a[], int n);  //函数返回数组a中最小元素的下标
    int MaxIndex(int a[], int n);  //函数返回数组a中最大元素的下标
    数组元素的输出调用函数PrintArr()。
    Input
    输入包括两行。
    第一行为正整数n(1≤n≤10)。
    第二行为n个正整数组成的序列,保证没有重复元素。
    Output
    输出转换好的序列。数据之间用空格隔开。
    Sample Input
    5
    5 4 1 2 3

    Sample Output
    1 4 3 2 5
    题意描述:
    输入数组元素的个数n及n个元素
    交换最大值和尾元素的位置,交换最小值和首元素的位置后输出新数组
    解题思路:
    调用MinIndex()函数返回最小值的下标,再调用MaxIndex()函数返回最大值的下标,交换即可
    程序代码:

     1 #include<stdio.h>
     2 int MaxIndex(int a[],int n);
     3 int MinIndex(int a[],int n); 
     4 void PrintArr(int a[],int n);
     5 int main()
     6 {
     7     int n,i,a[20],t,p,q;
     8     while(scanf("%d",&n) != EOF)
     9     {
    10         for(i=0;i<n;i++)
    11             scanf("%d",&a[i]);
    12         q=MinIndex(a,n);
    13         t=a[0];
    14         a[0]=a[q];
    15         a[q]=t;
    16         
    17         p=MaxIndex(a,n);
    18         t=a[n-1];
    19         a[n-1]=a[p];
    20         a[p]=t;
    21 
    22         PrintArr(a,n);
    23         printf("
    ");
    24     }
    25     return 0;
    26  } 
    27 int MaxIndex(int a[],int n)
    28 {
    29     int i,max=0,k=0;
    30     for(i=0;i<n;i++)
    31     {
    32         if(a[i]>max)
    33         {
    34             max=a[i];
    35             k=i;
    36         }
    37     }
    38     return k;
    39 }
    40 int MinIndex(int a[],int n)
    41 {
    42     int i,min=99999999,k=0;
    43     for(i=0;i<n;i++)
    44     {
    45         if(a[i]<min)
    46         {
    47             min=a[i];
    48             k=i;
    49         }
    50     }
    51     return k;
    52 }
    53 void PrintArr(int a[],int n)
    54 {
    55     int i;
    56     for(i=0;i<n;i++)
    57     {
    58         if(i==0)
    59         printf("%d",a[i]);
    60         else
    61         printf(" %d",a[i]);
    62     }
    63 }

    易错分析:
    注意数组下标使用

  • 相关阅读:
    详解TCP三次握手
    Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
    Linux(Ubuntu)使用日记------markdown文件与pdf,doc,docx文件的相互转化(pandoc使用)
    白板编程浅谈——Why, What, How
    深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
    我的算法学习之路
    redux的hook使用
    redux基础(添加中间件与异步)
    typescript书写规范
    用js手撕七种排序算法!!内附运行速度测试函数
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/6777709.html
Copyright © 2020-2023  润新知