C语言输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
时间: 2024-01-21 12:16:28 浏览: 215
可以使用`scanf`函数和格式化字符串来实现输入日期。具体步骤如下:
1. 定义三个整型变量`month`、`day`和`year`,分别表示月、日、年。
2. 使用`scanf`函数和格式化字符串`"%d-%d-%d"`从标准输入流中读取日期,并将其分别存储在`month`、`day`和`year`变量中。
3. 输出读取到的日期,可以使用`printf`函数和格式化字符串`"%d年%d月%d日"`,其中`%d`表示输出整型变量的值。
示例代码如下:
```c
#include <stdio.h>
int main()
{
int month, day, year;
// 输入日期
scanf("%d-%d-%d", &month, &day, &year);
// 输出日期
printf("%d年%d月%d日\n", year, month, day);
return 0;
}
```
假设输入的日期为`06-30-2021`,则输出为`2021年6月30日`。
相关问题
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。 输出格式: 在一行中按照“yyyy-mm-dd”的格式给出年、月、日。 输入样例: 03-15-2017 输出样例: 2017-03-15用C语言编写
你可以使用C语言中的结构体和库函数`strptime`和`strftime`来实现这个转换。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define INPUT_FORMAT "%m-%d-%Y"
#define OUTPUT_FORMAT "%Y-%m-%d"
int main() {
char input_date[11];
scanf("%s", input_date); // 读取输入日期
struct tm timeinfo;
if (strptime(input_date, INPUT_FORMAT, &timeinfo)) { // 解析输入格式
time_t timestamp = mktime(&timeinfo); // 转换为时间戳
struct tm* new_time = localtime(×tamp); // 格式化为本地时间
char output_date[11];
strftime(output_date, sizeof(output_date), OUTPUT_FORMAT, new_time); // 输出格式化
printf("%s\n", output_date);
} else {
printf("Invalid date format.\n");
}
return 0;
}
```
在这个程序中,我们首先读取用户输入的字符串,然后使用`strptime`将其解析为`struct tm`结构,接着将这个结构转换为Unix时间戳,最后再次格式化为指定的输出格式。
注意:这个程序假定输入的日期格式始终是`"mm-dd-yyyy"`。如果需要处理更复杂的输入情况,可能需要添加额外的错误检查。
C语言世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。 输入格式: 输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。 输出格式: 在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
```c
#include <stdio.h>
int main()
{
int month, day, year;
scanf("%d-%d-%d", &month, &day, &year);
printf("%04d-%02d-%02d", year, month, day);
return 0;
}
```
输入样例:
```
12-31-2021
```
输出样例:
```
2021-12-31
```
阅读全文