标题:找大小

题目描述

首先输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数。
随后输出这一组数的最小值,和最大值。

提示

输入的这n数,可以有小数也可以有负数。
输出之间用换行隔开。

输入要求

5

1 5 3 54 22

输出要求

1

54

参考程序:

#include<stdio.h>
int main()
{
   int n,i;
   scanf("%d",&n);
   if(n==1)
   {
   printf("0\n");
   }
   else if(n>=2)
 {
   double a[n];//在有序数组中存储n个double型的数据。 
   for(i=0;i<n;i++)
   {
   scanf("%lf",&a[i]); //给数组中i位置上的数据取一个地址。 
   }
   double max=a[0];
   double min=a[0];//定数组的第一个数据为最大值与最小值,用于后面数据循环输入的比较。 
   for(i=0;i<n;i++)
  {
   if(a[i]>=max)
   {
    max=a[i];
   }
   if(a[i]<=min)
   {
   min=a[i];
   }
  }
   printf("%g\n%g",min,max);//%g是C语言表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式。
 }
    return 0;
}

解题思路:本题通过递归算法计算数组的最大最小元素,及基于a[ ],找出递归关系,定义函数。

首先输入头文件与主函数,再定义变量的类型,根据题目描述所说,要输入一个整数n表示个数,需要运用数组的方法来进行运算,因此定义一个储存了n个double型的数据的数组,且给到其地址,以用于输入。

紧接着输入n个数,从中寻找max与min,因此需要提前定义二者的值,因此将二者的初始值定为数组的i=0位置上的值,以用于和后续输入值作比较。

如果后续输入值大于max,则将该值赋值给max,同理min大于后续输入值,则将该值赋给min。
因为数组中的数据有n个,需要通过循环语句中的if语句反复比较,因此最后通过for循环中的if语句,最终找出数组中的max与min。

最后因为题目答案输入检测中出现的数据不局限于正整数,还有负数,一位小数等,因此用%g这种实数格式最后输出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值