/*输入某年某月某日,判断这一天是这一年的第几天? */

無智亦無得 2012-03-11 11:54:56

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

void main()
{
int day,month,year,sum,leap;

printf("Please input year,month,day:\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{
case 1: sum=0; break;
case 2: sum=31; break;
case 3: sum=59; break;
case 4: sum=90; break;
case 5: sum=120; break;
case 6: sum=151; break;
case 7 :sum=181; break;
case 8 :sum=212; break;
case 9 :sum=242; break;
case 10:sum=273; break;
case 11:sum=304; break;
case 12:sum=334; break;
default:/* printf("data error"); */ break;
}
sum=sum+day;
if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
leap=1;
else
leap=0;

if(month>2&&leap==1)
{
sum=sum+1;
}
printf("Sum=%d",sum);
getch();

}


运行环境:windows xp sp3 Wintc
输入:2012 12 12
输出结果:2342

为什么输出的不是该年的第几天?
...全文
732 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwillalwaysbe 2012-03-11
  • 打赏
  • 举报
回复
注意格式化输入
northcan 2012-03-11
  • 打赏
  • 举报
回复
scanf("%d,%d,%d",&year,&month,&day);
scanf是格式化输入,%d,%d,%d,注意之间的逗号。
northcan 2012-03-11
  • 打赏
  • 举报
回复
运行环境:windows xp sp3 Wintc
输入:2012 12 12
输出结果:2342


输入:2012,12,12[回车]
李荣强 2012-03-11
  • 打赏
  • 举报
回复
关键是这个getch的问题
W170532934 2012-03-11
  • 打赏
  • 举报
回复
百度一下你就知道
李荣强 2012-03-11
  • 打赏
  • 举报
回复
#include<iostream>
//#include<conio.h>
using namespace std;
int main()
{
int day,month,year,sum,leap;

cout<<"请输入年月日\n";
cin>>year>>month>>day;
switch(month)
{
case 1: sum=0; break;
case 2: sum=31; break;
case 3: sum=59; break;
case 4: sum=90; break;
case 5: sum=120; break;
case 6: sum=151; break;
case 7 :sum=181; break;
case 8 :sum=212; break;
case 9 :sum=242; break;
case 10:sum=273; break;
case 11:sum=304; break;
case 12:sum=334; break;
default: break;
}
sum=sum+day;
if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
leap=1;
else
leap=0;

if(month>2&&leap==1)
{
sum=sum+1;
}
cout<<sum<<endl;
// getch();
return 0;

}这个代码试试看吧
caixueping 2012-03-11
  • 打赏
  • 举报
回复
scanf("%d,%d,%d",&year,&month,&day); ||"%d,%d,%d"|| 输入必须按这种格式:2012,12,12
BetaBin 2012-03-11
  • 打赏
  • 举报
回复
scanf("%d,%d,%d",&year,&month,&day);

你的输入是2012 12 12

输入格式不合要求
li_rui_1220 2012-03-11
  • 打赏
  • 举报
回复
scanf("%d,%d,%d",&year,&month,&day);
那是你输入有问题
2012 ,12, 12这样试试看。
这样的scanf("%d%d%d"&year,&month,&day);
才这么输入2012 12 12
caixueping 2012-03-11
  • 打赏
  • 举报
回复
sum没有初始化
wizard_tiger 2012-03-11
  • 打赏
  • 举报
回复
scanf函数中最好不要加控制符以外的任何字符。
yaobuyaone 2012-03-11
  • 打赏
  • 举报
回复
输入个格式有误,你的scanf里面是什么样子的,在输入的时候就该怎样输入。
在这里就该输入2012,12,12,我试了下这个程序是没有错误的。
laoyang103 2012-03-11
  • 打赏
  • 举报
回复
#include<stdio.h>

int ping[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int run[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};

bool f(int year)
{
if(year % 4 == 0 && year % 100 != 0 ||
year % 400 == 0)
return true;
return false;
}

int main()
{
int year,month,day,i,j;
while(~scanf("%d%d%d",&year,&month,&day))
{
if((year == 0 || month == 0 || day == 0) || (month == 2 && day>29) ||
(run[month]<day) ||
(!(year%4 == 0 && year%100 != 0 ||year%400 == 0)&&month == 2 && day == 29)
)
{
printf("illegal\n");
continue;
}
if(f(year))
for(j = 0,i = 1;i<month;i++)
j += run[i];
else
for(j = 0,i = 1;i<month;i++)
j += ping[i];
printf("%d\n",j+day);
}
return 0;
}
ProgrammingRing 2012-03-11
  • 打赏
  • 举报
回复
按你的输入时要加逗号的

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧