服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - c语言根据用户输入的出生年份并计算出当前年龄

c语言根据用户输入的出生年份并计算出当前年龄

2023-05-23 14:30mdxy-dxy C/C++

这篇文章主要介绍了c语言根据用户输入的出生年份并计算出当前年龄,需要的朋友可以参考下

询问用户的出生年份并计算他们在当年的年龄。

代码一

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#define CURRENTYEAR 2023
 
int main()
{
    int yearBorn, age;
    printf("What year were you born?\n");
    scanf(" %d", &yearBorn);
 
    if (yearBorn > CURRENTYEAR){
        printf("wrong input!\n");
        printf("What year were you born?\n");
        scanf(" %d", &yearBorn);
    }
 
    age = CURRENTYEAR - yearBorn;
    printf("\nSo this year you will turn %d on your birthday!\n",age);
 
    if ((yearBorn % 4) == 0){
        printf("\nYou were born in a Leap Year--cool!\n");
    }
    return 0;
}

代码二

输入当前日期,生日 计算你现在年龄

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<stdio.h>
int main()
{
    int y0,m0,d0;
    int y1,m1,d1;
    int y,m,d;
    printf("请输入学生的生日(年:y0.月:m0.日:d0)\n");
    printf("请输入当前日期(年:y0.月:m0.日:d0)\n");
    scanf("%d%d%d",&y0,&m0,&d0);
    scanf("%d%d%d",&y1,&m1,&d1);
    if(d1<d0)
        {
            m1--;//m1=m1-1,m1-=1
            switch(m1)
            {
            case 2:d=d1+28-d0;break;
            case 4:d=d1+30-d0;break;
            case 6:d=d1+30-d0;break;
            case 9:d=d1+30-d0;break;
            case 11:d=d1+30-d0;break;
            }
        }
    else
            d=d1-d0;
    if(m1<m0)
        {
        y1--;
        m=m1+12-m0;
        }
    else
        {
        m=m1-m0;
        y=y1-y0;
        }
 
printf("实际年龄为:年=%d,月=%d,日=%d",y,m,d);
return 0;
}

代码三

输入一个人的出生年月日及当前年月日求那个人现在的年龄,注意平年、闰年的判断。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>                        //定义了三个变量类型、一些宏和各种函数来执行输入和输出
 
int main() {
    int year, month, day, newyear, newmonth, newday, wang;                        //定义出生和当前的年、月、日
    printf("请输入生日(包含年月日,请用空格隔开):\n");
    scanf_s("%d %d %d", &year, &month, &day);
    printf("请输入当前日期(包含年月日,请用空格隔开):\n");
    scanf_s("%d %d %d", &newyear, &newmonth, &newday);
    wang = newyear - year;                        //用当前年份减去出生年份,并赋值给wang
    if (newmonth - month > 0) {                    //如果出生月份大于当前月份,则直接输出
        printf("当前年龄为:\n");
        printf("%d\n", wang);
    }
    else {
        if (newmonth - month == 0) {            //如果月份相减等于0,则执行日的判断
            if (newday >= day) {                //如果当前日大于出生的日,则输出
                printf("当前年龄为:\n");
                printf("%d\n", wang);
            }
            else {
                printf("当前年龄为:\n");
                printf("%d\n", wang - 1);        //如果日期相减条件为假,则wang减去1
            }
        }
        else {
            printf("当前年龄为:\n");
            printf("%d\n", wang - 1);            //如果月份相减条件为假,则wang减去1
        }
    }
    return 0;
}

代码四

根据出生日期计算年龄或者根据身份证号计算年龄

可以把这个方法写成一个工具类方便以后在项目中调用,以下是写好的方法可以直接拿去用
注:(此方法计算的是虚岁年龄不是实岁年龄)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//根据身份证号计算年龄
//身份证号
//String certNo = "430181200003161010";
//String birthTimeString = certN.substring(6,10)+"-"+certNo.substring(10,12)+"-"+certNo.substring(12,14);
//生日日期
String birthTimeString = "2022-03-16";
// 先截取到字符串中的年、月、日
String strs[] = birthTimeString.trim().split("-");
int selectYear = Integer.parseInt(strs[0]);
int selectMonth = Integer.parseInt(strs[1]);
int selectDay = Integer.parseInt(strs[2]);
// 得到当前时间的年、月、日
Calendar cal = Calendar.getInstance();
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayNow = cal.get(Calendar.DATE);
 
// 用当前年月日减去生日年月日
int yearMinus = yearNow - selectYear;
int monthMinus = monthNow - selectMonth;
int dayMinus = dayNow - selectDay;
 
int age = yearMinus;// 先大致赋值
if (yearMinus < 0) {// 选了未来的年份
    age = 0;
} else if (yearMinus == 0) {// 同年的,要么为1,要么为0
    if (monthMinus < 0) {// 选了未来的月份
        age = 0;
    } else if (monthMinus == 0) {// 同月份的
        if (dayMinus < 0) {// 选了未来的日期
            age = 0;
        } else if (dayMinus >= 0) {
            age = 1;
        }
    } else if (monthMinus > 0) {
        age = 1;
    }
} else if (yearMinus > 0) {
    if (monthMinus < 0) {// 当前月>生日月
    } else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄
        if (dayMinus < 0) {
        } else if (dayMinus >= 0) {
            age = age + 1;
        }
    } else if (monthMinus > 0) {
        age = age + 1;
    }
}
System.out.println(age );

到此这篇关于c语言根据用户输入的出生年份并计算出当前年龄的文章就介绍到这了,更多相关c语言计算年龄内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

延伸 · 阅读

精彩推荐
  • C/C++C++ Dijkstra算法之求图中任意两顶点的最短路径

    C++ Dijkstra算法之求图中任意两顶点的最短路径

    这篇文章主要为大家详细介绍了用C++经典算法-Dijkstra算法求任意两顶点之间的最短路径,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小...

    是牛大春呀12042022-02-28
  • C/C++深入浅析C++ traits技术

    深入浅析C++ traits技术

    traits就是提取“被传进的对象”对应的返回类型,让同一个接口实现对应的功能。因为STL的算法和容器是分离的,两者通过迭代器链接,本文通过实例代码...

    Theoyuan7742021-11-09
  • C/C++C语言统计字符个数代码分享

    C语言统计字符个数代码分享

    本文给大家分享的是2则C语言实现统计字符个数的代码,非常的简单实用,小伙伴们根据自己的项目需求自由选择吧。...

    C语言教程网3922021-03-01
  • C/C++C语言指针用法总结

    C语言指针用法总结

    本文详细讲解了C语言指针用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    algsup8952022-07-13
  • C/C++Pipes实现LeetCode(192.单词频率)

    Pipes实现LeetCode(192.单词频率)

    这篇文章主要介绍了Pipes实现LeetCode(192.单词频率),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    Grandyang6172021-12-13
  • C/C++C语言编程C++自定义个性化类型

    C语言编程C++自定义个性化类型

    这篇文章主要介绍了C语言编程中如何来自定义C++个性化类型,文中附含详细的示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助...

    小码农UU5692022-01-17
  • C/C++vc++实现的tcp socket客户端和服务端示例

    vc++实现的tcp socket客户端和服务端示例

    这篇文章主要介绍了vc++实现的tcp socket客户端和服务端示例,需要的朋友可以参考下...

    C++教程网10512021-01-16
  • C/C++c语言打印输出双引号的方法示例

    c语言打印输出双引号的方法示例

    这篇文章主要介绍了c语言打印输出双引号的方法,大家参考使用吧...

    C语言教程网11092021-01-10