C语言实例_26之根据输入计算星期几

1. 问题

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

2. 实现思路

  • 思路一:嵌套if-else语句实现
    • 首先接收用户输入的第一个字母,使用if-else语句进行判断。如果输入的是M,则直接判断为星期一(Monday);如果是T,由于星期二(Tuesday)和星期四(Thursday)首字母都是T,所以需要再次提示用户输入第二个字母,根据第二个字母进一步判断是星期二还是星期四,比如第二个字母是u则为星期二,是h则为星期四;同理,若输入的是W,则为星期三(Wednesday),若输入的是F,则为星期五(Friday),若输入的是S,因为星期六(Saturday)和星期日(Sunday)首字母都是S,同样需要再输入第二个字母来区分,比如第二个字母是a则为星期六,是u则为星期日。
  • 思路二:switch语句结合if语句实现
    • 先接收用户输入的第一个字母,用switch语句对其进行分类判断。当输入的字母为MWF时,可以直接确定对应的星期几。而对于输入TS的情况,由于存在两种可能的星期与之对应,所以在相应的case分支里,再提示用户输入第二个字母,然后通过if语句根据第二个字母来准确判断到底是哪个具体的星期。

3. 实例代码

实现方式一:嵌套if-else语句实现

#include <stdio.h>
#include <ctype.h>

int main() {
    char firstLetter;
    char secondLetter;
    printf("请输入星期几的第一个字母(大写):");
    scanf(" %c", &firstLetter);
    firstLetter = toupper(firstLetter);

    if (firstLetter == 'M') {
        printf("是星期一(Monday)。\n");
    } else if (firstLetter == 'T') {
        printf("请输入第二个字母(大写):");
        scanf(" %c", &secondLetter);
        secondLetter = toupper(secondLetter);
        if (secondLetter == 'U') {
            printf("是星期二(Tuesday)。\n");
        } else if (secondLetter == 'H') {
            printf("是星期四(Thursday)。\n");
        } else {
            printf("输入的字母不符合要求。\n");
        }
    } else if (firstLetter == 'W') {
        printf("是星期三(Wednesday)。\n");
    } else if (firstLetter == 'F') {
        printf("是星期五(Friday)。\n");
    } else if (firstLetter == 'S') {
        printf("请输入第二个字母(大写):");
        scanf(" %c", &secondLetter);
        secondLetter = toupper(secondLetter);
        if (secondLetter == 'A') {
            printf("是星期六(Saturday)。\n");
        } else if (secondLetter == 'U') {
            printf("是星期日(Sunday)。\n");
        } else {
            printf("输入的字母不符合要求。\n");
        }
    } else {
        printf("输入的字母不符合要求。\n");
    }

    return 0;
}

实现方式二:switch语句结合if语句实现

#include <stdio.h>
#include <ctype.h>

int main() {
    char firstLetter;
    char secondLetter;
    printf("请输入星期几的第一个字母(大写):");
    scanf(" %c", &firstLetter);
    firstLetter = toupper(firstLetter);

    switch (firstLetter) {
    case 'M':
        printf("是星期一(Monday)。\n");
        break;
    case 'T':
        printf("请输入第二个字母(大写):");
        scanf(" %c", &secondLetter);
        secondLetter = toupper(secondLetter);
        if (secondLetter == 'U') {
            printf("是星期二(Tuesday)。\n");
        } else if (secondLetter == 'H') {
            printf("是星期四(Thursday)。\n");
        } else {
            printf("输入的字母不符合要求。\n");
        }
        break;
    case 'W':
        printf("是星期三(Wednesday)。\n");
        break;
    case 'F':
        printf("是星期五(Friday)。\n");
        break;
    case 'S':
        printf("请输入第二个字母(大写):");
        scanf(" %c", &secondLetter);
        secondLetter = toupper(secondLetter);
        if (secondLetter == 'A') {
            printf("是星期六(Saturday)。\n");
        } else if (secondLetter == 'U') {
            printf("是星期日(Sunday)。\n");
        } else {
            printf("输入的字母不符合要求。\n");
        }
        break;
    default:
        printf("输入的字母不符合要求。\n");
    }

    return 0;
}

4. 输出结果

image.png
image.png
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FreeLikeTheWind.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值