Switch语句是C语言的几个分支结构

本次编程练习,是根据输入的今年的第几天,输出是 几月几日,星期几。

实现思路大致如下:

1.先读取系统时间,得知今年的年号,
2.根据年号获得今年的第一天是星期几
3.得知今年是否闰年
4.switch语句初始化今年每个月的天数(注意是否闰年对二月单独处理)
5 .for循环查询月份和当月的日期
6.计算星期几
7. 输出月日
8.switch 输出星期几

#include <iostream>
#include <stdio.h>
#include <time.h>
#include <conio.h>int leapYear(int y)
{//return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);int r = 0;if (y % 100 == 0){//整百年数if (y % 400 == 0) r = 1;else r = 0;}else{//非整百年数if (y % 4 == 0)r = 1;else r = 0;}return r;}
long firstDayOfYear(int y)
{long n;int i = 1;n = y * 365;for (i = 1; i < y; i++) {if (leapYear(i))n += 1;}return n %= 7;//n=n%7;
}int main()
{int year;char szCurrentDateTime[32];time_t nowtime;struct tm ptm;int monthdays[12];int isleapyear;int diyitianxingqiji;time(&nowtime);localtime_s(&ptm,&nowtime);sprintf_s(szCurrentDateTime, "M-%.2d-%.2d %.2d:%.2d:%.2d",ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday,ptm.tm_hour, ptm.tm_min, ptm.tm_sec);//printf(szCurrentDateTime);//得到当前年号year = ptm.tm_year + 1900;//一般方法是用4或400去除这一年的年份数,如果除得的商是整数而没有余数,那么这一年是闰年isleapyear=leapYear(year);diyitianxingqiji = firstDayOfYear(year);printf("今年第一天是星期几=%d\n", diyitianxingqiji);for (int i = 0; i < 12; i++){switch (i){case 0: monthdays[i] = 31;break;case 1: if (isleapyear==1)monthdays[i] = 29;else monthdays[i] = 28;break;case 2: monthdays[i] = 31;break;case 3: monthdays[i] = 30;break;case 4: monthdays[i] = 31;break;case 5: monthdays[i] = 30;break;case 6: monthdays[i] = 31;break;case 7: monthdays[i] = 31;break;case 8: monthdays[i] = 30;break;case 9: monthdays[i] = 31;break;case 10: monthdays[i] = 30;break;case 11: monthdays[i] = 31;break;}}int dijiday;printf("请输入需要查询的是今年第多少天\n");scanf_s("%d", &dijiday);int ztsh = 365;if (isleapyear == 1)ztsh = 366;if (dijiday < 1 || dijiday>ztsh){printf("err input\n");exit(0);}int monthx=0,dayx=0;int weekx=0;int sum = 0;int oldsum = 0;for (int i = 0; i < 12; i++){sum = sum + monthdays[i];if (sum >= dijiday){monthx = i + 1;dayx = dijiday - oldsum;break;}oldsum = sum;}weekx = (diyitianxingqiji + dijiday-1) % 7;printf("今年第%d天是 %d 月 %d 日 星期 ", dijiday, monthx, dayx);switch (weekx){case 0:printf("日\n");break;case 1:printf("一\n");break;case 2:printf("二\n");break;case 3:printf("三\n");break;case 4:printf("四\n");break;case 5:printf("五\n");break;case 6:printf("六\n");break;}_getch();}

C语言编程 Switch 语句编写 最简单的日历相关推荐

  1. c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...

    c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语 ...

  2. 38.求解简单表达式。输入一个形式如“操作数  运算符  操作数”的四则运算表达式,输出运算结果,要求使用switch语句编写

    38.求解简单表达式.输入一个形式如"操作数 运算符 操作数"的四则运算表达式,输出运算结果,要求使用switch语句编写 #include<stdio.h> int ...

  3. c语言程序设计中常用语句,单片机C语言编程常用语句

    <单片机C语言编程常用语句>由会员分享,可在线阅读,更多相关<单片机C语言编程常用语句(22页珍藏版)>请在人人文库网上搜索. 1.C51程式设计一般陈述式摘要,1,C51 S ...

  4. python编辑程序、根据输入的百分制数_输入一个百分制成绩,利用switch语句编写程序,要求输出成绩等级A B C D,E。90以上为A...

    输入一个百分制成绩,利用switch语句编写程序,要求输出成绩等级A B C D,E.90以上为A 程序:int main() {int n; scanf("%d",&n) ...

  5. 百分制转换为等级制(Centesimal-grade to Letter-grade)利⽤switch语句编写⼀个程序,把⽤数字表示的成绩转化为字⺟表示的等级。

    将百分制转换为等级制(Centesimal-grade to Letter-grade) 利⽤switch语句编写⼀个程序,把⽤数字表示的成绩转化为字⺟表示的等级. 使⽤下⾯的等级评定规则:A为90~ ...

  6. 5、假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后)。① 0 ≤ma<1000时,

    5.假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后). ① 0 ≤ma<1000时 ...

  7. 利用switch语句编写一个程序

    利用switch语句编写一个程序,用户从键盘输入一个数字.如果数字为1~5,则打印信息:You wntered 5 or below!;如果数字为6~9,则打印信息:You entered 6 or ...

  8. c语言某年某月的天数switch,在C语言中 使用switch语句编写“显示某年某月的天数”程序:...

    那就在进入swith语句之前先处理一下,比如先建立两个整形数组预存储闰年和非闰年的每个月的天数,再就是判断一下闰,加上一个判断条件,分入口进入switch语句就可以了. 其实,写程序是"法无 ...

  9. c语言 方程改main的值_C语言编程笔记丨编写第一个C语言程序hello world,我教你哇...

    如果用C语言输出:Hello,world!,该如何编写程序? **代码如下:** #include//包含标准库的信息 main()//定义名为main的函数,不接受参数值 {//main函数的语句都 ...

最新文章

  1. 2017先知创新大会:有ZHI而来
  2. 计算机硬件的基本组成概述
  3. 使用jquery调试ajax接口-2
  4. 阿里DIN模型(深度兴趣网络)详解及理解
  5. 从零开始搭建Ubuntu 环境下的Android 源码开发环境
  6. SQL 查找重复记录
  7. win7信息服务器,Windos2012 中的共享,win8/win10用户访问正常,WIN7用户不能访问
  8. WPF MVVM 架构 Step By Step(4)(添加bindings - 完全去掉后台代码)
  9. c语言编译器苹果下载,c语言编译器ios下载
  10. docker 僵尸进程
  11. 概率论考点之排列与组合
  12. Asp 解析 XML并分页显示
  13. 目前能利用的5个视频模块
  14. 电信机顶盒时中心服务器异常,电信机顶盒常见故障汇总大全
  15. ios版本与xcode版本
  16. JVM深入学习(十六)-垃圾回收器的分类和性能指标
  17. nova系列可以升级鸿蒙吗,鸿蒙官网再度放出新消息,华为nova 6系列以上7款机型可以升级...
  18. Keil MDK5生成bin文件时生成了*.bin文件夹
  19. python中break怎么用_详解Python中break语句的用法
  20. 当机器学习遇到病理学,机遇和挑战(UCL柴秉浩博士 | 钰沐菡 公益公开课)

热门文章

  1. iscsi没有可用于使用快速连接登陆的目标_【解密】5G商用在即 OPPO快速网络切换方法;高管宣布华为河图商标注册成功;小米折叠屏专利曝光 类似于摩托罗拉Razr...
  2. Typescript - enum 枚举类型(数值型枚举 / 字符串枚举 / 常量枚举 / 异构枚举 / 计算枚举成员 / 联合枚举和枚举成员类型 / 运行时的枚举 / 环境枚举 / 对象与枚举)教程
  3. Excel中如何使用字符串提取函数LEFT
  4. ElasticSearch排序引起的all shards failed异常
  5. day13_spring环境配置及bean使用
  6. oracle集群启动状态,循序渐进:Oracle 11.2 RAC集群进程的初始化与启动过程
  7. 图标(Icon)和图标按钮(IconButton)
  8. 用vue(element ui)快速开发后台管理
  9. 中文模糊查找(C语言)+ 链表操作
  10. 思维改变生活:很多事情亲身经历之后才会明白