编写程序:输入一个学生的生日(年;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、运行程序后,英文的年月日就是红线部分,最后的结果如图所示,就完成了。

本回答被网友采纳

编写程序:输入一个学生的生日(年;y0、月:m0、日:d0);并输入当前的日期...
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...

输入一个学生生日(y0,m0,d0)和当前日期(y1,m1,d1),计算并输出该学生实...
int main(void){ int y0, m0, d0;int y1, m1, d1;int age;printf("enter your birthday:\\n");scanf("%d%d%d", &y0, &m0, &d0);printf("enter current date:\\n");scanf("%d%d%d", &y1, &m1,&d1);age = y1 - y0;if(m1 < m0)--age;else if(m1 == m0 && d1 < d...

输入一个学生生日(y0,m0,d0)和当前日期(y1,m1,d1),计算并输出该学生实...
int main(void){ int y0, m0, d0;int y1, m1, d1;int age;printf("enter your birthday:\\n");scanf("%d%d%d", &y0, &m0, &d0);printf("enter current date:\\n");scanf("%d%d%d", &y1, &m1,&d1);age = y1 - y0;if(m1 < m0)--age;else if(m1 == m0 && d1 < d...

输入一个学生的生日;并输入当前的日期;试设计程序输出该学生的实足...
28,31,30,31,30,31,31,30,31,30,31}; cout<<"输入学生生日(格式:yyyy-dd-nn):"; \/\/输出年龄,生日应该为出生日期 cin>>"%d-%d-%d">>&a>>&b>>&c ;cout<<"输入当前日期(格式:yyyy-dd-nn):";

编写一个程序输入一个人出生年月日和当前日期,计算出他的年龄和距离下...
int dCalc ( int y, int m, int d, int y0, int m0, int d0 ) \/\/ 天数 { int d1, d2;d1 = getDay ( y, m0, d0 ); \/\/ 今年生日 d2 = getDay ( y, m, d ); \/\/ 今天 if (d1<d2) d1 = getDay ( y+1, m0, d0 ) \/\/ 今年生日过去了, 算明年生日 return ...

C语言编程,求一个人的年龄是多少。
第一行第一的是y0,你写成了yo include<stdio.h>int main(){int y0,m0,d0,y1,m1,d1,nianling;\/\/\/y0printf("请输入您的生日:");scanf("%d,%d,%d",&y0,&m0,&d0);printf("请输入当前日期:");scanf("%d,%d,%d",&y1,&m1,&d1);nianling=y1-y0;if(m1>m0){if(d1>d0)nianling...

java编程:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序...
参考代码一:简洁版 import java.util.Scanner;public class DivDemoSp {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(true){try{System.out.println("输入除数");double d1 = Double.parseDouble(sc.nextLine());System.out.println("输入被除数");...

VB高手编辑一个电子万年历的程序源代码啊
this.firstWeek = sDObj.getDay(); \/\/公历当月1日星期几 \/\/\/年柱 1900年立春后为庚子年(60进制36) if(m<2) cY=cyclical(y-1900+36-1); else cY=cyclical(y-1900+36); var term2=sTerm(y,2); \/\/立春日期 \/\/\/月柱 1900年1月小寒以前为 丙子月(60进制12) var firstNode = sTerm(y,m*2...

scanf输入之后不执行,无法进入到下一个scanf?
首先,建议不要在 scanf() 里把逗号也格式化进去,直接不写或者用空格会适用性会更好。然后解决你的问题,在 scanf() 最后一个读入前 加上 %*c,意思是读取这之后的所有字符,效果就是会把回车吃掉,这样就不会影响后面的输入了。scanf("(%d%d%d%*c)",&y0,&m0,&d0);注意这里的 %*c 不...

...功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3...
第一章 引 言1.1 项目开发背景几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。但手工管理具有效率底、 。。。所以我想借本次毕业设计之际,开发一个不仅适用本校各系而且适用于其它各校...

相似回答