解题思路: for循环+switch足以解这道题
注意事项:1.2月的闰月要判断 2.循环的条件 int i = 1; i < m; i++ 不能等于m不然会多加一个月份的天数 3. sum在每一次输出结束时或者循环开始前归0,不然会把之前的sum加到新的一轮中 4.输出中的格式化输出,我不太喜欢使用所以加一个一个字符代替,也可以用
scanf("%d/%d/%d", &y, &m, &d) != EOF
参考代码:
#include <iostream> using namespace std; // 判断给定的年份是否是闰年 bool isp(int x) { if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0)) { return true; } return false; } int main() { int y, m, d; char op; // 循环处理多组输入数据 while (cin >> y >> op >> m >> op >> d) { int sum = 0; // 初始化累计天数为0 // 遍历从1到m-1的月份,累加这些月份的天数 for (int i = 1; i < m; i++) { switch (i) { case 2: // 二月 if (isp(y)) sum += 29; // 闰年2月有29天 else sum += 28; // 非闰年2月有28天 break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: // 大月(31天) sum += 31; break; case 4: case 6: case 9: case 11: // 小月(30天) sum += 30; break; } } // 在累计天数的基础上加上输入的日(d),并输出结果 cout << sum + d << endl; } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:625 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:538 |
A+B for Input-Output Practice (V) (C++代码)浏览:451 |
C语言训练-大、小写问题 (C语言代码)浏览:614 |
1024题解浏览:811 |
1071题解浏览:493 |
蛇行矩阵 (C语言代码)浏览:507 |
剪刀石头布 (C语言代码)浏览:1436 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:514 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:668 |