从键盘上输入年月日,计算该日是该年的第几天。请在visual C++6.0下用C语言编程

如题所述

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include<windows.h>

int _MONTH[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};

int days(int *y,int *m,int *d)
{
 int i,md,pastD;
 i=md=pastD=0;

 if((*y%4==0)&&((*y%100!=0)||(*y%400==0)))
_MONTH[1]=29;   // 闰年就将2月份重置为29天

for(i=0;i<(*m-1)&&(i<11);i++)
        md+=_MONTH[i]; // 统计已过去的月份天数
pastD=md+(*d);     // 统计已过去的天数(即为本年的第几天)
   
return pastD;
}
void main()
{
int _y,_m,_d;
printf("请输入年,月,日(格式为:year,month,day):");
scanf("%d,%d,%d",&_y,&_m,&_d);
printf("当前日期:%d,%d,%d 是本年的第%d天\n",_y,_m,_d,days(&_y,&_m,&_d));
}

已在Visual C++ 6.0测试通过并输出上面的截图结果。

追问

可以用SWITCH语句做一下吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-26
#include "stdafx.h"
#include "stdio.h"
void main(void){
int year,month,day,tb[12]={31,28,31,30,31,30,31,31,30,31,30,31},i,sum,x;
while(1){
printf("Enter the year,month,day\n");
scanf("%d%d%d",&year,&month,&day);
if(!(year%400) || !(year%4) && year%100) tb[1]++;
if(month<13 && month>0 && day>0 && day<=tb[month-1]) break;
printf("Error!Redo...\n");
}
for(sum=i=0,x=month-1;i<x;sum+=tb[i++]);
sum+=day;
printf("%d/%d/%d is %d day(s) of this year.\n",year,month,day,sum);
}追问

可以用SWITCH语句做一下吗?

本回答被网友采纳
第2个回答  2013-11-26
int days(Birth date)

{

int sum = 0;

for (int i = 0; i < date.month; i++) {

if (i == 1||i ==3 ||i==5 ||i ==7 || i==8 ||i == 10||i == 12) {

sum += 31;

}

if (i == 4 || i == 6|| i == 9 || i ==11) {

sum += 30;

}

if (i == 2) {

if (date.year % 400 == 0 ||(date.year % 4 == 0 && date.year % 100 != 0)) {

sum += 29;

}else

sum += 28;

}

}

sum += date.day;

return sum;

}
函数,你自己调用就看可以
第3个回答  2013-11-26
#include <stdio.h>
int fun(int year,int month,int day);
void main() {
while(1) {
int year,month,day;
printf("请按照提示分别输入年、月、日\n");
printf("year = ");
scanf("%d",&year);
printf("month = ");
scanf("%d",&month);
printf("day = ");
scanf("%d",&day);
fun(year,month,day);//调用fun方法。
}
}
int fun(int year,int month,int day)
{
int s=0;
int a[2][12]={0,31,59,90,120,151,181,212,243,273,303,334,0,31,60,91,121,152,182,212,244,274,305,335};
if(month<=0||month>12||day<=0||day>31)//判断输入的月和日是否正确,若不正确直接跳出方法
{
printf("您输入有误,请确认您输入的年月日无误后重新查询!");
return 0;
}
else if ((year%400==0)||(year%4==0&&year%100!=0))//若果是闰年则调用该函数。
{
s=a[1][month-1]+day;
printf("%d年%d月%d日是%d年得第%d天。\n",year,month,day,year,s);
}
else//如果非闰年调用该函数。
{
s=a[0][month-1]+day;
printf("%d年%d月%d日是%d年得第%d天。\n",year,month,day,year,s);
}
return 0;
}本回答被提问者采纳
相似回答