求指导,编程
求指导,求一个编程。
题目:输入年月日,输出该天是该年第几天.
最好用初学者会的语言编写,先感谢各位啦,谢谢!
------解决方案--------------------
用不着这么长的switch,利用数组就能大幅度简化它。
题目:输入年月日,输出该天是该年第几天.
最好用初学者会的语言编写,先感谢各位啦,谢谢!
------解决方案--------------------
用不着这么长的switch,利用数组就能大幅度简化它。
- C/C++ code
#include<stdio.h> main() { int year,month,days; int i,d,s; int monthdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("Please input the numbers year,month,day:\n"); scanf("%d%d%d",&year,&month,&days); s=0; for(i=1;i<month;i++) { s+=monthdays[i-1]; if(i==2&&((year%4==0)&&(year%100!=0)||(year%400==0))) // 这里的条件是百年不润 s++; } printf("%d年%d月%d日是这年的%d天\n",year,month,days,s+days); }
------解决方案--------------------
------解决方案--------------------
- C/C++ code
#include <stdlib.h> #include <stdio.h> static char daytab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; /* day_of_year: set day of year from month & day */ int day_of_year(int year, int month, int day) { int i, leap; leap = year%4 == 0 && year%100 != 0 || year%400 == 0; for (i = 1; i < month; i++) day += daytab[leap][i]; return day; } /* month_day: set month, day from day of year */ void month_day(int year, int yearday, int *pmonth, int *pday) { int i, leap; leap = year%4 == 0 && year%100 != 0 || year%400 == 0; for (i = 1; yearday > daytab[leap][i]; i++) yearday -= daytab[leap][i]; *pmonth = i; *pday = yearday; } int main() { int m, d; month_day(1988, 60, &m, &d); printf("%d month %d date\n", m, d); system("pause"); }
------解决方案--------------------
#include<stdio.h>
int main()
{
int y, m, d;
int a[13] = {0,31,0,31,30,31,30,31,31,30,31,30,31};
while( scanf("%d%d%d",&y,&m,&d)==3 )
{
int i, num;
a[2] = y % ( y % 100 ? 4 : 400 ) ? 28 : 29;
if ( d<1 || d>a[m] || m<1 || m>12 )
{
printf("输入错误!\n请重新输入日期:\n\n");
}
else
{
for( i=1, num=0; i<m; i++ )
{
num += a[i];
}
num += d; //这一年的第几天
printf("%d\n",num);
}
}
return 0;
}[code=C/C++][/code]