作业帮 > 综合 > 作业

C++:问一程序错在哪里?当d1=d0时,应跳出{if(d1>d0) {age=y1-y0+1;printf("你的年龄

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/08 22:51:07
C++:问一程序错在哪里?当d1=d0时,应跳出{if(d1>d0) {age=y1-y0+1;printf("你的年龄
#include
void main()
{
int y0,m0,d0,y1,m1,d1,age;
printf("请输入你的生日\n");
scanf("%d%d%d",&y0,&m0,&d0);
printf("请输入当前日期\n");
scanf("%d%d%d",&y1,&m1,&d1);
if(m1>m0)
{age=y1-y0+1;printf("你的年龄为%d\n",age);}
else if (m1==m0){if(d1>d0) {age=y1-y0+1;printf("你的年龄为%d\n",age);}}
else age=y1-y0;printf("你的年龄为%d\n",age);
}
运行结果是:
请输入你的生日
1970 11 09
请输入当前日期
2012 11 09
你的年龄为-858993460
Press any key to continue
错在哪里?当d1=d0时,应跳出{if(d1>d0) {age=y1-y0+1;printf("你的年龄为%d\n",age);}},执行 else age=y1-y0;printf("你的年龄为%d\n",age);显示应为你的年龄为42
C++:问一程序错在哪里?当d1=d0时,应跳出{if(d1>d0) {age=y1-y0+1;printf(
你好,注意一下
else if (m1==m0){if(d1>d0) {age=y1-y0+1;printf("你的年龄为%d\n",age);}}
else age=y1-y0;printf("你的年龄为%d\n",age);//这句话是与else if (m1==m0)配对的.
if elseif else典型结构.
你在
else if (m1==m0){if(d1>d0) {age=y1-y0+1;printf("你的年龄为%d\n",age);}}
里只写了d1>d0时给age赋值,d1d0)里去吧.应该这样写
else if (m1==m0)
{
if(d1>d0)
{
age=y1-y0+1;printf("你的年龄为%d\n",age);
}
else
{
age=y1-y0;printf("你的年龄为%d\n",age);
}
}
规范格式也是为了方便自己检查.
再问: 书上说:在if子句中嵌套不含else子句的if语句 if(表达式1) {if(表达式2)语句1} else 语句2 问:如果满足表达式1,不满足表达式2,是否执行 语句2。我就是这种情况
再答: 满足表达式1就一定不执行语句2.和表达式2无关。
再问: if(m1>m0) {age=y1-y0+1;printf("你的年龄为%d\n",age);} else if (m1==m0){if(d1>d0) {age=y1-y0+1;printf("你的年龄为%d\n",age);} else{ age=y1-y0;printf("你的年龄为%d\n",age);}}/*新加的*/ else age=y1-y0;printf("你的年龄为%d\n",age); 运行后,你的年龄为42,你的年龄为42,重复出现2次,为何
再答: 你最后的else没有用大括号确定作用域。 else只对age = y1 - y0;生效. 用else { age=y1-y0;printf("你的年龄为%d\n",age); } 就好了
再问: 还是没用
再答: 恩恩。
再问: 原因是什么
再答: 我只能说贴出来的部分没问题了。其他的我不知道。