自从参加档案管理工作以来,小李发现很多有趣的事情,比如某领导签字时,小李就发现一些有趣的规律,如某领导签字办理的事情,结果不了了之的,大都是签字时有0的,如“2019.11.03”或“2019.11.09”等字样,如果正常处理的,则必然不带0,如“2019.2.3”或“2019.11.9”。遵循档案管理工作必须与实际相一致的原则,请为小李开发一套C语言转换程序,用字符数组的形式输入,并保留这一习惯。要求输出“2019年11月03日”或“2019年11月 3日”字样,并换行。用C语言编码
时间: 2023-11-24 15:05:58 浏览: 177
以下是一个简单的实现,基于字符串的处理,可以将输入的日期字符串转换为指定格式的输出字符串:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[20];
printf("请输入日期(格式:yyyy.mm.dd):");
scanf("%s", input);
char year[5], month[3], day[3];
sscanf(input, "%[^.].%[^.].%s", year, month, day);
int day_int = atoi(day);
printf("%s年%s月", year, month);
if (day_int < 10) {
printf("0");
}
printf("%d日\n", day_int);
return 0;
}
```
代码中使用了`sscanf()`函数来解析输入的日期字符串,提取出年、月、日三个部分。然后根据日的值是否小于10,来决定输出的日期格式是否包含前导0。
相关问题
自从参加档案管理工作以来,小李发现很多有趣的事情,比如某领导签字时,小李就发现一些有趣的规律,如某领导签字办理的事情,结果不了了之的,大都是签字时有0的,如“2019.02.03”或“2019.11.09”等字样,如果正常处理的,则必然不带0,如“2019.2.3”或“2019.11.9”。遵循档案管理工作必须与实际相一致的原则,请为小李开发一套C语言转换程序,用字符数组的形式输入,并保留这一习惯。要求输出“2019年02月03日”或“2019年 2月 3日”字样,并换行。
以下是一种可能的解法,需要注意的是,由于输出格式的不同,需要分别处理月份和日期的前导0。
```c
#include <stdio.h>
#include <string.h>
int main() {
char date[11];
printf("请输入日期:");
scanf("%s", date);
int year, month, day;
sscanf(date, "%d.%d.%d", &year, &month, &day);
printf("%d年", year);
if (month < 10) {
printf("0%d月", month);
} else {
printf("%d月", month);
}
if (day < 10) {
printf("0%d日", day);
} else {
printf("%d日", day);
}
printf("\n");
return 0;
}
```
该程序先读入一个字符串形式的日期,然后使用 `sscanf()` 函数将其转换为整数形式的年、月、日。接着根据输出格式分别判断月份和日期是否需要前导0,并输出结果。注意最后要换行。
利用c语言编写自从参加档案管理工作以来,小李发现很多有趣的事情,比如某领导签字时,小李就发 21 return 0: 现一些有趣的规律,如某领导签字办理的事情,结果不了了之的,大都是签字时有0的, 22 23 如“2019.02.03”或“2019.11.09”等字样,如果正常处理的,则必然不带0,如 “20192.3”或“201911.9”遵循档客管理工作必须与实际相一致的原则,请为小李开发一套C语言转换程序,用字符数组的形式输入,并保留这一习惯。要求输出“2019年02月03日”或“2019年2月3日”字样,并换行。
以下是实现该功能的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char date[11];
printf("请输入日期(格式为YYYY.MM.DD):");
scanf("%s", date);
char year[5], month[3], day[3];
strncpy(year, date, 4);
strncpy(month, date + 5, 2);
strncpy(day, date + 8, 2);
year[4] = '\0';
month[2] = '\0';
day[2] = '\0';
printf("%s年", year);
if (month[0] == '0') {
printf("%c月", month[1]);
} else {
printf("%s月", month);
}
if (day[0] == '0') {
printf("%c日\n", day[1]);
} else {
printf("%s日\n", day);
}
return 0;
}
```
这段代码首先读取用户输入的日期,然后从中提取出年、月、日三个部分。接着根据习惯输出“年”、“月”、“日”这三个字,并在“月”和“日”的前面判断是否需要去除前导0。最后换行并返回0表示程序正常结束。
阅读全文