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

简介: 项目2:输入4个整数,输出其中的最大值。  要求:程序调试成功后,提交漂亮、规范的博文作为报告(参考上一任务的模板自行改造)  项目2扩展一(选做):输入4个整数,输出其中的最大值和最小值。  项目2扩展二(选做):输入4个整数,按从大到小的顺序输出这4个整数。  (抽出时间将扩展题做一下,在了前面的基础上,只要再多往前再走一点,就会多一分内在的享受。越早有这种体会,感觉会越早出现。这几乎是突
项目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即可.
自己实现吧。
记住:方案不止这一种。




目录
相关文章
|
5月前
|
存储 监控 算法
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
106 0
|
5月前
|
存储 算法 Java
【C/C++ 线程池设计思路】 深入探索线程池设计:任务历史记录的高效管理策略
【C/C++ 线程池设计思路】 深入探索线程池设计:任务历史记录的高效管理策略
152 0
|
5月前
|
安全 Java 调度
【C/C++ 线程池设计思路 】设计与实现支持优先级任务的C++线程池 简要介绍
【C/C++ 线程池设计思路 】设计与实现支持优先级任务的C++线程池 简要介绍
151 2
|
5月前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
204 2
|
5月前
|
网络协议 C++
C++异步网络库workflow入门教程(1)HTTP任务
创建任务方法原型 在workflow中所有的客户端任务都放在`WFTaskFactory`工厂类中 + `url:`请求的http url + `redirect_max:`表示最大重定向次数。如果在请求过程中遇到重定向,该参数指定了最多允许重定向的次数。 + `retry_max`:表示最大重试次数。如果请求失败,该参数指定了最多可以重试的次数。 + `callback`:这是一个回调函数的指针,用于处理请求的响应。原型为`using http_callback_t = std::function
185 0
|
Java C++
c++基于ThreadPool实现灵活的异步任务
c++基于ThreadPool实现灵活的异步任务
【C++11】C++多线程之条件变量,异步启动任务(1)
【C++11】C++多线程之条件变量,异步启动任务(1)
130 0
|
API C++ Windows
windows C++ 多任务并发执行设计
windows C++ 多任务并发执行设计
241 0
windows C++ 多任务并发执行设计
|
设计模式 C++ Windows
windows C++ 多任务并发执行设计
本文是windows C++ 多任务并发执行设计的详解。
404 0
|
安全 Java C++
C++多任务编程简明教程 (1) - C++的多任务其实很简单
# C++多任务编程简明教程 (1) - C++的多任务其实很简单 ## 用库的方式无法实现彻底的线程安全!我们需要C++11 与很多同学交流的时候发现,一想到用C++写多线程,还是想到pthread这样的库的方法实现。 但是,十几年前的研究就证明了,线程安全是无法用库的形势来提供的,有兴趣的同学可以参见原文: http://www.hpl.hp.com/techreports/2
1835 0
下一篇
无影云桌面