0613,基本数据类型,表达式

目录

第三章(基本数据类型)思维导图

题目1,选做:0xCAFE的各种位运算

答案代码/补:

参考答案:

题目二,必做:判断闰年,下一天,两天时差,星期几

答案代码:个人

参考答案: 

题目1,选做:0xCAFE的各种位运算

假设 int n = 0xCAFE; 请用表达式完成下面操作 (拓展题:不要求每个同学都写)

(a) 测试最后 4 位中是不是最少有 3 位为 1.

(b) 逆转字节序(i.e.,使 n = 0xFECA)

(c) 旋转 4 位 (i.e., 使 n = 0xECAF)

答案代码/补:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>bool is_three(int a);
int feca(int a);
int ecaf(int a);int main(void) {int n = 0xCAFE;printf("%.4x\n", n);if (is_three(n)) {printf("yes\n");}else {printf("nono\n");}printf("%.4x\n", feca(n));printf("%.4x\n", ecaf(n));return 0;
}bool is_three(int a) {int mask = a & 0xf; //只看后四位//printf("%.4x\n", mask);if (mask == 0x7 || mask == 0xb || mask > 0xc) {return true;}else {return false;}
}int feca(int a) {//0xCAFEint temp1 = a & 0xff;     //temp1=0x00feint temp2 = a & 0xff00;   //temp2=0xca00temp1 <<= 8;              //temp1=0xfe00temp2 >>= 8;              //temp2=0x00careturn temp1 | temp2;
}int ecaf(int a) {//0xCAFEint temp1 = a & 0xf;     //temp1=0x000eint temp2 = a & 0xfff0;   //temp2=0xcaf0temp1 <<= 12;              //temp1=0xe000temp2 >>= 4;              //temp2=0x0cafreturn temp1 | temp2;
}
参考答案:

(a)

&

int x = n & 0xF;
x == 0x7 || x == 0xB || x >= 0xD;
1111, 1110, 1101, 1011, 0111
F     E     D     B     7

(b)

(n & 0xFF) << 8;    0xFE00
n >> 8;             0x00CA
((n & 0xFF) << 8) | (n >> 8);

(c)

(n & 0xF) << 12;   0xE000
(n >> 4);		  0x0CAF
((n & 0xF) << 12) | (n >> 4);

题目二,必做:判断闰年,下一天,两天时差,星期几

(a) 目前使用的格里高利历闰年的规则如下:

  1. 公元年分非4的倍数,为平年。

  2. 公元年分为4的倍数但非100的倍数,为闰年。

  3. 公元年分为100的倍数但非400的倍数,为平年。

  4. 公元年分为400的倍数为闰年。

请用一个表达式判断某一年是否为闰年。

(b) 输入某一天的年月日,输出下一天的年月日。

(c) 输入某两天的年月日,输出这两天的相距多少天(不考虑公元前,且第一个日期比第二个日期要早)。

(d) 已知1970年1月1日是星期四,输入之后的某一天的年月日,判断它是星期几?

答案代码:个人
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>
/*
(d) 已知1970年1月1日是星期四,输入之后的某一天的年月日,判断它是星期几?*/bool is_leap(int t_year);
void tomorrow(int t_year, int t_mon, int t_day,bool judge);
int interval1( int t_mon, int t_day, bool judge);
int interval2( int t_mon, int t_day, bool judge);
int interval3(int t_year,int s_year);int main(void) {int t_year, t_mon, t_day;int s_year, s_mon, s_day;printf("第一个问题:insert date\n");scanf("%d%d%d", &t_year,&t_mon,&t_day);bool judge = is_leap(t_year);if (judge==true) {printf("%d is leap year.\n", t_year);}else {printf("%d is not leap year.\n", t_year);}tomorrow(t_year, t_mon, t_day, judge);printf("第二个问题:insert first date\n");scanf("%d%d%d", &t_year, &t_mon, &t_day);printf("insert second date\n");scanf("%d%d%d", &s_year, &s_mon, &s_day);judge = is_leap(t_year);bool judge1 = is_leap(s_year);int days01 = interval1( t_mon, t_day, judge);int days02 = interval2(s_mon, s_day, judge1);int days03 = interval3(t_year,s_year);int result_days = days01 + days02 + days03;printf("%d\n", days01);printf("%d\n", days02);printf("%d\n", days03);printf("%d-%d-%d between %d-%d-%d has %d\n", t_year, t_mon, t_day, s_year, s_mon, s_day, result_days);printf("第三个问题:insert one date affter 1970,01,01\n");scanf("%d%d%d", &t_year, &t_mon, &t_day);judge = is_leap(1970);judge1 = is_leap(t_year);days01 = interval1(1, 1, judge);days02 = interval2(t_mon, t_day, judge1);days03 = interval3(1970, t_year);result_days = days01 + days02 + days03;printf("%d\n", days01);printf("%d\n", days02);printf("%d\n", days03);printf("1970-1-1 between %d-%d-%d has %d\n",  t_year, t_mon, t_day, result_days);result_days %= 7;switch (result_days) {case 0:printf("周4\n"); break;case 1:printf("周5\n"); break;case 2:printf("周6\n"); break;case 3:printf("周7\n"); break;case 4:printf("周1\n"); break;case 5:printf("周2\n"); break;case 6:printf("周3\n"); break;}return 0;
}//是否是闰年
bool is_leap(int t_year) {bool judge = false;if ((t_year % 4 == 0 && t_year % 100 != 0) || (t_year % 400 == 0)) {//printf("%d is leap year.\n", t_year);judge = true;}//else {//	  printf("%d is not leap year.\n", t_year);//}return judge;
}//明天
void tomorrow(int t_year, int t_mon, int t_day, bool judge) {int aff_year=t_year, aff_mon=t_mon, aff_day=t_day;int month[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };if (judge == true) {month[1] = 29;}if (month[t_mon-1] == t_day) {aff_day = 1;if (t_mon == 12) {aff_year =t_year+ 1;aff_mon = 1;}else {aff_mon +=1;}}else {aff_year = t_year;aff_mon = t_mon;aff_day += 1;}printf("tomorrow is %d %d %d\n\n", aff_year, aff_mon, aff_day);
}//第一年剩余时间
int interval1( int t_mon, int t_day, bool judge) {int days = 0;int month[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };if (judge == true) {month[1] = 29;}int i = 0; for (i = 0; i < t_mon-1; i++) {days += month[i];}if (judge==true) {days = 366 - (days + t_day);}else {days = 365 - (days + t_day);}return days;
}//最后一年度过时间
int interval2(int t_mon, int t_day, bool judge) {int days = 0;int month[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };if (judge == true) {month[1] = 29;}int i = 0;for (i = 0; i < t_mon - 1; i++) {days += month[i];}days += t_day;return days;
}//中间年份时间
int interval3(int t_year, int s_year) {int days03=0;int i = t_year + 1;for (i = t_year + 1; i <= s_year-1; i++) {bool judge = is_leap(i);if (judge == true) {days03 += 366;}else {days03 += 365;}}return days03;
}

参考答案: 

(a)

bool isLeapYear(int year) {return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}

(b)

int daysOfMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };void setDaysOfFeb(int year) {if (isLeapYear(year)) {daysOfMonth[2] = 29;} else {daysOfMonth[2] = 28;}
}int main(void) {int year, month, day;scanf("%d%d%d", &year, &month, &day);day++;setDaysOfFeb(year);if (day > daysOfMonth[month]) {day = 1;month++;}if (month > 12) {month = 1;year++;}printf("%4d/%.2d/%2d\n", year, month, day);return 0;
}

(c)

int daysOfMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int  distance(int year1, int month1, int day1, int year2, int month2, int day2) {int days = 0;// 计算year1还剩多少天setDaysOfFeb(year1);days += daysOfMonth[month1] - day1;for (int i = month1 + 1; i <= 12; i++) {days += daysOfMonth[i];}// 计算中间年份的天数for (int i = year1 + 1; i < year2; i++) {days += 365;if (isLeapYear(i)) {days++;}}// 计算year2过了多少天setDaysOfFeb(year2);for (int i = 1; i < month2; i++) {days += daysOfMonth[i];}days += day2;// 如果 year1 == year2, 那么多算了一整年if (year1 == year2) {days -= 365;if (isLeapYear(year1)) {days--;}}return days;
}

(d)

int weekday(int year, int month, int day) {int days = distance(1970, 1, 1, year, month, day);return (4 + days) % 7; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红队实战宝典之内网渗透测试

本文源自《红队实战宝典之内网渗透测试》一书前言。 近年来&#xff0c;随着计算机网络技术的发展和应用范围的扩大&#xff0c;不同结构、不同规模的局域网和广域网迅速遍及全球。 以互联网为代表的计算机网络技术在短短几十年内经历了从0到1、从简单到复杂的飞速发展&#…

STM32单片机-PWR电源控制和WDG看门狗

STM32单片机-PWR电源控制和WDG看门狗 一、PWR简介二、低功耗模式三、修改主频&睡眠模式&停机模式&待机模式3.1 修改主频3.2 睡眠模式3.3 停机模式3.4 待机模式 四、WDG简介4.1 独立看门狗原理4.2 窗口看门狗原理4.3 IWDG和WWDG对比 五、独立看门狗&窗口看门狗5…

DrissionPage框架应用

DrissionPage框架应用 Scrapy框架可以自定义请求&#xff0c;我们经常使用的selenium,pypuppteer&#xff0c;playwight等模拟浏览器的环境执行网络的请求&#xff1b;但是以上都有被检测的风险&#xff0c;新晋浏览器防检测工具&#xff0c;不仅不需要繁琐的安装浏览器的内核&…

『大模型笔记』斯坦福大学教授李飞飞在2024年数据与人工智能峰会上的人工智能历史与未来

MAC 文章目录 一. 斯坦福大学教授李飞飞在2024年数据与人工智能峰会上的人工智能历史与未来引言过去与现在现代 AI 的进步未来的发展空间智能近期进展与未来展望文字输入制作视频机器人学习AI 与人类互动医疗健康应用结语二. 参考文献一. 斯坦福大学教授李飞飞在2024年数据与人…

全球AI视频技术竞赛加速:Runway即将推出更优更快的第三代AI视频模型|TodayAI

Runway即将在未来几天推出其更优更快的第三代AI视频模型&#xff0c;这是新一代模型中最小的一个。据公司透露&#xff0c;这款名为Gen-3的模型将带来“在真实度、一致性和动态效果上的重大提升”&#xff0c;同时在速度上也有显著的加快。 去年六月&#xff0c;Runway首次推出…

Mathtype与word字号对照+Mathtype与word字号对照

字体大小对照表如下 初号44pt 小初36pt 一号26pt 小一24pt 二号22pt 小二18pt 三号16pt 小三15pt 四号14pt 小四12pt 五号10.5pt 小五9pt 六号7.5pt 小六6.5pt 七号5.5pt 八号5pt 1 保存12pt文件 首选选择第一个公式&#xff0c;将其大小改为12pt 然后依次选择 “预置”—…

ClipArt ETC - 典雅的剪贴画网站

文章目录 ClipArt ETCClippix佛罗里达教学技术中心课堂数字内容 ClipArt ETC 网站地址&#xff1a; https://etc.usf.edu/clipart/ ClipArt ETC为学生和教师提供了超过71,500件高质量的教育剪贴画。 每个插图都有图像大小的选择以及学校项目中正确引用的完整源信息。 所有图像…

【Java】已解决java.sql.SQLRecoverableException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.sql.SQLRecoverableException异常 在Java的数据库编程中&#xff0c;java.sql.SQLRecoverableException是一个重要的异常&#xff0c;它通常表示一个可以恢复的SQL异常。…

【扫雷游戏】C语言教程

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

低温环氧胶在指纹模组封装中的应用有哪些?

低温环氧胶在指纹模组封装中的应用有哪些&#xff1f; 低温环氧胶在指纹模组封装中的应用点主要包括以下几点&#xff1a; 金属环/框与FPC基板固定&#xff1a;低温固化环氧胶被推荐用于固定金属环或框到柔性印刷电路板(FPC)基板上&#xff0c;确保它们之间有稳固的连接。 传感…

国产数据库也开始堆砌功能了?试图在行业中炫技!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

数位统计DP——AcWing 338. 计数问题

数位统计DP 定义 数位DP&#xff08;Digital DP&#xff09;是一种用于解决与数字的数位相关问题的动态规划算法。它将数字的每一位看作一个状态&#xff0c;通过转移状态来计算满足特定条件的数字个数或其他相关统计信息。 运用情况 统计满足特定条件的数字个数&#xff0…

成都欣丰洪泰文化传媒有限公司开网店怎么样?

在数字化浪潮汹涌的今天&#xff0c;电商行业蓬勃发展&#xff0c;成为推动经济增长的重要引擎。在这个竞争激烈的市场环境中&#xff0c;如何脱颖而出&#xff0c;成为电商领域的佼佼者&#xff1f;成都欣丰洪泰文化传媒有限公司以其专业的电商服务&#xff0c;为众多商家提供…

【Go】用 Go 原生以及 Gorm 读取 SQLCipher 加密数据库

本文档主要描述通过 https://github.com/mutecomm/go-sqlcipher 生成和读取 SQLCipher 加密数据库以及其中踩的一些坑 用 go 去生成读取 SQLCipher 数据库用 gorm 去读取 SQLCipher 数据库在生成后分别用 DBeaver、db browser 和 sqlcipher 读取 SQLCipher 数据库&#xff0c;…

1.搭建SpringBoot项目三种方式

目录 1.使用Spring Initializr 1.1访问Spring Initializr: 1.2填写项目基本信息 1.3配置项目元数据: 1.4添加依赖: 1.5生成项目: 1.6下载项目: 1.7解压项目: 1.8导入项目到IDE: 1.9运行项目: 1.10创建控制器: 1.11访问应用 2.使用IDE&#xff08;集成开发环境&…

34、shell数组+正则表达式

0、课前补充 jiafa () { result$(echo " $1 $2 " | bc ) print "%.2f\n" "$result" } ##保留小数点两位 薄弱加强点 a$(df -h | awk NR>1 {print $5} | tr -d %) echo "$a"一、数组 1.1、定义 数组的定义&am…

配电室数据中心巡检3d可视化搭建的详细步骤

要搭建配电室巡检的3D可视化系统&#xff0c;可以按照以下步骤进行&#xff1a; 收集配电室数据&#xff1a; 首先&#xff0c;需要收集配电室的相关数据&#xff0c;包括配电室的布局、设备信息、传感器数据等。可以通过实地调查、测量和设备手册等方式获取数据。 创建3D模型…

解决java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘1‘ for key ‘book.PRIMARY‘

目录 问题 原因 解决方案 问题 场景&#xff1a;有张图书表&#xff0c;主键是自增的。现在我写了个添加图书功能。因为主键是自增的我插入时无需设置主键值。 关键代码如下&#xff1a; 然后就报这个异常了&#xff1a; 找了一圈并没有发现能解决我这个问题的。最终仔细分…

电脑桌面文件夹删除不了怎么办?6种方法快速解决,建议收藏!

桌面文件夹删不掉怎么办&#xff1f;有时会遇到桌面上的文件夹无法删除的问题&#xff0c;这是由于文件夹被系统进程或某些应用占用&#xff0c;或者是由于权限设置等原因造成的。以下是解决桌面文件夹无法删除问题的方法&#xff0c;帮助你有效地清理桌面环境。 桌面文件夹删不…