目录
一、说明:
By: RuoChen404(Larry,另外一个名字)
CSDN: 钱塘江上潮信来,今日方知我是我
原创内容,转载须说明及网页地址
C语言入门学习推荐:
B站up主: 工控圈
(是搬运kerwin老师的课,不过也可以看都一样)
二、代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct {//显得有B格,可以不用,在main里直接用year,month,day就行
short y, m, d;
}Data;
int main()
{
Data *data = (Data*)malloc(sizeof(Data));//创建data指针,并给其分配空间
if (data == NULL) {
printf("没有申请到内存,可能内存不足。");
return 1;
}//上面几行为B格代码,可以不用
short n = 0, k = 0;// n来标记平年还是闰年,k来标记当月天数
printf( "请输入年份\n例如:2024.3.5\n" );
while (1) {
if(scanf_s("%hd.%2hd.%2hd", &data->y, &data->m, &data->d) == 3)//限定 月份 和 天数 大小
if (data->m > 0 && data->m < 13 && data->d > 0 && data->d < 32) break;
else printf("输入不合理,请重新输入:\n");
else printf("输入不合理,请重新输入:\n");//其实只用中间两行if-else就行了,不过这更严谨了些
}
rewind(stdin);//windows平台下清空字符缓冲区
printf("%hd年%hd月%hd日是 " , data->y, data->m, data->d);//data->y换成year,以此类推
if (data->y % 400 == 0 || data->y % 4 == 0 && data->y % 100 != 0) {
printf("闰年\n");
n++;
}
else printf("平年\n");
switch (data->m)
{//穿透
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:k = 31; break;
case 2:k = n > 0 ? 29 : 28; break;
case 4:
case 6:
case 9:
case 11:k = 30; break;
}
printf("此年%hd月共有%hd天\n", data->m, k);
free(data);//清除data内存
return 0;
}
三、闲聊:
重温一下C,B站up主:工控圈,讲的很不错
借鉴了部分内容。