c++程序设计——实验4

1.模拟二人猜拳游戏:剪刀石头布。

要求:(1)给出选项菜单如下

**********新一局************

1.出剪子

2.出石头

3.出布

*******************************

请输入选择的数字:

             根据两个用户输入给出猜拳“战况”。

#include <iostream>
using namespace std;

void check(int x)
{
	switch(x)
	{
	case 1:cout << "出剪子" << endl;break;
	case 2:cout << "出石头" << endl;break;
	case 3:cout << "出布"	<< endl;break;
	default:cout << "错误:只能从1,2,3中选择!" << endl;
	}
}
int main()
{
	int a = 0,b= 0,c=3;
	cout << "************新一局************" << endl;
	cout << "           1.出剪子           " << endl;
	cout << "           2.出石头           " << endl;
	cout << "           3.出布             " << endl;
	cout << "******************************" << endl << endl;
	cout << "           开始比赛           " << endl;
	cout << "//" << endl;
	while (1)
	{
		cout << "请输入选择的数字" << endl;
		cout << "甲方选择:";
		cin >> a;
		check(a);
		
		cout << "乙方选择:";
		cin >> b;
		check(b);
		
		cout << "结果:";

		/*  方法一:为每一种情况做出判断,比较麻烦 */
// 		if (a == b)
// 		{
// 			cout << "甲乙双方平局!" << endl;
// 		}
// 		else
// 		{
// 			if (a == 1)
// 			{
// 				if (b == 2)cout << "乙方获胜!" << endl;
// 				else cout << "甲方获胜!" << endl;
// 			}
// 			else if (a == 2)
// 			{
// 				if (b == 1)cout << "甲方获胜!" << endl;
// 				else cout << "乙方获胜!" << endl;
// 			}
// 			else
// 			{
// 				if (b == 1)cout << "乙方获胜!" << endl;
// 				else cout << "甲方获胜!" << endl;
// 			}
// 			
// 
// 		}
		/*  方法二:同上 */
// 		switch( a )
// 		{
// 		case 1:
// 			switch( b )
// 			{
// 			case 1:cout << "双方平局。"<< endl;break;
// 			case 2:cout << "乙方胜。" << endl;break;
// 			case 3:cout << "甲方胜。" << endl;break;
// 			default:cout << "error!" << endl;
// 			}
// 		case 2:
// 			switch( b )
// 			{
// 			case 1:cout << "甲方胜。"  << endl;break;
// 			case 2:cout << "双方平局。" << endl;break;
// 			case 3:cout << "乙方胜。" << endl;break;
// 			default:cout << "error!" << endl;
// 			}
// 		case 3:
// 			switch( b )
// 			{
// 			case 1:cout << "乙方胜。" << endl;break;
// 			case 2:cout << "甲方胜。" << endl;break;
// 			case 3:cout << "双方平局。" << endl;break;
// 			default:cout << "error!" << endl;
// 			}
// 		default:cout << "error!" << endl;
// 		}
		/*  方法三:比较简单 */
		c = b-a;
		if ( (c<0) || (c>2) )
		{
			cout << "error!" << endl;
		}
		else if (!c)
			cout << "甲乙双方平局!" << endl;
		else if ( c==2 || c==-1 )
			cout << "甲方获胜!" << endl;
		else
			cout << "乙方获胜!" << endl;
		cout <<"继续!进入下一轮。" << endl << endl << "//" << endl;
	}
	return 0;
}

2.键盘输入一个数,判定:能不能被3、5和7整除,并如果失败输出失败的具体原因。

#include <iostream>
using namespace std;

int main()
{
	int i;
	while(1)
	{
		cout << "请输入一个数:" << endl;
		cin >> i;
		if ( i%3 == 0 )
		{
			if ( i%5 == 0)
			{
				if ( i%7 == 0)
				{
					cout << i << "能被3、5、7整除。" << endl;
				}
				else cout << i << "只能被3、5整除。" << endl;
			}
			else
			{
				if ( i%7 == 0)
				{
					cout << i << "能被3、7整除。" << endl;
				}
				else cout << i << "只能被3整除。" << endl;
			}
		}
		else
		{
			if ( i%5 == 0)
			{
				if ( i%7 == 0)
				{
					cout << i << "能被5、7整除。" << endl;
				}
				else cout << i << "只能被5整除。" << endl;
			}
			else
			{
				if ( i%7 == 0)
				{
					cout << i << "能被7整除。" << endl;
				}
				else cout << i << "不能被3、5、7整除。" << endl;
			}
		}
	}	
	return 0;
}

3. 输入某年某月某日,判断这一天是这一年的第几天。

#include <iostream>
using namespace std;

  //方法1:利用switch的方式
int main()
{
	int year = 0,month = 0,day = 0;
	int cnt = 0;//记录第几天,对应英文单词:count(不能直接用,因为是关键字)
	cout << "请输入年:";
	cin >> year;
	while( year <= 0 )
	{
		cout << "请重新输入年:";
		cin >> year;
	}
	cout << "请输入月:";
	cin >> month;
	while( ( month < 1 ) || ( month > 12) )
	{
		cout << "请重新输入月:";
		cin >> month;
	}
	cout << "请输入日:";
	cin >> day;
	while( ( day < 1 ) || ( day > 31 ) )
	{
		cout << "请重新输入日:";
		cin >> day;
	}
	switch (month)
	{
	case 12:cnt += 30;
	case 11:cnt += 31;
	case 10:cnt += 30;
	case  9:cnt += 31;
	case  8:cnt += 31;
	case  7:cnt += 30;
	case  6:cnt += 31;
	case  5:cnt += 30;
	case  4:cnt += 31;
	case  3:
		if ( (year%4==0 && year%100!=0) || (year%400==0) )
		{
			cnt += 29;
		}
		else
			cnt += 28;
	case  2:cnt += 31;
	case  1:cnt += day;break;
	default:cout << "error!" << endl;
	}
	cout << year << "年" << month << "月" << day << "日是这一年的第" <<
		cnt << "天" << endl;
	return 0;
}
// //方法2:利用数组的方式
// int main()
// {
// 	int m[12]={31,28,31,30,31,30,30,31,30,31,30,31};
// 	int year = 0,month = 0,day = 0;
// 	int cnt = 0;//记录第几天,对应英文单词:count(不能直接用,因为是关键字)
// 	cout << "请输入年:";
// 	cin >> year;
// 	while( year <= 0 )
// 	{
// 		cout << "请重新输入年:";
// 		cin >> year;
// 	}
// 	cout << "请输入月:";
// 	cin >> month;
// 	while( ( month < 1 ) || ( month > 12) )
// 	{
// 		cout << "请重新输入月:";
// 		cin >> month;
// 	}
// 	cout << "请输入日:";
// 	cin >> day;
// 	while( ( day < 1 ) || ( day > 31 ) )
// 	{
// 		cout << "请重新输入日:";
// 		cin >> day;
// 	}
// 	// 判断闫年
// 	if ( (year%4==0 && year%100!=0) || (year%400==0) )
// 	{
// 		m[1] = 29;
// 	}
// 	else
// 	{
// 		for (int i=0;i<month;++i)//注意取值范围
// 		{
// 			n += m[i];
// 		}
// 		n += day;
// 	}
// 	cout << year << "年" << month << "月" << day << "日是这一年的第" <<
// 		n << "天" << endl;
// 	return 0;
// }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值