C语言实现计算星座(附带源码)

C 语言实现计算星座

项目简介

星座是根据出生日期来划分的,每个星座对应着特定的日期范围。每个星座的日期范围大致如下:

  • 白羊座(Aries):3月21日 - 4月19日
  • 金牛座(Taurus):4月20日 - 5月20日
  • 双子座(Gemini):5月21日 - 6月20日
  • 巨蟹座(Cancer):6月21日 - 7月22日
  • 狮子座(Leo):7月23日 - 8月22日
  • 处女座(Virgo):8月23日 - 9月22日
  • 天秤座(Libra):9月23日 - 10月22日
  • 天蝎座(Scorpio):10月23日 - 11月21日
  • 射手座(Sagittarius):11月22日 - 12月21日
  • 摩羯座(Capricorn):12月22日 - 1月19日
  • 水瓶座(Aquarius):1月20日 - 2月18日
  • 双鱼座(Pisces):2月19日 - 3月20日

本项目的目标是根据用户输入的出生日期,计算并返回对应的星座。

项目实现思路
  1. 输入数据

    • 用户输入出生的年月日。
  2. 判断星座

    • 我们通过输入的日期来判断出生日期对应的星座。每个星座的日期范围是固定的,所以只需要判断输入的日期是否落在特定星座的日期范围内。
  3. 输出结果

    • 输出用户对应的星座名称。

代码实现

#include <stdio.h>

// 函数声明:计算并返回星座
const char* get_zodiac_sign(int month, int day);

int main() {
    int month, day;

    // 用户输入出生年月日
    printf("Enter your birth month (1-12): ");
    scanf("%d", &month);
    printf("Enter your birth day (1-31): ");
    scanf("%d", &day);

    // 获取对应的星座
    const char* zodiac_sign = get_zodiac_sign(month, day);

    // 输出对应的星座
    printf("Your zodiac sign is: %s\n", zodiac_sign);

    return 0;
}

// 计算并返回星座名称
const char* get_zodiac_sign(int month, int day) {
    // 白羊座:3月21日 - 4月19日
    if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) {
        return "Aries (白羊座)";
    }
    // 金牛座:4月20日 - 5月20日
    if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) {
        return "Taurus (金牛座)";
    }
    // 双子座:5月21日 - 6月20日
    if ((month == 5 && day >= 21) || (month == 6 && day <= 20)) {
        return "Gemini (双子座)";
    }
    // 巨蟹座:6月21日 - 7月22日
    if ((month == 6 && day >= 21) || (month == 7 && day <= 22)) {
        return "Cancer (巨蟹座)";
    }
    // 狮子座:7月23日 - 8月22日
    if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) {
        return "Leo (狮子座)";
    }
    // 处女座:8月23日 - 9月22日
    if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) {
        return "Virgo (处女座)";
    }
    // 天秤座:9月23日 - 10月22日
    if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) {
        return "Libra (天秤座)";
    }
    // 天蝎座:10月23日 - 11月21日
    if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) {
        return "Scorpio (天蝎座)";
    }
    // 射手座:11月22日 - 12月21日
    if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) {
        return "Sagittarius (射手座)";
    }
    // 摩羯座:12月22日 - 1月19日
    if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) {
        return "Capricorn (摩羯座)";
    }
    // 水瓶座:1月20日 - 2月18日
    if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) {
        return "Aquarius (水瓶座)";
    }
    // 双鱼座:2月19日 - 3月20日
    if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {
        return "Pisces (双鱼座)";
    }

    // 如果输入的日期不合法,返回一个错误提示
    return "Invalid date!";
}

代码解读

  1. get_zodiac_sign 函数

    • 该函数接受两个参数:month(月份)和 day(日期),并根据日期范围返回对应的星座名称。
    • 我们通过多个 if 条件语句判断日期是否在各个星座的日期范围内。比如,白羊座从3月21日到4月19日,如果用户的出生日期在此范围内,则返回 "Aries"
    • 通过逐一比较,函数返回对应星座的名称。
  2. main 函数

    • 用户通过标准输入输入出生的月份和日期,然后调用 get_zodiac_sign 函数获取对应的星座名称。
    • 最后输出结果。
  3. 输入与输出

    • 用户输入出生的月份(1-12)和日期(1-31)。
    • 程序根据输入的日期判断并输出相应的星座名称。

示例输出

假设用户输入以下内容:

Enter your birth month (1-12): 5
Enter your birth day (1-31): 15

输出结果为:

Your zodiac sign is: Taurus (金牛座)

再举一个例子:

Enter your birth month (1-12): 8
Enter your birth day (1-31): 5

输出结果为:

Your zodiac sign is: Leo (狮子座)

项目总结

  1. 功能实现

    • 本项目实现了根据出生日期计算星座的功能。通过输入日期,并根据星座的日期范围判断并输出相应的星座。
  2. 优化与扩展

    • 在本项目中,星座的判断逻辑是通过一系列的条件判断实现的,这样的方式非常直观,但对于更多复杂的占星学计算(如计算上升星座、月亮星座等),可能需要引入更为复杂的占星学模型。
    • 如果需要更进一步的扩展,可以加入星座的性格分析功能,即根据星座输出对应的性格描述。
  3. 应用场景

    • 该程序可以在个人娱乐、占星学应用、甚至社交平台中使用。通过根据出生日期判断星座,可以为用户提供星座相关的咨询和推荐。
  4. 项目挑战与解决方案

    • 本项目的挑战在于正确处理日期范围和判断闰年的日期。然而,由于日期范围在西方占星学中已是固定的,所以该部分的实现相对简单。

通过本项目的实现,我们不仅学会了如何根据日期判断星座,同时也加深了对条件判断、日期范围判断的理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值