当前位置:网站首页>【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;
}

边栏推荐
- What is DAPP system development and analytical understanding
- js中this的默认指向及如何修改指向 2021.11.09
- Ali three sides: what is the difference between using on or where in the left join associated table and the condition
- On the output representation of bidirectional LSTM in pytoch
- 5. Sum of N numbers
- day32 js笔记 事件(上)2021.09.27
- Self use demo of basic component integration of fluent
- day34 js笔记 正则表达式 2021.09.29
- Day36 JS notes ecma6 syntax 2021.10.09
- 买股票在中金证券经理的开户二维码上开户安全吗?求大神赐教
猜你喜欢

Cannot redeclare block range variables

js中this的默认指向及如何修改指向 2021.11.09

Share the easy-to-use fastadmin open source system - practical part

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

How to deploy the software testing environment?

Day37 JS note motion function 2021.10.11

Day34 JS notes regular expression 2021.09.29

Fruit FL studio/cubase/studio one music host software comparison

Day31 JS notes DOM 2021.09.26

Characteristics of solar wireless LED display
随机推荐
Prepare for Jin San Yin Si I. testers without experience in automated testing projects should look at it quickly
分析list中有无重复数据且重复了几次
Use logrotate to automatically cut the website logs of the pagoda
What is the main chain system?
[no title] the virtual machine vmnet0 cannot be found and an error is reported: there is no un bridged host network adapter
Interview skills for interview steps
Day23 JS notes 2021.09.14
Unity screenshot function
Pre parsing, recursive functions and events in day25 JS 2021.09.16
IO stream of file and Base64
Array method in JS 2021.09.18
Class pattern and syntax in JS 2021.11.10
Day34 JS notes regular expression 2021.09.29
水果FL Studio/Cubase/Studio one音乐宿主软件对比
Adding a new user in MySQL 5.7
1. print hourglass
6.A-B
mysql-. SQL file phishing Online
Which programming language will attract excellent talents?
Simple understanding of ThreadLocal