用户输入当前日期,与已经以数组形式录入的(商品日期+保质期)作比较,输出过期商品名称
#include <stdio.h>
#include <string.h>
// 定义商品结构体
struct Product {
char name[50]; // 商品名称
char expiry_date[11]; // 商品保质期
};
// 定义一个函数,比较输入日期和商品过期日期,并输出过期商品名称
void compare_date(char date[]) {
// 模拟商品数组
struct Product products[] = {
{"可乐", "2021-07-31"},
{"奶酪", "2021-08-10"},
{"面包", "2021-08-15"}
};
int length = sizeof(products) / sizeof(products[0]);
printf("以下商品已过期:\n");
for (int i = 0; i < length; i++) {
// 按照日期字符串格式将商品保质期转化为整型
int expiry_year, expiry_month, expiry_day;
sscanf(products[i].expiry_date, "%4d-%2d-%2d", &expiry_year, &expiry_month, &expiry_day);
// 按照日期字符串格式将用户输入的日期转化为整型
int input_year, input_month, input_day;
sscanf(date, "%4d-%2d-%2d", &input_year, &input_month, &input_day);
// 将日期转化为天数进行比较
int expiry_days = expiry_year * 365 + expiry_month * 30 + expiry_day;
int input_days = input_year * 365 + input_month * 30 + input_day;
// 如果输入日期已经超过商品保质期,输出商品名称
if (input_days > expiry_days) {
printf("%s\n", products[i].name);
}
}
}
int main() {
char date[11];
printf("请输入当前日期(格式为YYYY-MM-DD):\n");
scanf("%s", date);
compare_date(date);
return 0;
}
*按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题):
输入某一年的第几天,计算并输出它是这一年的第几月第几日。
/ 函数功能: 对给定的某一年的第几天,计算它是这一年的第几月第几日
函数入口参数:整型变量year,存储年
整型变量yearDay,存储这一年的第几天
函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量
整型指针pDay,指向存储第几日的整型变量
函数返回值: 无 */
void MonthDay(int year, int yearDay, int pMonth, int pDay);
输入提示信息:“Please enter year, yearDay:”
输入格式:"%d,%d"
输出提示信息和格式:“month = %d, day = %d\n”