CQUPT 复试 代码题15a
搬运请注明出处!!!
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <math.h>
#include <stdlib.h>
#include <stack>
#include <queue>
#include <random>
using namespace std;
#define N 100
// 15a-1 adddigit------------------------------------------
// int adddigit(int num)
// {
// int k, sum = 0;
// while (num)
// {
// k = num % 10;
// sum += k;
// num /= 10;
// }
// return sum;
// }
// int main(int argc, char const *argv[])
// {
// int num;
// scanf("%d", &num);
// printf("%d", adddigit(num));
// return 0;
// }
// 15a-2 chrn-----------------------------------------------
// int chrn(char *s, char c)
// {
// int count = 0;
// while (*s)
// {
// if (*s == c)
// {
// count++;
// }
// s++;
// }
// return count;
// }
// int main(int argc, char const *argv[])
// {
// char s[N], c;
// gets(s);
// scanf("%c", &c);
// printf("count=%d", chrn(s, c));
// return 0;
// }
// 15a-3 打鱼or晒网-----------------------------------------------
// 判断闰年
int isLeapyear(int year)
{
int f = 0;
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
f = 1;
}
return f;
}
// 返回月份的天数
int GetMonthdays(unsigned int year, unsigned int month)
{
int days = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
days = 31;
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
days = 30;
}
else if (month == 2)
{
if (isLeapyear(year))
days = 29;
else
days = 28;
}
return days;
}
int isWorking(unsigned int year, unsigned int month, unsigned int day)
{
int count = 1;
int start_y = 1990, start_m = 1, start_d = 1; // 初始日期
while (start_y != year || start_m != month || start_d != day) // 改变初始日期,一直到输入日期为止
{
// cout << start_y << start_m << start_d << endl;
if (start_d != GetMonthdays(start_y, start_m))
{
start_d += 1;
}
else
{
if (start_m != 12) // 不是12月31号,但是是1-11月的最后一天
{
start_m += 1;
start_d = 1;
}
else // 是12月31号
{
start_y += 1;
start_m = start_d = 1;
}
}
count += 1; // 记录距离多少天
}
return count;
}
int main(int argc, char const *argv[])
{
unsigned int y, m, d;
scanf("%d,%d,%d", &y, &m, &d);
// cout << isWorking(y, m, d) << endl;
if (isWorking(y, m, d) % 5 != 4 && isWorking(y, m, d) % 5 != 0)
{
printf("打鱼\n");
}
else
{
printf("晒网\n");
}
return 0;
}
文章包含三部分编程题目:1)计算整数的各个数字之和;2)统计字符串中特定字符出现次数;3)判断给定日期是否为工作日,并根据工作日天数确定是打鱼还是晒网。代码使用C++编写,涉及闰年判断和日期处理算法。
113

被折叠的 条评论
为什么被折叠?



