zoukankan      html  css  js  c++  java
  • zzuli oj 1120 最值交换

    题目描述 :
    有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。
    输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。
    intMinIndex(int a[], int n);  //函数返回数组a中最小元素的下标
    intMaxIndex(int a[], int n);  //函数返回数组a中最大元素的下标
    数组元素的输出调用函数PrintArr()。
    输入
    输入包括两行。
    第一行为正整数n(1≤n≤10)。
    第二行为n个正整数组成的序列,保证没有重复元素。
    输出
    输出转换好的序列。数据之间用空格隔开。
    解题思路:
    利用打擂台的方法找出最大值,最小值,并标记下标。
    代码实现:

     1 #include<stdio.h>
     2 int MinIndex(int a[], int n) 
     3 {
     4  int i,min=0,t=0;
     5  min=a[0];
     6  for(i=1;i<n;i++)
     7  {
     8   if(min>a[i])
     9   {
    10    min=a[i];
    11    t=i;
    12   }
    13  }
    14  return t;
    15  } 
    16 int MaxIndex(int a[], int n)
    17 {
    18  int i,max=0,t=0;
    19  max=a[0];
    20  for(i=1;i<n;i++)
    21  {
    22   if(max<a[i])
    23   {
    24    max=a[i];
    25    t=i;
    26   }
    27  }
    28  return t;
    29  } 
    30 void PrintArr(int a[],int n)
    31 {
    32  for(int i=0;i<n-1;i++)
    33  printf("%d ",a[i]); 
    34  printf("%d",a[n-1]);
    35 }
    36 int main()
    37 {
    38  int n,i,a[20],min,max,k1,t,k2;
    39  scanf("%d",&n);
    40  for(i=0;i<n;i++)
    41  scanf("%d",&a[i]);
    42  min=MinIndex(a,n);
    43  k1=a[min];a[min]=a[0];a[0]=k1;
    44  max=MaxIndex(a,n);
    45  k2=a[max];a[max]=a[n-1];a[n-1]=k2;
    46  PrintArr(a,n);
    47  return 0;
    48 }


    易错分析:
    1.将题目所需函数写成问题不大,问题主要在于主函数中的运用。
    2.注意函数返回值的带入可以直接赋给另一个变量,方便第二次调用。

  • 相关阅读:
    yum添加网易和搜狐源
    [置顶] 写代码更轻松——动软
    再看Core Data中PSC陷入死锁的问题
    【Android框架进阶〖0〗】ThinkAndroid注解机制
    MetaQ安装部署文档
    Android打开WIFI或者移动网络的代码实现
    设计模式简介
    补全状态码避免再去搜:
    onreadystatechange 事件
    服务器常用的状态码及其对应的含义如下:
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/10392053.html
Copyright © 2011-2022 走看看