程序:显示法定格式的日期合同和其他法律文档中经常使用下列日期格式: 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”),以及如何使用单词代替数字显示月份。幸运的是,switch语句可以很好地解决这两种问题:用一个switch语句负责显示日的后缀,再用另一个switch语句显示出月份名。注意,11日、12日、13日对应的英文是th结尾。 **输入格式要求:"%d/%d/%d" 提示信息:"enter date (mm/dd/yy):" "dated this %d" "st/nd/rd/th" " day of " "january/february/.../december" 如果输入的日期不在合法范围内,则输出"input error!\n"。 **输出格式要求:", 19%.2d.\n"
时间: 2023-06-05 18:47:15 浏览: 287
程序如下:
#include <stdio.h>
int main()
{
int month, day, year;
printf("enter date (mm/dd/yy): ");
scanf("%d/%d/%d", &month, &day, &year);
// 判断输入日期是否合法
if (month < 1 || month > 12 || day < 1 || day > 31 || year < 0) {
printf("input error!\n");
return 0;
}
// 显示日期
printf("dated this %d", day);
switch (day) {
case 1: case 21: case 31:
printf("st");
break;
case 2: case 22:
printf("nd");
break;
case 3: case 23:
printf("rd");
break;
default:
printf("th");
break;
}
printf(" day of ");
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(", 19%.2d.\n", year);
return 0;
}
### 回答2:
本题要求编写程序以显示法定格式的日期。具体要求是用户输入月/日/年,然后程序将其转换成“dated this 日th/nd/st 月名,年”的格式进行显示。为了实现这个目的,可以使用printf函数进行主要的格式化,在此基础上需要使用switch语句来确定日后缀和月份英文的显示。
首先,我们需要定义三个变量来表示用户输入的月、日、年,使用scanf函数将其输入,输入格式为"%d/%d/%d",同时要求提示输入信息为"enter date (mm/dd/yy):"。然后,需要进行合法性检查,判断输入的日期是否在合法范围内。如果不合法,则需要输出提示信息"input error!\n"。
接下来,需要定义一个日后缀的变量suffix,使用switch语句根据输入的日选择相应的后缀,一般情况下按照英语语法添加th即可,但11、12、13这三个数字结尾则需要添加th后缀。然后,需要定义一个月份的变量month,同样使用switch语句根据用户输入的月份选择相应的英文显示。
最后,使用printf函数输出“dated this 日th/nd/st 月名,年”的格式,其中日后缀和月份英文使用之前定义的变量进行替换。输出格式要求为", 19%.2d.\n",其中%.2d表示输出两位数字的年份,前面的逗号和空格是为了保证法定格式的准确性。
总的来说,本题涉及到了输入输出格式化、判断结构和循环结构的应用,可以增强对C语言基本语法和流程控制的理解和掌握。
阅读全文