程序:显示法定格式的日期合同和其他法律文档中经常使用下列日期格式: dated this day of ,19 . 编写程序用来显示这种格式的日期。用户以月/日的格式录入日期,然后计算机显示出“法定”格式的日期: enter date (mm/dd/yy) : 7/19/96 dated this 19th day of july, 1996. 可以使用printf函数实现主要的格式化。然而,还有两个问题:如何为日添加“th”(或者“st”、“nd”、“rd”),以及如何
时间: 2023-05-31 07:21:04 浏览: 268
### 回答1:
将月份从数字转换为英文缩写。可以使用if语句来解决这两个问题。例如,对于日期中的日,可以使用if语句来判断其个位数字,然后根据不同的情况添加不同的后缀。对于月份,可以使用一个字符串数组来存储英文缩写,然后根据用户输入的数字选择相应的缩写。
### 回答2:
本题要求编写程序实现将用户输入的月/日格式的日期转换成法定格式的日期。
首先,我们需要读取用户输入的日期,使用scanf函数实现:
```c
int month, day, year;
printf("Enter date (mm/dd/yy): ");
scanf("%d/%d/%d", &month, &day, &year);
```
接下来,我们需要确定日期的后缀,即“th”、“st”、“nd”或“rd”。可以使用适当的if-else语句来解决:
```c
char suffix;
if (day == 1 || day == 21 || day == 31) {
suffix = 'st';
} else if (day == 2 || day == 22) {
suffix = 'nd';
} else if (day == 3 || day == 23) {
suffix = 'rd';
} else {
suffix = 'th';
}
```
最后,我们使用printf函数输出法定格式的日期:
```c
printf("Dated this %d%c day of ", day, suffix);
switch(month) {
case 1: printf("January"); break;
case 2: printf("February"); break;
case 3: printf("March"); break;
case 4: printf("April"); break;
case 5: printf("May"); break;
case 6: printf("June"); break;
case 7: printf("July"); break;
case 8: printf("August"); break;
case 9: printf("September"); break;
case 10: printf("October"); break;
case 11: printf("November"); break;
case 12: printf("December"); break;
}
printf(", 20%.2d.\n", year);
```
完整代码如下:
```c
#include <stdio.h>
int main()
{
int month, day, year;
char suffix;
printf("Enter date (mm/dd/yy): ");
scanf("%d/%d/%d", &month, &day, &year);
if (day == 1 || day == 21 || day == 31) {
suffix = 'st';
} else if (day == 2 || day == 22) {
suffix = 'nd';
} else if (day == 3 || day == 23) {
suffix = 'rd';
} else {
suffix = 'th';
}
printf("Dated this %d%c day of ", day, suffix);
switch(month) {
case 1: printf("January"); break;
case 2: printf("February"); break;
case 3: printf("March"); break;
case 4: printf("April"); break;
case 5: printf("May"); break;
case 6: printf("June"); break;
case 7: printf("July"); break;
case 8: printf("August"); break;
case 9: printf("September"); break;
case 10: printf("October"); break;
case 11: printf("November"); break;
case 12: printf("December"); break;
}
printf(", 20%.2d.\n", year);
return 0;
}
```
### 回答3:
这是一道关于如何编写程序显示法定格式的日期的题目。首先,题目要求我们编写程序用来显示这种格式的日期。根据题目要求,我们需要让用户输入月/日/yy的格式,再将其转换成法定日期格式:“dated this 19th day of July,1996.”。
在程序设计中,我们需要分为以下几部分:首先是用户输入的部分,我们需要通过scanf函数让用户输入日期;然后是计算日期的部分,根据月份和日期来确定日数和后缀,然后将所有参数传入printf函数中,显示成“dated this 19th day of July,1996.”的格式。
在这个程序中,我们需要注意一些技巧和细节,比如判断每个月的天数、特殊日期的后缀、以及处理日期字符串中的“0”。程序的实现方式可能是这样的:
#include <stdio.h>
int main()
{
int month, day, year;
printf("Enter date (mm/dd/yy): ");
scanf("%d/%d/%d", &month, &day, &year);
// 判断月份和日期,并确定日数和后缀
const char *suffix;
switch (day)
{
case 1:
case 21:
case 31:
suffix = "st";
break;
case 2:
case 22:
suffix = "nd";
break;
case 3:
case 23:
suffix = "rd";
break;
default:
suffix = "th";
break;
}
const char *months[] =
{
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
};
// 将日期字符串转换为法定格式
printf("dated this %d%s day of %s, 20%.2d.\n", day, suffix, months[month - 1], year);
return 0;
}
在这个程序中,我们用到了scanf函数,让用户输入日期,然后根据输入的日期和后缀,将其传入printf函数中,输出法定日期格式。scanf函数可以从标准输入流中读取格式化数据,%d表示读取整数,/是分隔符。
在计算日期的部分,我们用到了switch语句,判断输入日期的后缀。特别地,在处理4日以内的日期时,需要特判。 我们还定义了字符串数组months,用于将数字月份转换为英文月份。
最后,我们将格式化字符串传入printf函数中,使用%d%s%d%s%的格式说明符。%d表示整数,%s表示字符串。我们还用到了两个修饰符,%.2d表示带前导零的两位数,%s表示字符串。这个程序的目的是输出日期,所以我们不需要从计算机获取输入日期的需求。
总结:本题主要考察了C语言的格式化函数和字符串函数的应用。在计算日期后缀时,我们必须逐个处理每个月的特殊日期和后缀。这些细节在程序中非常重要,因为它们能够保证程序的正确性。通过这道题目,我们可以更好地熟悉C语言的一些基本语法,并掌握字符串函数的使用。
阅读全文