C题目:输入一个年份和月份,输出这月有多少天?提示:用一个数组存放一年12个月的天数,请注释下 谢谢!

如题所述

我帮你分析下思路,具体代码不难。可以锻炼自己
既然你已经用一个数组存了12个月各自的天数,定义一个数组
a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
a[0]不用,这样月份就对应相应的下标
对于初学者不会弄混
例如3月份,只要输出a[3]即可

目前的问题在于2月份。因为2月份有平润年之分
所以只要用 年份 判断出这一年是否是闰年,对于平年2月份(默认是28天)
只要a[2]=29
判断闰年条件是
year%4==0&&year%100!=0||year%400==0追问

我用循环写:在这里就卡住了
#include
int main()
{
int year;
int month;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n; //循环变量
printf("请输入的年份:");
scanf("%d",&year);
printf("请输入月份:");
scanf("%d",&month);
if(year%4==0&&year%10!=0||year%400==0)
{
month=29;
}
system("pause");
}

追答

代码没什么错,细节没处理好,还有程序里没有用到什么循环啊
#include
int main()
{
int year;
int month;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n; //循环变量
printf("请输入的年份:");
scanf("%d",&year);
printf("请输入月份:");
scanf("%d",&month);
if(year%4==0&&year%100!=0||year%400==0)//这里条件别写错
{
m[2]=29;//这里只要将2月份改为29天就可以
//输入的month是用来做下标的
}
printf("%d 月份有 %d 天\n",month,m[month]);//你没有写输出结果的语句
system("pause");
}
//c语言不是不支持中文么。。你的c语言软件好牛啊,应该是用c++写的吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-30
这个程序主要需考虑的是判断这一年是不是闰年,因为每一个月的天数,除了闰年之外,都是一三五七八十腊,三十一天用不差啊。
#include"stdio.h"
void main()
{
int i,j;
int k[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int n[12]={31,29,31,30,31,30,31,31,30,31,30,31};
printf("请输入年份:");
scanf("%d",&i);
printf("请输入月份:");
scanf("%d",&j);
if(i/4==0||i/100==0)
printf("\n\n%d年%d月有:%d天。\n",i,j,n[j-1]);
else printf("\n\n%d年%d月有%d天。\n",i,j,k[j-1]);
}
第2个回答  2011-07-30
#include <stdio.h>

int days[12] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};//12个月的天数,闰年另外处理

void main()
{
int year, month;
puts("请输入年和月(如: 2007,5):");
scanf("%d,%d", &year, &month);

//注意,本程序并不检查输入年月是否正确
printf("输入%d年%d月\n", year, month);

//以下if语句判断是否闰年
if((year%400==0) || (year%100!=0) && (year%4==0))
days[1] = 28 + 1; //如果是闰年,那么2月是29天
printf("%d年%d月是%d天\n", year, month, days[month-1]);
}
第3个回答  2011-07-30
#include "stdio.h"
void main()
{
int year,month;
printf("Input year:");
scanf("%d",&year);
printf("Input month:");
scanf("%d",&month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31 day.\n");break;
case 4:
case 6:
case 9:
case 11:
printf("30 day.\n");break;
case 2:
if(year%400==0||year%4==0&&year%100)
printf("29 day.\n");
else
printf("28 day.\n");
break;
default:
printf("input error!\n");
}
}
第4个回答  2011-07-30
#include <stdio.h>

void main()
{
int y,m,ms[13];
scanf("%d %d",&y,&m);
if(m>0&&m<13)
{
ms[1]=31;
ms[2]=28;
ms[3]=31;
ms[4]=30;
ms[5]=31;
ms[6]=30;
ms[7]=31;
ms[8]=31;
ms[9]=30;
ms[10]=31;
ms[11]=30;
ms[12]=31;
if(y%400==0||(y%100<>0&&y%4==0) ms[2]=29; /*闰年*/
printf("%ddays",ms[m]);
}
}

希望回答对你有帮助
相似回答