编程打卡:C语言趣味编程习题做

发布时间 2023-04-12 21:37:40作者: satou_matsuzaka

编程打卡:C语言趣味编程习题做

百钱百鸡问题

问题描述

一只 Cock 卖 5 钱,Hen 卖 3 钱,chicken 卖 0.33333333 钱,真正工作的时候不要用浮点数存钱啊笨蛋!然后100钱买了100只鸡,问各买了多少只。

设计思路

解不定方程,穷举。

两层循环遍历各种鸡的个数,第三种鸡可以直接相减得出结果,然后判断总价是否为100即可

程序流程图

开始
开始
int cock, hen, chicken
int cock, hen, chick...
cock = 0
cock = 0
cock < 20
cock < 20
hen = 0
hen = 0
hen < 33
hen < 33
chicken = 100 - cock - hen
chicken = 100 - cock - hen
cock * 5 + hen * 3 + (float)chicken/3 == 100 ?
cock * 5 + hen * 3 + (float)ch...
输出数值
输出数值
Yes
Yes
结束
结束
hen++
hen++
No
No
cock++
cock++
Text is not SVG - cannot display

代码

#include <iostream>
using namespace std;
int main()
{
    for (int i = 0; i &lt; 20; i++)    {
        for (int j = 0; j &lt; 33; j++)    {
            int k = 100 - i - j;
            if (i * 5 + j * 3 + (float)k/3 == 100)
                cout &lt;&lt; "cock = " &lt;&lt; i &lt;&lt; ", hen = " &lt;&lt; j &lt;&lt; ", chicken = " &lt;&lt; k &lt;&lt; endl;
        }
    }
}

执行结果

cock = 0, hen = 25, chicken = 75
cock = 4, hen = 18, chicken = 78
cock = 8, hen = 11, chicken = 81
cock = 12, hen = 4, chicken = 84

打渔还是晒网?

问题描述

1990年1月1日开始三天打渔两天晒网,询问之后的一个日期是在做什么。

设计思路

计算从1990年1月1日到询问的日期移动过了多少天,然后对5求模。结果0,1,2则为打渔,3,4则为晒网。

逐层计算年,月,日的差即可。

程序流程图

开始
开始
输入年月日
输入年月日
计算距今的天数
计算距今的天数
daySum <= 2
daySum <= 2
cout << 打渔
cout << 打渔
晒网
晒网
No
No
Yes
Yes
Text is not SVG - cannot display

伪代码

cin &gt;&gt; yy &gt;&gt; mm &gt;&gt; dd
daySum(yy,mm,dd)
if daySum % 5 &lt;= 2
	cout &lt;&lt; "打渔"
else 
	cout &lt;&lt; "晒网"

代码

#include <iostream>
using namespace std;
int perMonth[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int getSum(int yy,int mm,int dd)
{
    int sum;
    for (int i = 1990; i &lt; yy; i++) {
        if (__isleap(i))
            sum += 366;
        else
            sum += 365;
    }
    for (int i = 1; i &lt; mm; i++)    {
        sum += perMonth[i];
        if (i == 2 &amp;&amp; __isleap(yy))
            sum ++;
    }
    sum += dd - 1;
    return sum;
}
int main ()
{
    int yy,mm,dd;
    cin &gt;&gt; yy &gt;&gt; mm &gt;&gt; dd;
    int sum = getSum(yy,mm,dd);
    if (sum % 5 &lt;= 2)
        cout &lt;&lt; "打渔" &lt;&lt; endl;
    else
        cout &lt;&lt; "晒网" &lt;&lt; endl;
}