STM32作业二

作业:2018 年总共有365 天,将2018 年1 月1 日作为计数起点,即计数1,2018 年12 月31 日作为计数终点,即计数365。计数1 代表“2018 年1 月1 日-星期一”,计数10 代表“2018年1 月10 日-星期三”。参照实验1,通过键盘输入一个1-365 之间的值,包括1 和365,将其转换为年、月、日、星期,并输出到屏幕。

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int tick=0;
	
	short year,month,day,week;
	
	printf("Please input a tick between 1-365\n");
	scanf("%d",&tick);
	
	year=2021;
	if(1<=tick&&tick<=31)   //1-31,1月31天 
	{
		month=1;
		day=tick;
	}
	else if(32<=tick&&tick<=59)  //32-59,2月28天 
	{
		month=2;
		day=tick-31;
	}
	else if(60<=tick&&tick<=91)//60-91,3月31天 
	{
		month=3;
		day=tick-31-28;
	}
	else if(92<=tick&&tick<=112)//92-112,4月30天
	{
		month=4;
		day=tick-31-28-31; 
	}
	else if(113<=tick&&tick<=144)//113-144,5月31天
	{
		month=5;
		day=tick-31-28-31-30;
	}
	else if(145<=tick&&tick<=175)//145-175,6月30天
	{
		month=6;
		day=tick-31-28-31-30-31;
	}
	else if(176<=tick&&tick<=207)//176-207,7月31天
	{
		month=7;
		day=tick-31-28-31-30-31-30;
	}
	else if(208<=tick&&tick<=239)//208-239,8月31天
	{
		month=8;
		day=tick-31-28-31-30-31-30-31;
	}
	else if(240<=tick&&tick<=270)//240-270,9月30天 
	{
		month=9;
		day=tick-31-28-31-30-31-30-31-31;
	}
	else if(271<=tick&&tick<=302)//271-302,10月31天 
	{
		month=10;
		day=tick-31-28-31-30-31-30-31-31-30;		
	}
	else if(303<=tick&&tick<=333)//303-333,11月30天
	{
		month=11;
		day=tick-31-28-31-30-31-30-31-31-30-31;			
	 } 
	else if(334<=tick&&tick<=365)//334-365,12月31 天 
	{
		month=12;
		day=tick-31-28-31-30-31-30-31-31-30-31-30;	
	}
	else
	{
		printf("error!!");
		return 0;
	}
	
	week=(tick+4)%7;   //0代表星期日,+4是因为2021/1/1是星期五 
	if(week==0)
	{
		printf("Curent time:%04d年%02d月%02d日-星期日",year,month,day);
	}
	if(week==1)
	{
		printf("Curent time:%04d年%02d月%02d日-星期一",year,month,day);
	}
	if(week==2)
	{
		printf("Curent time:%04d年%02d月%02d日-星期二",year,month,day);
	}
	if(week==3)
	{
		printf("Curent time:%04d年%02d月%02d日-星期三",year,month,day);
	}
	if(week==4)
	{
		printf("Curent time:%04d年%02d月%02d日-星期四",year,month,day);
	}
	if(week==5)
	{
		printf("Curent time:%04d年%02d月%02d日-星期五",year,month,day);
	}
	if(week==6)
	{
		printf("Curent time:%04d年%02d月%02d日-星期六",year,month,day);
	}
	printf("\n");
	system("pause"); 	
}
scanf 和scanf_s 有什么区别?

其实scanf_s是vs针对scanf弄出来的安全函数。

为什么要对制表符长度和缩进长度进行设置?

为了保持代码规范。

包含头文件有两种方式,一种是尖括号“#include <>”包含,一种双引号“#include" "”包含,简述两种包含头文件方式的区别。

需要注意的是,尖括号包含一般用于包含标准库的头文件,编译器会去系统配置的库环境变量和者用户配置的路径去搜索,而不会在项目的当前目录去查找,而双引号包含一般用于包含用户自己编写的头文件,编译器会先在项目的当前目录查找,找不到后才会去系统配置的库环境变量和用户配置的路径去搜索。
本教程规定,对于标准的库头文件,如stdio.h,使用尖括号包含,即#include
<stdio.h>,而用户自己编写的头文件,如UserFile.h,使用双引号包含,即#include"UserFile.h"。

局部变量的有效区域是什么?本教程中,局部变量命令采用的是什么格式?

函数内部的非静态变量即为局部变量,其有效区域仅限于函数范围内,局部变量命名采用第一个单词全部字母小写,第二、三、…个单词的首字母大写其余字母小写格式,例如:
timerStatus,tickVal,restTime

如果不使用system(“pause”)语句,还有什么其他方法,可以避免win32 控制台结果输出界面一闪而过的现象。

不知道。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值