用c语言编写一程序,用户输入日期,计算该日是今年的第几天

用c语言编写一程序,用户输入日期,计算该日是今年的第几天,第1张

#include"stdio.h"

#include"stdlib.h"

intmain()

{

intday,month,year,sum,leap

printf("\npleaseinputyear,month,day\n")

scanf("%d,%d,%d",&year,&month,&day)

switch(month)/*先计算某月以前月份的总天数*/

{

case1:sum=0break

case2:sum=31break

case3:sum=59break

case4:sum=90break

case5:sum=120break

case6:sum=151break

case7:sum=181break

case8:sum=212break

case9:sum=243break

case10:sum=273break

case11:sum=304break

case12:sum=334break

default:printf("dataerror\n")break

}

sum=sum+day/*再加上某天的天数*/

if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/

{

leap=1

}

else

{

leap=0

}

if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

{

sum++

}

printf("Itisthe%dthday.\n",sum)

return0

}

扩展资料

C语言输晌档入任意一个日期的年、月、日宴改乱的值,求出是星期几并输出。

#include<stdio.h>

voidmain()

{

inty,m,d,c,s,w

printf("请输入8位年月日,以空格隔开:")

scanf("%d%d%d",&y,&m,&d)

if(m==1)c=d

elseif(m==2)c=31+d

elseif(m==3)c=31+28+d

elseif(m==4)c=31+28+31+d

elseif(m==5)c=31+28+31+30+d

elseif(m==6)c=31+28+31+30+31+d

elseif(m==7)c=31+28+31+30+31+30+d

elseif(m==8)c=31+28+31+30+31+30+31+d

elseif(m==9)c=31+28+31+30+31+30+31+31+d

elseif(m==10)c=31+28+31+30+31+30+31+31+30+d

elseif(m==11)c=31+28+31+30+31+30+31+31+30+31+d

elseif(m==12)c=31+28+31+30+31+30+31+31+30+31+30+d

if(m>2)

{if(y%100==0){if(y%400==0)c=c+1}

elseif(y%4==0)c=c+1}

s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c

w=s%7

switch(w)

{

case0:printf("星期日")break

case1:printf("星期一")break

case2:printf("星期二")break

case3:printf("星期三")break

case4:printf("星期四")break

case5:printf("星期五歼芦")break

case6:printf("星期六")break

printf("\n")

}

}

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

enum DateType

{

  YEAR,

  MONTH,

  DAY,

  HOUR,

  MINUTE,

  SEC,

  MAX,

}

#define DUMMY 0

const char *g_apcCnName[MAX]={"年","月","日","时","分","秒"}

int isLeapYear(int iYear)

{

  return ((iYear%4==0&&iYear%100!=0)||iYear%400==0)

}

int main()

{

  int i

  int aiTime[MAX]={0}

  int aiTimeMaxValue[MAX]={9999,12,31,23,59,59}

  int aiTimeMinValue[MAX]={1970,1,1,0,0,0,}

  int aiMonthMaxDay[]={DUMMY,31,28,31,30,31,30,31,31,30,31,30,31}

  for(i=YEARi<MAX++i)

  {

      printf("请输入%s",g_apcCnName[i])

      scanf("%d",aiTime+i)

      if(MONTH==i&&isLeapYear(aiTime[YEAR]))

      {

          aiMonthMaxDay[2]=29

   空皮   }

      if(DAY==i)

      {

        aiTimeMaxValue[DAY]=aiMonthMaxDay[aiTime[MONTH]]

      }

      if(aiTime[i]>aiTimeMaxValue[i]||aiTime[i]<斗脊差aiTimeMinValue[i])

      {

          printf("输入数据不合法,请重新输入\n")

          i--

      }

  }

  aiTime[SEC]++

  for(i=SECi>YEARi--)

  {

      if(aiTime[i]>aiTimeMaxValue[i])

      {

          aiTime[i]=aiTimeMinValue[i]

          aiTime[i-1]++

      }

  }

  printf("\n最后的输出结果是:")

  for(i=YEARi<MAXi++)

  {

      printf("%d%s",aiTime[i],g_apcCnName[i])

  }

  getch()

  return 0

}

扩展资料:

用while和do…while循环时,循环变量的初始化的 *** 作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式,后野宽执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次。

而while循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,均可广义的把它们看成一个语句。

在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12555681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存