一个关于if语句的C语言程序,求解!

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
int y,m,d,y0,m0,d0,age,t,t1;
printf("请输入出生日期 如:1991,1,1\n");
scanf("%d,%d,%d",&y,&m,&d);
printf("请输入当前日期,格式同上\n");
scanf("%d,%d,%d",&y0,&m0,&d0);
printf("出生日期是%d年%d月%d日\n当前日期是%d年%d月%d日\n",y,m,d,y0,m0,d0);
age=y0-y; t=m0-m;
if(t>0)printf("实际年龄为%d岁(实岁)\n",age);
if (t<0) age=age-1;printf("实际年龄为%d岁(实岁)\n",age);
if (t=0) t1=d0-d;
if(t1<0) age=age-1;printf("实际年龄为%d岁(实岁)\n",age);
if(t1>=0) printf("实际年龄为%d岁(实岁)\n",age);
return 0;
}
这个是我做的一个作业,题目是输入任意出生日期和当前日期,计算出年龄,可是输入电脑后问题有问题,而且得到的数据好像也有些错误,找了半天,不知道错在哪里,还有就是用else if 的时候,到了第三个就不能用了,第三个if 前面加上else 之后就提示错误了,求大侠指点,谢谢了

if语句
循环体中只有一句(或者一个整体),如果有两个或两个以上的语句,需要用{}括起来,否则只能执行第一句。

你的程序中第二个if开始:
if (t<0) age=age-1;printf("实际年龄为%d岁(实岁)\n",age);

这里面只有第一句age=age-1;是在循环体中的,之后那一句不在if的范围之内,已经是独立的一个语句。

正确的用法是这样:
if (t<0)
{age=age-1;printf("实际年龄为%d岁(实岁)\n",age);}

所以,你的3个if语句应该是这样:
if(t>0)
printf("实际年龄为%d岁(实岁)\n",age);
else
if (t<0)
{age=age-1;printf("实际年龄为%d岁(实岁)\n",age); }
else
{
t1=d0-d;
if(t1<0)
{ age=age-1;printf("实际年龄为%d岁(实岁)\n",age); }
else
printf("实际年龄为%d岁(实岁)\n",age);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-01
if(t>0)printf("实际年龄为%d岁(实岁)\n",age);
else if (t<0) {age=age-1;printf("实际年龄为%d岁(实岁)\n",age);}
else if (t==0)
{ t1=d0-d;
if(t1<0) {age=age-1;printf("实际年龄为%d岁(实岁)\n",age); }
else if(t1>=0) printf("实际年龄为%d岁(实岁)\n",age);
}
要有相应的括号括起来,还有输入时要严格按照格式,以逗号分隔。本回答被提问者采纳
第2个回答  2020-07-01
if(t>0)printf("实际年龄为%d岁(实岁)\n",age);
else
if
(t<0)
{age=age-1;printf("实际年龄为%d岁(实岁)\n",age);}
else
if
(t==0)
{
t1=d0-d;
if(t1<0)
{age=age-1;printf("实际年龄为%d岁(实岁)\n",age);
}
else
if(t1>=0)
printf("实际年龄为%d岁(实岁)\n",age);
}
要有相应的括号括起来,还有输入时要严格按照格式,以逗号分隔。
第3个回答  2011-12-01
#include <stdio.h>
int main(int argc, char *argv[])
{
int y,m,d,y0,m0,d0,age,t,t1;
printf("请输入出生日期 如:1991,1,1\n");
scanf("%d,%d,%d",&y,&m,&d);
printf("请输入当前日期,格式同上\n");
scanf("%d,%d,%d",&y0,&m0,&d0);
printf("出生日期是%d年%d月%d日\n当前日期是%d年%d月%d日\n",y,m,d,y0,m0,d0);
age=y0-y; t=m0-m;
if(t>0)printf("实际年龄为%d岁(实岁)\n",age);
else if (t<0)
{age=age-1;printf("实际年龄为%d岁(实岁)\n",age); }
else //既然是0岁了,后面几行没必要写了吧,呵呵,建议直接输出0岁得了!
{ t1=d0-d;
if(t1<0) { age=age-1;printf("实际年龄为%d岁(实岁)\n",age); }
else printf("实际年龄为%d岁(实岁)\n",age);
}
return 0;
}
第4个回答  2011-12-01
输出虚岁的if语句少一个等号
相似回答