c和c++的一些训练题(4)(小学生比较国家面积)

问题的提出:四位分别来自中国、美国、俄罗斯、加拿大的小学生都以自己的国土面积大而骄傲不已,但是他们想知道到底谁的国土最大,谁的最小,他们的判断如下:

加拿大学生:加拿大最大,美国最小,俄罗斯第三。

美国学生:美国最大,加拿大最小,俄罗斯第二,中国第三。
中国学生:美国最小,加拿大第三。

他们互不相让,最后老师下定结论:对于上述四国面积的判断,他们每人只判断对了一个国家。对于老师的提示,四位小学生还是绞尽脑汁推断不出到底是谁的国土最大,谁的最小!现请编制程序告诉四位小学生正确顺序。

解答:这个问题我没思考出来,我想了两天,一直想建立一个类用来装国家和排名,始终没得到答案,后来看了答案,发现这竟然是个纯数字问题,答案挺简单,但是不太好想,贴出来供大家看看。

代码:

// test4_.cpp : 定义控制台应用程序的入口点。
//排序方法用的比较巧妙
//对齐方法用的也比较新setw(int n);
//算法的复杂度较高,需要改进

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	string str[4];
	int a,b,c,d;//a:America b:Russia C:China d:Canada
	
	for(a=1;a<=4;a++)
	{
		for(b=1;b<=4;b++)
		{
			if(a!=b)
			{
				for(c=1;c<=4;c++)
				{
					if(a!=c && b!=c)
					{
						d=10-a-b-c;
						if((a==4) + (d==1) + (b==2)==1 &&
							(a==1) + (d==4) + (b==2) + (c==3)==1 && 
							(a==4) + (d==3)==1)
						{
							//cout<<a<<b<<c<<d<<endl;
							str[a-1]="美国";
							str[b-1]="俄罗斯";
							str[c-1]="中国";
							str[d-1]="加拿大";
						cout<<left<<setw(15)<<"The first: "<<str[0]<<endl;
						cout<<left<<setw(15)<<"The second: "<<str[1]<<endl;
						cout<<left<<setw(15)<<"The third: "<<str[2]<<endl;
						cout<<left<<setw(15)<<"The last: "<<str[3]<<endl;
						}

					}
				}
			}
		}
	}
	system("pause");
	return 0;
}
结果:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值