ytu 1061: 从三个数中找出最大的数(水题,模板函数练习 + 宏定义练习)

1061: 从三个数中找出最大的数

Time Limit: 1
Sec  Memory Limit: 128 MB
Submit: 154  Solved: 124
[Submit][Status][Web
Board
]

Description

定义一个带参的宏(或者模板函数),从三个数中找出最大的数。

Input

3个短整型数,空格隔开

3个实数,空格隔开

3个长整数,空格隔开

Output

最大的数,对于实数保留2位小数。

Sample Input

1 2 3

1.5 4.7 3.2

1234567 12345
12345678

Sample Output

3

4.70

12345678

HINT

主函数已给定如下,提交时不需要包含,会自动添加到程序尾部

/* C++代码 */

int main()

{

short int i1,i2,i3,maxi;

double d1,d2,d3,maxd;

long l1,l2,l3,maxl;

cout<<setiosflags(ios::fixed);

cout<<setprecision(2);

cin>>i1>>i2>>i3;

maxi=MAX(i1,i2,i3);

cout<<maxi<<endl;

cin>>d1>>d2>>d3;

maxd=MAX(d1,d2,d3);

cout<<maxd<<endl;

cin>>l1>>l2>>l3;

maxl=MAX(l1,l2,l3);

cout<<maxl<<endl;

return 0;

}

Source

freeproblemset
edit by lyh


  水题,模板函数练习
+ 宏定义练习

  长时间不用,模板函数和宏定义都生疏了,回头重新巩固下。

  代码:


 1 #include <iostream>
2 #include <iomanip>
3 using namespace std;
4
5 //宏定义
6 //#define MAX(a,b,c) a>b?a>c?a:c:b>c?b:c;
7
8 //模板函数
9 template <class T>
10 T MAX(T a,T b,T c)
11 {
12 if(a>b && a>c)
13 return a;
14 else if(b>a && b>c)
15 return b;
16 else if(c>a && c>b)
17 return c;
18 else
19 return 0;
20 }
21
22 int main()
23 {
24 short int i1,i2,i3,maxi;
25 double d1,d2,d3,maxd;
26 long l1,l2,l3,maxl;
27 cout<<setiosflags(ios::fixed);
28 cout<<setprecision(2);
29 cin>>i1>>i2>>i3;
30 maxi=MAX(i1,i2,i3);
31 cout<<maxi<<endl;
32 cin>>d1>>d2>>d3;
33 maxd=MAX(d1,d2,d3);
34 cout<<maxd<<endl;
35 cin>>l1>>l2>>l3;
36 maxl=MAX(l1,l2,l3);
37 cout<<maxl<<endl;
38 return 0;
39 }

Freecode : www.cnblogs.com/yym2013

时间: 2024-10-08 10:27:45

ytu 1061: 从三个数中找出最大的数(水题,模板函数练习 + 宏定义练习)的相关文章

【海量数据处理】N个数中找出最大的前K个数

N个数中找出最大的前K个数,需要用小堆实现. 分析:由于小堆的堆顶存放堆中最小的数据,可以通过与堆顶数据进行比较,将大数据存放在堆中,注意在每次改变堆顶数据后,进行调堆,使堆顶一直存放整个堆中最小元素. void AdjustDown(int *a, size_t root, size_t size)//下调 {//小堆 size_t parent = root; size_t child = parent * 2 + 1; while (child < size) { if (child + 

三个数中找最大

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 三个数中找最大 { class Program { static void Main(string[] args) { Console.WriteLine("三个数中找最大"); int A = int.Parse(Console.ReadLine()); //Console.ReadLine()

面试题-10亿个数中找出最大的10000个数(top K问题)

一个较好的方法:先拿出10000个建立小根堆,对于剩下的元素,如果大于堆顶元素的值,删除堆顶元素,再进行插入操作,否则直接跳过,这样知道所有元素遍历完,堆中的10000个就是最大的10000个.时间复杂度: m + (n-1)logm = O(nlogm) 优化的方法:可以把所有10亿个数据分组存放,比如分别放在1000个文件中(如果是字符串hash(x)%M).对每个文件,建立大小为10000的小根堆,然后按有序数组的合并合并起来,取出最大的10000个即是答案. top K问题 在大规模数据

(c语法百题25)从 n 个数中挑选出最大的数

知识点: 数组灵活运用 for循环灵活运用 简单的算法 内容: 从 n 个数中挑选出最大的数 输入说明: 两行 第一行一个数n,表示总的个数 第二行共n个数字,用空格隔开. 输出说明: 一行,最大数 输入样例: 4 1 2 3 4 输出样例 : 4 #include <stdio.h>#define MAX 200; int main() { int a[MAX],n,i,t; scanf("%d",&n); for (i=0;i<n;i++) { scanf

(语法百题26)从 n 个数中挑选出最大的数(改)

知识点: 理解程序的编写顺序,灵活运用scanf() int a[1000],i,m=1;  char b[1000];  for (i=0;i<1000;i++)  {   scanf("%d",&a[i]);   scanf("%c",&b[i]); 按空格键结束的ASCLL码是010,本来回车键的ASCLL码是13的,但在程序中按回车键是换行,所以用了换行的ASCLL码来控制程序结束. if (b[i]!=10) 提示:用整型数组运算,字

100万个数中找出最大的前K个数

拿到这个题目我想到了很多方法,但是在我想到的方法中,要把在100万个数中找到前k个数,都不适用.最后通过我的不断研究,我想到了我认为最简单的方法,就是利用堆来做这道题目. 下面我分析一下我用堆排序的思路: 1.我先建一个大小为k的堆. 2.把100万中前k个数放到这个堆中. 3.把这个堆调成小堆. 4.把100万个从k到100万之间的数字拿出来和堆的根结点作比较. 5.如果根结点小于这之间的某一个数,就把这个数拿给根结点,然后继续调成小堆.否则继续找 6.直到找完这100万个数,堆中放的就是最大

poj2578---三个数中找出第一个大于168的

#include <stdio.h> #include <stdlib.h> int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a <= 168) { printf("CRASH %d\n",a); return 0; } if(b <= 168) { printf("CRASH %d\n",b); return 0; } if

C++100w个数中找出最大的前K个数

#include <iostream> using namespace std; #include <assert.h> const int N = 10000; const int K = 100; void AdjustDown(int topK[], int size, size_t parent) { assert(topK); int child = parent*2 + 1; while (child < size) { if (child+1 < size

1:TwoSum(如果两个和为某个数,找出这俩数的位置)

package leetcode; import java.util.HashMap; import java.util.Map; /** * @author mercy *Example: *Given nums = [2, 7, 11, 15], target = 9, *Because nums[0] + nums[1] = 2 + 7 = 9, *return [0, 1]. */ public class TwoSum { public static void main(String[