首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言新手有关问题《输入年月求天数》

2012-02-27 
c语言新手问题《输入年月求天数》1.要求用c语言编写一个程序,该程序能够根据用户输入的年份和月份,输出该月

c语言新手问题《输入年月求天数》
1.要求
用c语言编写一个程序,该程序能够根据用户输入的年份和月份,输出该月的天数。
注;平年2月份的天数为28天,闰年2月份的天数为29天。
闰年的判断方法:改年份能整除400,或者能整除4但不能整除100。
2.实现步骤
(1)定义一个二维整型数组,用来存放平年和闰年各月的天数。
(2)提示用户输入年份和月份
(3)系统对输入月份的有效性进行判断,如果输入月份有效,则输出该月的天数,如果输入的月份无效,则输出月份无效的提示信息。

[解决办法]
int month_data[12]={31,0,31...}//等等
int isleapyear(int year)
{
return (year%4==0 && year%100!=0)||(year%400==0);
}

int getday(int year,int month)
{
if(month==2)
return isleapyear()? 29:28;
else
return month_data[month-1];
}
[解决办法]
#include <stdio.h>
void main()
{
int month_data[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
int year, month;
printf( "Please enter a year: ");
scanf( "%d ", &year);
printf( "Please enter a month: ");
scanf( "%d ", &month);
int index=((year%4==0 && year%100!=0)||year%400==0);
printf( "There are %d days in the %d month of the %d\n ",
month_data[index][month-1],month,year);
}
[解决办法]
注意,数组换个位置了
[解决办法]
#include <stdio.h>
typedef struct date_type{
int year;
int month;
int day;
} DATE;
int month[2][12]={ {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} };
int isleap(int year){
if(year%100==0){
if(year%400==0){
return 1;
}else{
return 0;
}
}else{
if(year%4==0){
return 1;
}else{
return 0;
}
}
}
int year_day(DATE date){

int leap, count=0, i;

leap=isleap(date.year);
for(i=1;i <date.month;i++){
count+=month[leap][i-1];
}
count+=date.day;
return count;
}
void main(){

DATE date;
int leap;

printf( "Year: ");
scanf( "%d ", &date.year);
printf( "Month: ");
scanf( "%d ", &date.month);
printf( "Day: ");
scanf( "%d ", &date.day);

leap=isleap(date.year);
if((date.month <1||date.month> 12)||(date.day <1||date.day> month[leap][date.month-1])){
printf( "You has entered an error date!\n ");
}else{
printf( "The date is the %dth(st/rd) day of the year.\n ", year_day(date));
}

system( "pause ");
}

热点排行