思考题01:
一个月有30天,这个月有5个星期六和星期天
问:这个月1号是星期几
本文代码仓库地址: gitee码云CSDN笔记仓库地址
刚才刷 抖Y 的时候,刷到了有人问提出这个问题,看了一下评论区,感觉还可以,需要思考一下,最初没有准备拿起电脑的,只在脑袋里面想了想,用手机记录一下,写一点思路,发现通了,这不行,忍不住,这得拿电脑试一试,然后就是下面的结果了,手机上面的思路在最后面附图
#include <iostream>
using namespace std;
int main() {
/* 思考题01
* 一个月有30天,这个月有5个星期六和星期天
* 问:这个月1号是星期几
*/
// 统计这个月星期六有几天
int count1 = 0;
// 统计这个月星期天有几天
int count2 = 0;
// 数组中的数字分别代表星期天到星期六的每一天
int arrXQ[7] = { 7,1,2,3,4,5,6 };
// 定义一个长度为30的数组,来存放这30天的每天是星期几
int arrY[30];
// day 代表一个星期中的某一天
int day = 0;
// 1号可能为一个星期的任何一天,这里循环7次
for (int i = 0; i < 7; i++)
{
// day 代表一个星期中的某一天
day = i;
// 为这30天中的每一天赋值,看是星期几
for (int j = 0; j < 30; j++)
{
// 给这30天赋值【例如:7代表星期天】
arrY[j] = arrXQ[day];
// 判断这一天是不是星期六
if (arrY[j] == 6)
{
// 是就进行统计+1
count1++;
}
// 判断这一天是不是星期天
if (arrY[j] == 7)
{
// 是就进行统计+1
count2++;
}
// 每次循环都让星期改变成为下一天的星期
day++;
// 判断星期【因为数组取参数【星期】的时候是从0开始的,所以最后的下标为6,因为这判断在day++之后,所以是day=7的时候需要重新赋值为0】
if (day == 7)
{
day = 0;
}
}
// 当30天都赋值完成后判断星期六和星期天的天数是不是都有5天
if (count1 == 5 && count2 == 5)
{
// 如果是就打印出来
cout << "这个月的一号是星期" << arrY[0] << endl;
// 并且跳出循环
break;
}
else
{
// 如果不是,就需要初始化统计值 count1和count2
count1 = 0;
count2 = 0;
}
}
cout << endl;
system("pause");
return 0;
}
一点点笔记,以便以后翻阅。