luanpaixie262 2016-03-15 08:42 采纳率: 0%
浏览 1471

输入年月日信息问题?完全不知道啊

这个题目怎么实现啊,一点点的思路都没有,不知道如何去计算,谁能给我个java源码啊⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯图片说明

  • 写回答

7条回答 默认 最新

  • lx624909677 2016-03-15 08:46
    关注
     #include <stdio.h> 
    int yd;//定义全局变量,yd表示某一年的总天数  
    int aa(int x) //该函数用来判断是否是闰年 
    {if(((x%4==0)&&(x%100!=0))||(x%400==0)) yd=366;} 
    
    int run2(int x,int d[3])//功能函数 
    {int i,n=d[2],a[12]={0,31,28,31,30,31,30,31,31,30,31,30};//n表示总天数a[1]-a[11]分别代表前11
    个月的天数  
    if(yd==366) a[2]=29;//如果该年是闰年则2月设置为29天否则为28天。  
    for(i=0;i<=d[1]-1;i++) 
    n=n+a[i]; 
    printf("该日是%d年的第%d天。\n",d[0],n); 
    return(n);  
    } 
    
    main() 
    { 
    int md,data[3];//md表示某个月的总天数data[0]-data[2]分别储存年、月、日  
    /*开始输入年份如果年份小于等于0则要求重新输入*/ 
    printf("请输入年份\n"); 
    scanf("%d",&data[0]); 
    while(data[0]<=0) 
    {printf("输入的年份应大于0请重新输入:\n");scanf("%d",&data[0]);} 
    aa(data[0]); 
    /*开始输入月份如果月份小于1或大于12则要求重新输入*/ 
    printf("请输入月份\n"); 
    scanf("%d",&data[1]); 
    while(data[1]<1||data[1]>12) 
    {printf("输入的月份应在1-12之间请重新输入:\n");scanf("%d",&data[1]);} 
    /*根据输入的月份判断该月的总天数*/ 
    switch(data[1]) 
    {case 1:md=31;break; 
    case 2:if(yd==366) md=29;else md=28;break; 
    case 3:md=31;break; 
    case 4:md=30;break; 
    case 5:md=31;break; 
    case 6:md=30;break; 
    case 7:md=31;break; 
    case 8:md=31;break; 
    case 9:md=30;break; 
    case 10:md=31;break; 
    case 11:md=30;break; 
    case 12:md=31; 
    }  
    /*开始输入日如果输入值大于该月的总天数或小于1则要求重新输入*/ 
    printf("请输入日\n"); 
    scanf("%d",&data[2]); 
    while(data[2]>md||data[2]<1) 
    {printf("输入值应小于等于该月的总天数或大于等于1请重新输入:\n");scanf("%d",&data[2]);} 
    printf("您输入的是%d年%d月%d日",data[0],data[1],data[2]); //data[0],data[1],data[2]分别代表
    年、月、日  
    run2(data[0],data);//将输入的年份和数组首地址传给函数  
    } 
    
    二、输入某年的年份和天数计算出该天数是这一年的几月几日如输入2012和
    60则2012年的第60天是2012年2月29日。 
    #include <stdio.h> 
    int yd;//定义全局变量,yd表示某一年的总天数 
    int aa(int x)//该函数用来判断是否是闰年 
    {if(((x%4==0)&&(x%100!=0))||(x%400==0)) yd=366;else yd=365;}//如果是闰年则全年有366天  
    
    int run(int x,int n) //功能函数 
    {int i,m,d,s=0,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/m表示月份d表示日i用来遍历
    s用来计算月份的总和a[1]-a[12]分别代表前12个月的天数  
    printf("%d年的第%d天是",x,n); 
    if(yd==366) a[2]=29;//如果该年是闰年则2月设置为29天否则为28天。  
    for(i=0;i<12;i++) 
    {s=s+a[i]; 
    if(n>s&&n<=s+a[i+1])  
    {m=i+1;d=n-s;} 
    } 
    printf("%d月%d日。\n",m,d); 
    } 
    
    main() 
    { 
    int num,year;//num表示天数year表示年份 
    /*开始输入年份如果年份小于等于0则要求重新输入*/ 
    printf("请输入年份\n"); 
    scanf("%d",&year); 
    while(year<=0) 
    {printf("输入的年份应大于0请重新输入:\n");scanf("%d",&year);} 
    
    aa(year); 
    /*开始输入天数如果天数小于等于0或大于该年的总天数则要求重新输入*/ 
    printf("请输入天数\n"); 
    scanf("%d",&num); 
    while(num>yd||num<=0) 
    {printf("输入值应小于一年的总天数请重新输入:\n");scanf("%d",&num);} 
    run(year,num); 
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误