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

相关推荐
啥都鼓捣的小yao2 分钟前
实战5:Python使用循环神经网络生成诗歌
开发语言·人工智能·python·rnn·深度学习
Monly214 分钟前
Uniapp:列表选择提示框
开发语言·javascript·uni-app
HelloDam16 分钟前
912. 排序数组 超级通俗易懂、全面的快速排序教程(优化重复元素、实例有序问题)
后端·算法·排序算法
HelloDam23 分钟前
leetcode51.N 皇后 回溯算法求解 + 效率优化
后端·算法
DataFunTalk29 分钟前
30位数据科学家集结完毕,揭晓大模型时代数据科学的“晋级之路”
前端·后端·算法
ん贤31 分钟前
图论基础理论
c语言·数据结构·c++·算法·图论
夜月yeyue33 分钟前
VScode+OpenOCD+HTOS栈回溯在国产mcu芯片上完全调试
c语言·ide·vscode·单片机·嵌入式硬件·编辑器
烟沙九洲1 小时前
算法的时间复杂度
java·算法
修复bug1 小时前
利用pnpm patch命令实现依赖包热更新:精准打补丁指南
开发语言·javascript·vue.js