C++第7周任务2-四数中的最大

项目2:输入4个整数,输出其中的最大值。
  要求:程序调试成功后,提交漂亮、规范的博文作为报告(参考上一任务的模板自行改造)
  项目2扩展一(选做):输入4个整数,输出其中的最大值和最小值。
  项目2扩展二(选做):输入4个整数,按从大到小的顺序输出这4个整数。
  (抽出时间将扩展题做一下,在了前面的基础上,只要再多往前再走一点,就会多一分内在的享受。越早有这种体会,感觉会越早出现。这几乎是突破编程障碍的最佳捷径了。在尽快突破的过程中,这一小步是否要走,意义非凡。)

【参考解答】
解答一:分别求出两对数大值后,大值间比较出大值

#include <iostream>
using namespace std;
int main( )
{
	int a,b,c,d,max1,max2,max;
	cout<<"请输入四个数值:";
	cin>>a>>b>>c>>d;
	//先求出a和b的大值
	if(a>b)
		max1=a;
	else
		max1=b;

	//再求出c和d的大值
	if(c>d)
		max2=c;
	else
		max2=d;

	//两个大值中的大值为最后的大值
	if(max1>max2)
		max=max1;
	else
		max=max2;
	cout<<"最大值是: "<<max<<"\n";
	return 0;
}

解答二:逐个比较,得到最大值

#include <iostream>
using namespace std;
int main( )
{
	int a,b,c,d,max;
	cout<<"请输入四个数值:";
	cin>>a>>b>>c>>d;
	max=a;   //未进行比较前,暂认为a就是最大的
	if(max<b)  //如果b更大,当然最最大的就应该被赋值为b
		max=b;
	if(max<c)  //同理
		max=c;
	if(max<d)  //亦然
		max=d;
	cout<<"最大值是: "<<max<<"\n";
	return 0;
}

解答三:采用交换的思路

#include <iostream>
using namespace std;
int main( )
{
	int a,b,c,d,t;
	cout<<"请输入四个数值:";
	cin>>a>>b>>c>>d;
	//经过下面的比较和可能进行的交换,a将不比b小
	if(a<b)
	{
		t=a;
		a=b;
		b=t;
	}
	//经过下面的比较和可能进行的交换,c将不比d小
	if(c<d)
	{
		t=c;
		c=d;
		d=t;
	}
	//经过下面的比较和可能进行的交换,a将不比c小,为4个数中的最大值
	if(a<c)
	{
		t=a;
		a=c;
		c=t;
	}
	cout<<"最大值是: "<<a<<"\n";
	return 0;
}

解答四:不引入新的变量也可以

#include <iostream>
using namespace std;
int main( )
{
	int a,b,c,d;
	cout<<"请输入四个数值:";
	cin>>a>>b>>c>>d;
	//经过下面的比较和可能进行的赋值,a将是a和b间的大值
	if(a<b)
		a=b;
	//经过下面的比较和可能进行的赋值,c将是c和d间的大值
	if(c<d)
		c=d;
	//经过下面的比较和可能进行的赋值,a将是a和c间的大值,也就是这四个数中的最大值
	if(a<c)
		a=c;
	cout<<"最大值是: "<<a<<"\n";
	return 0;
}

解答五:其实,思路还有很多,就不只是解答五了,进一步的学习,我们将追求不仅能做出来,还能够在其中找到“好”的方案云解决。期待你设计出更多样的程序……

【项目2扩展一(选做)提示】
任务要求:输入4个整数,输出其中的最大值和最小值。
思路:可以采用与上面近似的思路完成。其中解答四改变了原有的值,不可取(,但可以改造)。
下面的解答在解答三的基础上进行了扩展,其他方案请同学们自行设计。

#include <iostream>
using namespace std;
int main( )
{
	int a,b,c,d,t;
	cout<<"请输入四个数值:";
	cin>>a>>b>>c>>d;
	//经过下面的比较和可能进行的交换,a将不比b小
	if(a<b)
	{
		t=a;
		a=b;
		b=t;
	}
	//经过下面的比较和可能进行的交换,c将不比d小
	if(c<d)
	{
		t=c;
		c=d;
		d=t;
	}
	//经过下面的比较和可能进行的赋值,a将不比c小,为4个数中的最大值
	if(a<c)
	{
		t=a;
		a=c;
		c=t;
	}
	//在两个小值,即b和d间,经过下面的比较和可能的交换,d将是小者,也是4个数中的小者
	if(b<d)
	{
		t=b;
		b=d;
		d=t;
	}
	cout<<"最大值是"<<a<<", 最小值是"<<d<<"\n";
	return 0;
}

【项目2扩展二(选做)提示】
要求:输入4个整数,按从大到小的顺序输出这4个整数。
可以这样来:找出4数中最大的,保存在a中;其余3数中最大的,保存在b中;剩余两个再比较、交换,使c比d大,输出a, b, c, d即可.
自己实现吧。
记住:方案不止这一种。

时间: 2024-07-29 18:28:45

C++第7周任务2-四数中的最大的相关文章

C++第12周项目3——四数的最大公约数

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目3-四数的最大公约数] 输入四个数,并求出其最大公约数 参考解答:中规中矩的做法 #include <iostream> using namespace std; //自定义函数的原型(即函数声明) int gcd(int,int); int gcds(int,int,int,int); int main() { int a,b,c,d; cin>>a

C++第7周项目3 三数中的最大、最小值

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目3]输入3个整数,输出其中的最大值. 样例输入:12 45 32 样例输出:最大值为:45 参考解答: #include <iostream> using namespace std; int main( ) { int a,b,c,max; cout<<"请输入四个数值:"; cin>>a>>b>&g

sql oracle 如何在给定数中取随机数?

问题描述 sql oracle 如何在给定数中取随机数? 如题,比如写一个UPDATE 语句,给表中某一个字段设置值,这些值只能在 1 ,5, 9之间取 有没有方法做到?谢谢 解决方案 SQL取随机数Oracle取随机数oracle取随机数 解决方案二: dbms_random.value(1,5) 要是取整外面再包个trunc()函数就可以了 解决方案三: update. tablename set sname ='xxx ' where id in (1,2,3); 更新tablename

“数”中自有黄金屋 大数据的理想与现实

仿佛只是一夜之间,"大数据(Big Data)"火了. 那一个个关于大数据的传奇故事,一桩桩争夺大数据制高点而展开的并购案,一个接一个轮流发布大数据战略的IT厂商,还有那一场场以大数据为主题的各种研讨会,无一不在宣告,IT界又迎来了新的兴奋点.新的机遇,同时,也是新的挑战. "数"中自有黄金屋 严格地说,大数据并非一个新词,被誉为"数据仓库之父"的Bill Inmon早在上个世纪90年代就经常将"Big Data"挂在嘴边了.

java求1至19这些自然数数中,所有相加为20的组合

使用Stack来完成: 代码如下: package ca.map; import java.util.Stack; public class Sum1_19eq20 { //算法: 求1至19这些自然数数中,所有相加为20的组合 public static void main(String[] args) { combinateDataOfRange(1, 19, 20); } public static void combinateDataOfRange(int min,int max,int

try catch- 计算两个时间相差的天数,小时数,分钟数,秒数 中出现的对象问题

问题描述 计算两个时间相差的天数,小时数,分钟数,秒数 中出现的对象问题 import java.sql.Time;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; public class Homework4 { void display(String beginString end){ SimpleDateFormat sim = new SimpleDateFor

福州四十中双层豪华厕所微博走红

网友拍摄的两层公厕图片 本报讯(记者齐榕)"福州四十中崛起的高级建筑,即将红遍全福州校园的高级公厕,你相信它只是单纯的双层豪华厕所吗?"昨日,http://www.aliyun.com/zixun/aggregation/3640.html">网友在微博上晒出了一张福州四十中的厕所图片,该微博很快得到网友们的转发和评论,并很快在网络上传播. "比教学楼都漂亮啊,为什么我在学校的时候没有呢,泪奔中--"一位网友点评."有空调吗?能无线上网吗?

开发者论坛一周精粹(第四期):Windows系统 SMB/RDP远程命令执行漏洞

第四期(2017年4月8日-2017年4月14日 ) 2017年4月14日,国外黑客组织Shadow Brokers发出了NSA方程式组织的机密文档,包含了多个Windows 远程漏洞利用工具,该工具包可以可以覆盖全球70%的Windows服务器,为了确保您在阿里云上的业务安全,请您关注 [高危漏洞预警]Windows系统 SMB/RDP远程命令执行漏洞 作者:正禾 [漏洞公告]CVE-2016-10229:Linux 内核远程代码执行漏洞 作者:正禾 黑科技?告别幕布,阿里云备案可以"刷脸&q

ASP.NET MVC重点教程一周年版 第四回 向View传值

一.ViewData与TempData属性来向View页传递对象 上文中已经提到,使用ViewData可以 将数据由Controller传递到View 在前文中我们建立了EiceController类 在本文的示 例中我们将这个Controller改一下 public class EiceController : Controller { public ActionResult Index() { ViewData ["ViewData"] = "在这里显示ViewData&