c語言根據(jù)用戶輸入的出生年份并計算出當(dāng)前年齡
詢問用戶的出生年份并計算他們在當(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)前日期,生日 計算你現(xiàn)在年齡
#include<stdio.h> int main() { int y0,m0,d0; int y1,m1,d1; int y,m,d; printf("請輸入學(xué)生的生日(年:y0.月:m0.日:d0)\n"); printf("請輸入當(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("實際年齡為:年=%d,月=%d,日=%d",y,m,d); return 0; }
代碼三
輸入一個人的出生年月日及當(dāng)前年月日求那個人現(xiàn)在的年齡,注意平年、閏年的判斷。
#include<stdio.h> //定義了三個變量類型、一些宏和各種函數(shù)來執(zhí)行輸入和輸出 int main() { int year, month, day, newyear, newmonth, newday, wang; //定義出生和當(dāng)前的年、月、日 printf("請輸入生日(包含年月日,請用空格隔開):\n"); scanf_s("%d %d %d", &year, &month, &day); printf("請輸入當(dā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ù)身份證號計算年齡
可以把這個方法寫成一個工具類方便以后在項目中調(diào)用,以下是寫好的方法可以直接拿去用
注:(此方法計算的是虛歲年齡不是實歲年齡)
//根據(jù)身份證號計算年齡 //身份證號 //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)前時間的年、月、日 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) {// 選了未來的年份 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) {// 當(dāng)前月>生日月 } else if (monthMinus == 0) {// 同月份的,再根據(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語言根據(jù)用戶輸入的出生年份并計算出當(dāng)前年齡的文章就介紹到這了,更多相關(guān)c語言計算年齡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt5.9實現(xiàn)簡單的多線程實例(類QThread)
Qt開啟多線程,主要用到類QThread。用一個類繼承QThread,然后重新改寫虛函數(shù)run()。具有一定的參考價值,感興趣的可以了解一下2021-09-09