为了账号安全,请及时绑定邮箱和手机立即绑定

求解!!!!

这题如果只用if语句怎么做,计算某日是该年的第几年

正在回答

3 回答

#include<stdio.h>
#include<windows.h>
int main()
{
 int year,month,day;
    int m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
    m1=31;
    m2=28+m1;
    m3=31+m2;
    m4=30+m3;
    m5=31+m4;
    m6=30+m5;
    m7=31+m6;
    m8=31+m7;
    m9=30+m8;
    m10=31+m9;
    m11=30+m10;
 printf("请输入年月日(年月日之间用空间隔):\n");
    scanf("%d%d%d",&year,&month,&day);
    if(year%4==0)
    {
     if(month==1)
     printf("是该年的第%d天\n",day);
     else if(month==2)
     printf("是该年的第%d天\n",day+m1);
     else if(month==3)
     printf("是该年的第%d天\n",day+m2+1);
     else if(month==4)
     printf("是该年的第%d天\n",day+m3+1);
     else if(month==5)
     printf("是该年的第%d天\n",day+m4+1);
     else if(month==6)
     printf("是该年的第%d天\n",day+m5+1);
     else if(month==7)
     printf("是该年的第%d天\n",day+m6+1);
     else if(month==8)
     printf("是该年的第%d天\n",day+m7+1);
  else if(month==9)
     printf("是该年的第%d天\n",day+m8+1);
  else if(month==10)
     printf("是该年的第%d天\n",day+m9+1);
     else if(month==11)
     printf("是该年的第%d天\n",day+m10+1);
     else if(month==12)
     printf("是该年的第%d天\n",day+m11+1);
     else
     printf("请输入正确月份");
    }
    else
    {
     if(month==1)
     printf("是该年的第%d天\n",day);
     else if(month==2)
     printf("是该年的第%d天\n",day+m1);
     else if(month==3)
     printf("是该年的第%d天\n",day+m2);
     else if(month==4)
     printf("是该年的第%d天\n",day+m3);
     else if(month==5)
     printf("是该年的第%d天\n",day+m4);
     else if(month==6)
     printf("是该年的第%d天\n",day+m5);
     else if(month==7)
     printf("是该年的第%d天\n",day+m6);
     else if(month==8)
     printf("是该年的第%d天\n",day+m7);
  else if(month==9)
     printf("是该年的第%d天\n",day+m8);
  else if(month==10)
     printf("是该年的第%d天\n",day+m9);
     else if(month==11)
     printf("是该年的第%d天\n",day+m10);
     else if(month==12)
     printf("是该年的第%d天\n",day+m11);
     else
     printf("请输入正确月份");
    }
    system("pause");
    return 0;
}

/*不才,因为我也是新手,所以过程略显麻烦,请见谅!*/

1 回复 有任何疑惑可以回复我~
#1

qq_沐钼_04007561 提问者

非常感谢!
2017-04-27 回复 有任何疑惑可以回复我~

//我把算法优化了很多,还加了一些判定语句,这下就不会错了
#include <stdio.h>
#include<windows.h>

int ayear(int year)
{
 int y;
 if(year%100==0)
 {
  if(year%400==0)
  y=1;
  else
  y=0;
 }
 else
 {
  if(year%4==0)
  y=1;
  else
  y=0;
 }
 return y; 
}

int amonth(int month)
{
 int m=0,n=0;
 char a[12]={0,31,28,31,30,31,30,31,31,30,31,30};
 for(n;n<month;n++)
 {
  m+=a[n];
 }
 return m;
}

int judgment(int year,int month,int day)
{
 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
 {
  if(day<1||day>31)
  {
   printf("%d月没有%d号\n",month,day);
   return 0; 
  }
  else
  return 1;
 }
 else if(month==4||month==6||month==9||month==11)
 {
  if(day<1||day>30)
  {
   printf("%d月没有%d号\n",month,day);
   return 0;
  }
  else
  return 1;
 }
 else if(month==2)
 {
  if(year==1)
  {
   if(day<1||day>29)
   {
    printf("%d月没有%d号\n",month,day);
    return 0;
   }
   else
   return 1;
  }
  if(year==0)
  {
   if(day<1||day>28)
   {
    printf("%d月没有%d号\n",month,day);
    return 0;
   }
   else
   return 1;
  }
 }
 else
 {
  printf("请输入正确月份\n");
  return 0;
 }
}

int main()
{

    int year,month,day;
    printf("请输入  年  月  日:\n");
    scanf("%d%d%d",&year,&month,&day);
    if(judgment(ayear(year),month,day)==0);
    else
    {
  if(month>2)
  printf("是该年的第%d天\n",day+amonth(month)+ayear(year));
  else
  printf("是该年的第%d天\n",day+amonth(month));
 }
 system("pause");
 return 0;
}


1 回复 有任何疑惑可以回复我~
#1

qq_沐钼_04007561 提问者

谢谢!!!
2017-07-31 回复 有任何疑惑可以回复我~

#include<stdio.h>

int main()

{

int year=2018,month=8,day=8,sum,flag;


if(month==1)

sum=0;

else

if(month==2)

sum=31;

else

if(month==3)

sum=59;

else

if(month==4)

sum=98;

else

if(month==5)

sum=120;

else

if(month==6)

sum=151;

else

if(month==7)

sum=181;

else

if(month==8)

sum=212;

else

if(month==9)

sum=243;

else

if(month==10)

sum=273;

else

if(month==11)

sum=304;

else

if(month==12)

sum=334;

else

printf("一年之中只有12个月哦!");


sum=sum+day;

if(year%400==0||(year%4==0 && year%100!=0))

flag=1;

else

flag=0;

if(flag=1 && month>2)

sum++;

printf("%d年%d月%d日是该年的第%d天。\n",year,month,day,sum);

return 0;

}


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926263    人
  • 解答问题       20798    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程
意见反馈 帮助中心 APP下载
官方微信