c語(yǔ)言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡
詢問(wèn)用戶的出生年份并計(jì)算他們?cè)诋?dāng)年的年齡。
代碼一
#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;
}代碼二
輸入當(dāng)前日期,生日 計(jì)算你現(xiàn)在年齡
#include<stdio.h>
int main()
{
int y0,m0,d0;
int y1,m1,d1;
int y,m,d;
printf("請(qǐng)輸入學(xué)生的生日(年:y0.月:m0.日:d0)\n");
printf("請(qǐng)輸入當(dāng)前日期(年: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("實(shí)際年齡為:年=%d,月=%d,日=%d",y,m,d);
return 0;
}代碼三
輸入一個(gè)人的出生年月日及當(dāng)前年月日求那個(gè)人現(xiàn)在的年齡,注意平年、閏年的判斷。
#include<stdio.h> //定義了三個(gè)變量類型、一些宏和各種函數(shù)來(lái)執(zhí)行輸入和輸出
int main() {
int year, month, day, newyear, newmonth, newday, wang; //定義出生和當(dāng)前的年、月、日
printf("請(qǐng)輸入生日(包含年月日,請(qǐng)用空格隔開):\n");
scanf_s("%d %d %d", &year, &month, &day);
printf("請(qǐng)輸入當(dāng)前日期(包含年月日,請(qǐng)用空格隔開):\n");
scanf_s("%d %d %d", &newyear, &newmonth, &newday);
wang = newyear - year; //用當(dāng)前年份減去出生年份,并賦值給wang
if (newmonth - month > 0) { //如果出生月份大于當(dāng)前月份,則直接輸出
printf("當(dāng)前年齡為:\n");
printf("%d\n", wang);
}
else {
if (newmonth - month == 0) { //如果月份相減等于0,則執(zhí)行日的判斷
if (newday >= day) { //如果當(dāng)前日大于出生的日,則輸出
printf("當(dāng)前年齡為:\n");
printf("%d\n", wang);
}
else {
printf("當(dāng)前年齡為:\n");
printf("%d\n", wang - 1); //如果日期相減條件為假,則wang減去1
}
}
else {
printf("當(dāng)前年齡為:\n");
printf("%d\n", wang - 1); //如果月份相減條件為假,則wang減去1
}
}
return 0;
}代碼四
根據(jù)出生日期計(jì)算年齡或者根據(jù)身份證號(hào)計(jì)算年齡
可以把這個(gè)方法寫成一個(gè)工具類方便以后在項(xiàng)目中調(diào)用,以下是寫好的方法可以直接拿去用
注:(此方法計(jì)算的是虛歲年齡不是實(shí)歲年齡)
//根據(jù)身份證號(hào)計(jì)算年齡
//身份證號(hào)
//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]);
// 得到當(dāng)前時(shí)間的年、月、日
Calendar cal = Calendar.getInstance();
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayNow = cal.get(Calendar.DATE);
// 用當(dāng)前年月日減去生日年月日
int yearMinus = yearNow - selectYear;
int monthMinus = monthNow - selectMonth;
int dayMinus = dayNow - selectDay;
int age = yearMinus;// 先大致賦值
if (yearMinus < 0) {// 選了未來(lái)的年份
age = 0;
} else if (yearMinus == 0) {// 同年的,要么為1,要么為0
if (monthMinus < 0) {// 選了未來(lái)的月份
age = 0;
} else if (monthMinus == 0) {// 同月份的
if (dayMinus < 0) {// 選了未來(lái)的日期
age = 0;
} else if (dayMinus >= 0) {
age = 1;
}
} else if (monthMinus > 0) {
age = 1;
}
} else if (yearMinus > 0) {
if (monthMinus < 0) {// 當(dāng)前月>生日月
} else if (monthMinus == 0) {// 同月份的,再根據(jù)日期計(jì)算年齡
if (dayMinus < 0) {
} else if (dayMinus >= 0) {
age = age + 1;
}
} else if (monthMinus > 0) {
age = age + 1;
}
}
System.out.println(age );到此這篇關(guān)于c語(yǔ)言根據(jù)用戶輸入的出生年份并計(jì)算出當(dāng)前年齡的文章就介紹到這了,更多相關(guān)c語(yǔ)言計(jì)算年齡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言 用while循環(huán)求和的平均值操作
這篇文章主要介紹了C語(yǔ)言 用while循環(huán)求和的平均值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
C語(yǔ)言 makefile學(xué)習(xí)及實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了C語(yǔ)言 makefile學(xué)習(xí)及實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-03-03
Qt創(chuàng)建SQlite數(shù)據(jù)庫(kù)的示例代碼
本文主要介紹了Qt創(chuàng)建SQlite數(shù)據(jù)庫(kù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05

