1、从键盘上输入某年、某月、某日,编程计算该日是这一年的第多少天?例如,输入2003-8-8,则计算出2003年8月8日是2003年的第220天。注意考虑该年是否闰年。
#include<iostream>
using namespace std;
void main()
{
int day, month, year, sum = 0;
cout << "please input year,month,day" << endl;
cin >> year >> month >> day;
switch (month-1) /*先计算某月以前月份的总天数*/
{
//case 12: sum += 31;
case 11: sum += 30;
case 10: sum += 31;
case 9: sum += 30;
case 8: sum += 31;
case 7: sum += 31;
case 6: sum += 30;
case 5: sum += 31;
case 4: sum += 30;
case 3: sum += 31;
case 2: sum += (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 29 : 28;
case 1:sum += 31;
case 0: sum += day;
default:printf("data error"); break;
}
cout << "It is the day." << sum << "day" << endl;
system("pause");
}
2、鸡兔同笼一共有24只脚,求鸡兔各有多少只,并找出其可能的所有组合。
#include<iostream>
using namespace std;
int main()
{
int x, y;
int i, j;
for (x = 0; x <= 12; x++)
for (y = 0; y <= 6; y++)
{
if ((2 * x + 4 * y) == 24)
cout << "鸡的数目=" << x << " 兔儿的数目=" << y << endl;
}
return 0;
}
3、编程求两个整数的最大公约数和最小公倍数。
#include<iostream>
using namespace std;
void ascNum(int *p1, int *p2)
{// 将两个数先进行升序排列
int temp;
if (*p1 > *p2)
{
temp = *p2;
*p2 = *p1;
*p1 = temp;
}
}
int getAppr(int a, int b)
{//求两个整数的最大公约数 辗转相除法
int c;
ascNum(&a, &b);
do
{
c = b%a;
b = a;
a = c;
} while (c != 0);
return b;
}
int main()
{
int m, n, maxAppr, minComm;
cout << "m=" << " n="<<endl;
cin >> m >> n;
maxAppr = getAppr(m, n); //最大公约数;
minComm = m*n / maxAppr; //最小公倍数;
cout << " m=" << m << " n=" << n << endl
<< " 最大公约数:" << maxAppr << " 最小公倍数;" << minComm<<endl;
return 0;
}
4、[选做]将一元纸币换成1分、2分和5分的硬币,要求硬币的个数为50枚。问共有多少种组合?请输入组合数及其每一种组合。例如,0(1分)、50(2分)、0(5分)是其中的一种组合。
#include<iostream>
using namespace std;
int main()
{
//int yuan = 1;
int xx, yy, zz; //xx1分、 yy2分 、zz5分的硬币,
for (xx = 0; xx <= 50;xx++)
for (yy = 0; yy <= 50;yy++)
for (zz = 0; zz <= 20;zz++)
if ((xx + yy + zz == 50) && (xx + 2 * yy + 5 * zz == 100))
cout << "一元等于:" << "一分的:" << xx << " 2分的:" << yy << " 5分的:" << zz<<endl;
return 0;
}