基础c 语言 08:输入年,月,日计算年龄,生肖和星座

题目:

        输入年,月,日计算年龄,生肖和星座

解题思路:

获取用户输入:使用scanf函数分别获取用户输入的年份、月份和天数。

  1. 计算年龄:获取当前时间,并将其转换为本地时间,然后提取年份,与用户的出生年份相减得到年龄。如果用户输入的月份在当前月份之前,年龄减1。
  2. 计算属相:使用一个字符串数组zodiacs存储属相信息,通过计算年份与4的余数,确定属相的索引位置,然后输出对应的属相。
  3. 计算星座:使用一个字符串数组constellations存储星座信息,通过判断月份,确定星座的索引位置,然后输出对应的星座。

程序源码:

#include 
void main(void)
{
    int year, month, day;int index; int age; struct tm* ltm ;time_t now;
    int t = 0;int now_year;
	  // 计算属相  
    char* zodiacs[] = { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };
	 char* constellations[] = { "摩羯座", "水瓶座", "双鱼座","白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座" };
    printf("请输入您的出生年份:");
    scanf("%d", &year);
    printf("请输入您的出生月份:");
    scanf("%d", &month);
    printf("请输入您的出生天数:");
    scanf("%d", &day);

    // 计算年龄  
    now = time(NULL);
    ltm = localtime(&now);
    now_year = 1900 + ltm->tm_year;
    age = now_year - year;
    if (month > 0 && month <= ltm->tm_mon + 1) {
        age--;
    }
    printf("您的年龄是 %d 岁\n", age);

  
    index = (year - 4) % 12;
    if (index < 0) {
        index += 12;
    }
    printf("您的属相是 %s\n", zodiacs[index]);

    // 计算星座  
  
    switch (month)
    {
    case 2:t = 19; break;
    case 3:case 5:t = 21; break;
    case 1:case 4:t = 20; break;
    case 6:case 12: t = 22; break;
    case 7:case 8:case 9:case 11: t = 23; break;
    case 10:t = 24; break;
    }
    if (day >= t) month++; // 在一个月的t号之后月份加一
    if (month == 13)month = 1;
    printf("您的星座是 %s\n", constellations[month - 1]);



}

你可能感兴趣的:(c,c语言,算法,开发语言)