当前位置:网站首页>【C语言】NextDay问题
【C语言】NextDay问题
2022-06-28 11:36:00 【贾璞】
输入一个时间,某年某月某日,输出下一天
主要就是边界控制,不使用愚蠢写法,无技术含量,仅仅逻辑性考验
注释完善,自行理解
执行环境:Ubuntu18.04 CLion/GCC
WIndows环境也无需修改
Code:
/* Next Day * 注意:紧扣题意,输入格式为:xx年xx月xx日,正好利用这锻炼格式化字符串sscanf()函数 * 至于例如2019 02 25这种格式,如此一来,写的更没意思了 * 包括多此一举在堆区开辟空间,同时也避免了用户故意无限输入导致栈区溢出问题 * 学习软件测试,就要考虑到万无一失 * 考研的同学可以多了解这些函数 * * */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
//定义13个长度,0号索引不使用,避免后期+1操作
int monArray[13] = {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("输入年月日[Format:xx年xx月xx日]:\n");
//堆区开辟空间,栈区空间Windows默认只有1M,Linux一般默认8M,可以扩大,在此不做赘述
char *time = malloc(64);
scanf("%s", time);
int year, mon, day;
//格式化字符串置于对应变量中
sscanf(time, "%d年%d月%d日", &year, &mon, &day);
//判断闰年后2月份数组天数加一
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
monArray[2]++;
//月,日未超范围
if ((mon <= 12 && mon >= 1) && (day <= monArray[mon])) {
//月尾判断
if (day == monArray[mon]) {
//到达年尾
if (mon == 12) {
day = 1;
mon = 1;
year++;
}
//只达到月尾
else {
day = 1;
mon++;
}
}
//月日均为超范围
else {
day++;
}
}
//月日超范围,直接return
else {
printf("Data Error\n");
return EXIT_FAILURE;
}
//计算成功
printf("Next Day is:%d年%d月%d日\n", year, mon, day);
return EXIT_SUCCESS;
}

边栏推荐
- Daily practice of C language - day 3: calculate the number of occurrences of sub strings of strings
- Day33 JS note event (Part 2) September 28, 2021
- Day24 JS notes 2021.09.15
- Unity屏幕截图功能
- Necessary for beginners PR 2021 quick start tutorial, PR green screen matting operation method
- Day34 JS notes regular expression 2021.09.29
- Which programming language will attract excellent talents?
- Practice and Thinking on the architecture of a set of 100000 TPS im integrated message system
- 【sciter】: sciter-fs模块扫描文件API的使用及其注意细节
- Contract quantitative trading system development | contract quantitative app development (ready-made cases)
猜你喜欢

Day30 JS notes BOM and DOM 2021.09.24

day36 js笔记 ECMA6语法 2021.10.09

QML control type: tabbar

Remote login sshd service
![Connectionreseterror: [winerror 10054] the remote host forced an existing connection to be closed](/img/9a/97813f5ac4d7c15711891cff25b9dd.jpg)
Connectionreseterror: [winerror 10054] the remote host forced an existing connection to be closed

网页提示此站点不安全解决方案

Swin, three degrees! Eth open source VRT: a transformer that refreshes multi domain indicators of video restoration

Web3安全连载(3) | 深入揭秘NFT钓鱼流程及防范技巧

Unity screenshot function

Day29 JS notes 2021.09.23
随机推荐
Characteristics of solar wireless LED display
1. print hourglass
Difference (one dimension)
行业分析| 快对讲,楼宇对讲
Day29 JS notes 2021.09.23
Software test interview classic + 1000 high-frequency real questions, and the hit rate of big companies is 80%
【北京航空航天大学】考研初试复试资料分享
Excel import / export convenience tool class
分析list中有无重复数据且重复了几次
Allez, Meta - Cosme, comme prévu, cette chaleur ne durera pas longtemps.
The development and principle of the metacosmic system
网页提示此站点不安全解决方案
Day32 JS note event (Part 1) September 27, 2021
6. calculation index
Remote login sshd service
AcWing 606. Average 1 (implemented in C language)
MapReduce项目案例1
Chendanqi, Fang Fei, guquanquan and Li Bo won the prize, and the list of Sloan research award in 2022 was released
What method is required for word, PDF and txt files to realize full-text content retrieval?
Day36 JS notes ecma6 syntax 2021.10.09