因此,对于一个学校项目,我正在尝试制作一个程序,根据您的出生日期计算您的年龄。我是用C ++编写的。因为我还在学习,请不要介意使用不必要/额外的代码。请注意:变量名称和注释位于荷兰语中。当使用例如9/6/1996作为我的出生日期时,该程序工作正常,但是当我使用9/6/1969时它返回30,换句话说它不能正常工作并且问题似乎与某些事情有关这一年。关于如何解决这个问题的任何想法?先感谢您。 我的代码:
#include <iostream>
using namespace std;
int main() {
int huidigJaar = 2014;
int huidigeMaand = 8;
int huidigeDag = 19;
int geboorteJaar = 1;
int geboorteMaand = 1;
int geboorteDag = 1;
int totaalMaanden = 1;
cout << "Wat is je geboortejaar?";
cin >> geboorteJaar;
cout << "Wat is je geboortemaand?";
cin >> geboorteMaand;
cout << "Wat is je geboortedag?";
cin >> geboorteDag;
int verschilJaar = huidigJaar - geboorteJaar - 1; // niet iedereen is al jarig geweest
//kijken of het jaar erbij mag en totaal aantal maanden uitrekenen
if ( geboorteMaand < huidigeMaand ) { //de persoon is dit jaar al jarig geweest
verschilJaar = verschilJaar + 1;
if ( geboorteDag <= huidigeDag ) {
totaalMaanden = verschilJaar * 12 + ( huidigeMaand - geboorteMaand ); //de huidige maand komt erbij
}else {
totaalMaanden = verschilJaar * 12 + ( huidigeMaand - geboorteMaand ) - 1; //de huidige maand gaat eraf
}
}else if ( geboorteMaand == huidigeMaand ) {
if ( geboorteDag <= huidigeDag ) {
verschilJaar = verschilJaar + 1;
totaalMaanden = verschilJaar * 12; //heel jaar
}else {
totaalMaanden = verschilJaar * 12 + 11; //er komt niet een heel jaar bij maar wel 11 maanden, omdat de huidige maand niet meetelt
}
}else {
if ( geboorteDag <= huidigeDag ) {
totaalMaanden = verschilJaar * 12 + huidigeMaand + ( 12 - geboorteMaand ); //de persoon moet nog jarig worden, dus geen jaar erbij maar wel de maanden na zijn verjaardag
}else {
totaalMaanden = verschilJaar * 12 + huidigeMaand + ( 12 - geboorteMaand ) - 1; //zelfde maar dan een maand eraf omdat deze maand niet als een maand gerekend kan worden
}
}
return totaalMaanden;
}//main
答案 0 :(得分:3)
我用调试器运行你的代码,我发现以下 CORRECT 值:
但是,您的代码不会显示它们,但会从main()返回它们。这是一种不好的做法:main()将返回错误代码。
返回给操作系统的值以 system dependent 方式管理:在POSIX,bash或windows cmd下,值只能在0到255之间。
如果你计算542模256,你会发现30。
如果你在这里报告C ++代码的问题,请确保问题出在C ++代码中,而不是在一些shell脚本中。
答案 1 :(得分:1)
我不是C ++或说荷兰语,但我可以帮助你完成我使用的psudo代码。从我所看到的,你的代码看起来要比它应该复杂得多......除非是因为荷兰语: