吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1082|回复: 4
收起左侧

[学习记录] C语言学习100列之004

  [复制链接]
流光 发表于 2021-12-2 09:36
【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。


2.程序源代码:


[C] 纯文本查看 复制代码
#include "stdio.h"
#include "conio.h"
main()
{
  int day,month,year,sum,leap;
  printf("\nplease 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=243;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(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/
    sum++;
  printf("It is the %dth day.",sum);
  getch(); 
}



自写代码:

[C] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*
//闰年366天 平年365天 多的那一天就是2月的一天,平年二月28天,闰年29天.
//1、3、5、7、8、10、12月每月31天
//4、6、11其他的月份就是三十天每月.
//2月闰年29天,不是闰年就是28天
*/


int main() {


	int fun_yuefen(int,int);
	int fun_run(int);
	//声明作用域内函数
	int nian, yue, ri, sum = 0;//年:nian 月:yue 日:ri 总天数:sum
	printf("请输入:年-月-日(不加0):\n举个栗子:2021-5-12\n");
	scanf("%d-%d-%d", &nian, &yue, &ri);

	for (int i = 1; i < yue; i++)
	{
		sum += fun_yuefen(nian, i);//月份累计

	}
	sum += ri;// 日累加


	printf("这一年已经过去%d天", sum);


	return 0;

}

//判断闰年函数
int fun_run(int n) {
	if (n % 400 == 0) { return 1; }    //命中闰年规则被400整除,返回成功状态1
	else if (n % 4 == 0 && n / 100 != 0) { return 1; } //命中闰年规则被4整除,但是不能被100整除,返回成功状态1
	else { return 0; }//未命中,返回成功状态0
}


int fun_yuefen(int nian, int yue) {

	if (yue == 2)  // 优先判断 传入的参数是不是2月份
	{
		if (fun_run(nian) == 1) { return 29; }//判断是不是闰年   闰年 2月份29天
		else { return 28; }//平年 2月份28天
	}
	else if (yue == 4 || yue == 6 || yue == 11) { return 30; }//4、6、11每月固定30天
	else { return 31; }//1、3、5、7、8、10、12月每月31天
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zck1 发表于 2021-12-2 10:28
不错不错,学习了
zhchxu123 发表于 2021-12-2 10:30
987fw 发表于 2021-12-2 11:12
怎样算从今天排除星期六星期天后,往后推100天后的日期?以及与今天相隔多少天?相隔多少天要计算星期六星期天。
gaoyingjie123 发表于 2021-12-2 11:29
学习永无止境 我也想要学习 希望大佬分享呀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表