看了一天的视频,写了个小程序……
#include <stdio.h>void main()
{
int year,month,day,leap,t=0,num;
loop:printf("please input the date(XXXX/XX/XX):");
scanf("%d/%d/%d",&year,&month,&day);
if(day<0||day>31)
{
printf("error!please input angin.\n");
goto loop;
}
if(year%4!=0||0==year%100&&0!=year%400)
{
leap = 0;
}
else
{
leap = 1;
}
switch(month)
{
case 12:t = t+30;
case 11:t = t+31;
case 10:t = t+30;
case 9:t = t+31;
case 8:t = t+31;
case 7:t = t+30;
case 6:t = t+31;
case 5:t = t+30;
case 4:t = t+31;
case 3:t = t+28+leap;
case 2:t = t+31;
case 1:break;
default: printf("error!please input angin.\n");goto loop;
}
num = t+day;
printf("%d年%d月%d日是%d年的第%d天\n",year,month,day,year,num);
}这只是一道作业题,是计算几月几日是一年中的第几天的。运行效果如下:
小弟手痒,发着玩儿的,高手请勿拍砖哦!!
嘿嘿,不错不错 拍砖 没实力 只能说给你看看我写的吧 可能还没你的好#include <stdio.h>
int leap(int i)
{
if(i%4 == 0 && i%100 != 100 || i%400 == 0)
return 1;
else
return 0;
}
void main()
{
int y,m,d,i,sum = 0;
int a = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int b = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("请输入年月日(用逗号分隔):");
scanf("%d,%d,%d",&y,&m,&d);
if(leap(y) == 1)
{
for(i=0;i<m-1;++i)
{
sum += b;
}
sum += d;
}
else
{
for(i=0;i<m-1;++i)
{
sum += a;
}
sum += d;
}
printf("%d年%d月%d天是今年的第%d天\n", y, m, d, sum);
} 好像不怎么对,if(year%4!=0||0==year%100&&0!=year%400)
{
leap = 0;
}
应该改为:if ((year%4==0 && year%100!=0) || (year%4==0))
{
leap = 0;
}
如果按照你的源代码那么写的话 ,那你算一下2014/3/23,你的代码算的是82天,但实际应该是83天才对。2014年 不是闰年,那么2月才有28天,所以答案应该是2014/3/23应该是2014的第83天,但是你的是82天。你好好看看你代码 不错啊 顶一个 感觉不错啊 天天向上向上 CL0419 发表于 2014-3-23 12:57 static/image/common/back.gif
好像不怎么对,if(year%4!=0||0==year%100&&0!=year%400)
{
leap = 0;
2014年1月31天,2月28天,到3/23应该是31+28+23=82天
如果输入2014/02/29会怎样 2014/13/20会怎样 嘿,不错不错{:1_1:} machimilk 发表于 2014-3-23 20:23 static/image/common/back.gif
如果输入2014/02/29会怎样 2014/13/20会怎样
第二个我想到了,用了一个GOTO语句可以跳回去重新输入。第一个……由于每天月长度不同,我还没想到怎么解决……请高手指正。。 只是想学C 发表于 2014-3-24 05:02 static/image/common/back.gif
第二个我想到了,用了一个GOTO语句可以跳回去重新输入。第一个……由于每天月长度不同,我还没想到怎么解 ...
先判断年,如果年正确再判断月,如果月正确 再根据每个月判断输入的日,当然2月要考虑闰的情况
页:
[1]