c语言练习题29:获得月份天数

获得月份天数

代码:

cpp 复制代码
//法一
#include<stdio.h>
int main() {
	int y = 0;
	int m = 0;
	int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	while (~scanf("%d%*c%d", &y, &m)) {
		int day = days[m];
		if ((y % 4 == 0) && ((y % 400 == 0) || (y % 100 != 0))) {
			if (m == 2) {
				day++;
			}
		}
		printf("%d\n", day);
	}
	return 0;
}
//法二
//#include <stdio.h>
//int main() {
//  int year = 0;
//  int mouth = 0;
//  while (~scanf("%d %d", &year, &mouth)) {
//    if (mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11) {
//      printf("30\n");
//    }
//    else if (mouth == 2) {
//      if (((year % 4 == 0) && ((year % 400 == 0) || (year % 100 != 0)))) {
//        printf("29\n");
//      }
//      else {
//        printf("28\n");
//      }
//    }
//    else {
//      printf("31\n");
//    }
//  }
//  return 0;
//}//法一
#include<stdio.h>
int main() {
	int y = 0;
	int m = 0;
	int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	while (~scanf("%d%*c%d", &y, &m)) {
		int day = days[m];
		if ((y % 4 == 0) && ((y % 400 == 0) || (y % 100 != 0))) {
			if (m == 2) {
				day++;
			}
		}
		printf("%d\n", day);
	}
	return 0;
}
//法二
//#include <stdio.h>
//int main() {
//  int year = 0;
//  int mouth = 0;
//  while (~scanf("%d %d", &year, &mouth)) {
//    if (mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11) {
//      printf("30\n");
//    }
//    else if (mouth == 2) {
//      if (((year % 4 == 0) && ((year % 400 == 0) || (year % 100 != 0)))) {
//        printf("29\n");
//      }
//      else {
//        printf("28\n");
//      }
//    }
//    else {
//      printf("31\n");
//    }
//  }
//  return 0;
//}

知识点:赋值忽略符(%*c)

如果⽤⼾输⼊ 2020-01-01 ,就会正确解读出年、⽉、⽇。问题是⽤⼾可能输⼊其他 格式,⽐如 2020/01/01 ,这种情况下, scanf() 解析数据就会失败。 为了避免这种情况, scanf() 提供了⼀个赋值忽略符(assignment suppression character) * 。 只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。

%*c 就是在占位符的百分号后⾯,加⼊了赋值忽略符 * ,表⽰这个占位符没有对应的 变量,解读后不必返回。

相关推荐
Leinwin1 分钟前
Copilot Studio 实战:多模型选择、GitHub Copilot harness 计费与 Copilot Credits 额度管理
开发语言·c#
wenyq74 分钟前
LeetCode 152. Maximum Product Subarray
java·算法·leetcode
余额瞒着我当琳5 分钟前
C++异常,异常的概念,异常抛出与捕获,RAII 和智能指针的设计思路,C++标准库一些指针的使用
java·开发语言·c++·算法
2601_9707038311 分钟前
除湿机原理研究报告:一台机器在物理上能走多远
大数据·数据结构·算法·数据库架构·推荐算法
信奥卷王11 分钟前
[GESP202312 六级] 工作沟通(含视频)
算法
♡すぎ♡20 分钟前
SWE 的原理解析
算法·计算机图形学·swe
严谨的麻辣烫22 分钟前
固定 IP 稳定性如何检测?使用 Python 实现网络连通性与耗时监控
开发语言·数据库·php
FuckPatience23 分钟前
C# Winform 使用Label循环显示闪烁
开发语言·c#
AiNightVision24 分钟前
星光级 是什么?——星光级摄像机是什么?0.001Lux 照度门槛与选型真相
人工智能·算法·车载系统·自动驾驶·无人机·视频·智能硬件
若亦_31 分钟前
排序>>选择排序
数据结构·算法·排序算法