c++语言程序设计 实验习题第一章

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;
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值