
题目描述:
首先输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数。
随后输出这一组数的最小值,和最大值。
提示:
输入的这n数,可以有小数也可以有负数。
输出之间用换行隔开。
输入要求
5
1 5 3 54 22
输出要求
1
54
参考程序:
#includeint main() { int n,i; scanf("%d",&n); if(n==1) { printf("0n"); } else if(n>=2) { double a[n];//在有序数组中存储n个double型的数据。 for(i=0;i =max) { max=a[i]; } if(a[i]<=min) { min=a[i]; } } printf("%gn%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条)