C语言代码问题,有学霸能看看不

img


rt 题目4,有会的学霸能教一教吗。根据题目上这些要求,我实在是写不出来了

这里有一份可以输出星座、属性、季节的代码,性格可以自己找文字贴上去就行:


#include<stdio.h>
int main()
{
    void constellation(int year, int month, int day);
    void zodiac(int year);
    void season(int month);
    int year, month, day;
    printf("请输入一个年、月、日(空格隔开):\n");
    scanf_s("%d %d %d", &year, &month, &day);    /*输入变量*/
    constellation(year,month,day);
    zodiac(year);
    season(month);
    return 0;
}
void season(int month)
{
    if (month >= 3 && month <= 5)
        printf("你出生的季节为春季\n");
    else if (month >= 6 && month <= 8)
        printf("你出生的季节为夏季\n");
    else if (month >= 9 && month <= 11)
        printf("你出生的季节为秋季\n");
    else if (month >= 11 || month <= 2)
        printf("你出生的季节为冬季\n");
}
void zodiac(int year)
{
    char p[12][4] = { "鼠","牛","虎","兔","龙","蛇","马","羊","鸡","猴","狗","猪" };
    int year0 = 1996;   //年是鼠年,作为基准
    int n;
    n = year - year0;
    n = n % 12;
    if (n < 0) n += 12;   //求余时,n可能是负数,如果是负数则加12 
    printf("你属%s\n", p[n]);

}
void constellation(int year, int month, int day)         //求星座
{
    if ((month == 12 && day >= 21) || (month == 1 && day <= 19))
    {
        printf("你的星座是摩羯座,性格为:\n");
    }
    else if ((month == 1 && day >= 19) || (month == 2 && day <= 18))
    {
        printf("你的星座是水瓶座,性格为:\n");
    }
    else if ((month == 2 && day >= 18) || (month == 3 && day <= 20))
        printf("你的星座是双鱼座,性格为:\n");
    else if ((month == 3 && day >= 21) || (month == 4 && day <= 19))
        printf("你的星座是白羊座,性格为:\n");
    else if ((month == 4 && day >= 20) || (month == 5 && day <= 20))
        printf("你的星座是金牛座,性格为:\n");
    else if ((month == 5 && day >= 21) || (month == 6 && day <= 21))
        printf("你的星座是双子座,性格为:\n");
    else if ((month == 6 && day >= 22) || (month == 7 && day <= 22))
        printf("你的星座是巨蟹座,性格为:\n");
    else if ((month == 7 && day >= 23) || (month == 8 && day <= 22))
        printf("你的星座是狮子座,性格为:\n");
    else if ((month == 8 && day >= 23) || (month == 9 && day <= 22))
        printf("你的星座是处女座,性格为:\n");
    else if ((month == 9 && day >= 23) || (month == 10 && day <= 23))
        printf("你的星座是天秤座,性格为:\n");
    else if ((month == 10 && day >= 24) || (month == 11 && day <= 22))
        printf("你的星座是天蝎座,性格为:\n");
    else
        printf("你的星座是射手座,性格为:\n");
}

(1)找一个鼠年的公元纪年作为基准, 然后用输入和这个基准年份做差取绝对值再与 12 取模 作为索引,从属相数组中获得属相.季节和星座只能用两个 switch case 来做了.
(2) 网上去复制一些现成的,保存到字符串数组或者索引文件里,搞数据库也成,然后直接输出
(3)去找KMI的计算公式,然后网上随便扒拉一点下来,和第二个一样,设定不同的范围,匹配上就输出固定内容即可