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 就是在占位符的百分号后⾯,加⼊了赋值忽略符 * ,表⽰这个占位符没有对应的 变量,解读后不必返回。

相关推荐
牛奔31 分钟前
Go 如何打印调试深层或嵌套的结构体
开发语言·后端·golang
m沐沐34 分钟前
【深度学习】YOLOv2目标检测算法——改进点、网络结构与聚类先验框解析
人工智能·pytorch·深度学习·算法·yolo·目标检测·transformer
不会就选b38 分钟前
算法日常・每日刷题--<链表>3
数据结构·算法·链表
2601_9516443244 分钟前
C语言二级备考指南
c语言·编程基础·编译环境·二级考试·题库选择
geovindu1 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
学逆向的1 小时前
汇编——JCC指令
开发语言·汇编·网络安全
mayaairi2 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
kite01213 小时前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
Zachery Pole3 小时前
CCF-CSP备战NO.7【队列】
算法
闪电悠米3 小时前
力扣hot100-48.旋转图像-转置翻转详解
算法·leetcode·职场和发展