编写程序:输入一个学生的生日(年;y0、月:m0、日:d0);并输入当前的日期(年:y1、月:m1、日:d1)

输出该生的实际年龄。
#include <stdio.h>
int main()
{
int a,b,c,x,y,z,s[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("输入学生生日(格式:yyyy-dd-nn):"); //输出年龄,生日应该为出生日期
scanf("%d-%d-%d",&a,&b,&c);
printf("输入当前日期(格式:yyyy-dd-nn):");
scanf("%d-%d-%d",&x,&y,&z);
if(x<a||(a==x&&y<b)||(a==x&&b==y&&z<c)||11<y<1&&11<b<1||31<z<1&&31<c<1)/*b或y不小于1或不大于11,c或z不小于1或不大于31*/
printf("输入日期错误!!!\n");
else
printf("%d岁%d个月%d天\n",y>b?(x-a):(x-a-1),c>z?(y>b?(y-b-1):(12+y-b-1)):(y>b?(y-b):(12+y-b)),z>c?(z-c):((y-1)==2?((x%4)==(x%400)?(s[y-1]+1+z-c):(s[y-1]+z-c)):(s[y-1]+z-c)));
}
当2月=31天4月=31天???

if语句一片混乱,修改了一下,好了

#include <stdio.h>

int main()

{

 int a,b,c,x,y,z;

 int s[12]={31,28,31,30,31,30,31,31,30,31,30,31};  

 printf("输入学生生日(格式:yyyy-dd-nn):");   //输出年龄,生日应该为出生日期 

 scanf("%d-%d-%d",&a,&b,&c);

 printf("输入当前日期(格式:yyyy-dd-nn):");

 scanf("%d-%d-%d",&x,&y,&z);

 if((x<a)||(a==x&&y<b)||(a==x&&b==y&&z<c)||(y<1&&y>12&&y>12&&y<1)||(z<1&&z>31&&c<1&&c>31))/*b或y不小于1或不大于12,c或z不小于1或不大于31*/

  printf("输入日期错误!!!\n");

 else

  printf("%d岁%d个月%d天\n",y>b?(x-a):(x-a-1),c>z?(y>b?(y-b-1):(12+y-b-1)):(y>b?(y-b):(12+y-b)),z>c?(z-c):((y-1)==2?((x%4)==(x%400)?(s[y-1]+1+z-c):(s[y-1]+z-c)):(s[y-1]+z-c)));

}

希望你能看懂

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-10

1、首先,在电脑中找到并打开python软件,进入操作页面中,如下图。

2、接着新建一个脚本,在菜单栏——文件——新建,具体如图所示。

3、现在构造两个月和日的数据结构(序列),代码贴图如下。

4、为了输出英文格式的年月日,整个代码如图。

5、运行程序后,英文的年月日就是红线部分,最后的结果如图所示,就完成了。

本回答被网友采纳
相似回答