Parallels Desktop 16.5 M1 使用到期的解决方法

将mac的系统时间改为使用到期之前的时间即可: 就比如现在我的体验到期时间是2021-5-20号 接下来修改mac的当前系统时间 点击时间与日期 将当前时间改为到期日期之前的时间,然后再去查看我们的试用时间 现在已经变成了3天 改时间大法还是依旧的稳。 以上就是小编今天为大家分享的内容,希望对您有所帮助,想了解更多关于Mac相关知识,请关注macz吧

C语言中static关键字的作用

转载引用文章:原博主文章 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 下面是main.c的内容 程序的运行结果是: A Hello 你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。 如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。 (2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。虽然这种用法不常见,但我还是举一个例子。 程序的运行结果是: global local static 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1 (3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然后把不是0的几个元素赋值。如果定义成静态的,就省去了一开始置0的操作。再比如要把一个字符数组当字符串来用,但又觉得每次在字符数组末尾加’\ 0’太麻烦。如果把字符串定义成静态的,就省去了这个麻烦,因为那里本来就是’\0’。不妨做个小实验验证一下。 程序的运行结果如下 最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。 以上内容出自博客园Mr. Write之手,写的相当清晰易懂,存档方便复习。 下面是中兴通讯2012校招笔试题的一道问答题: static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。 这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别 ? 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别? static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static修饰的函数),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件.

c语言中leap是什么意思,C++中leap是什么

C++中leap是什么0 #include "stdio.h" int main(void) { int day, day_year, month, year; int repeat, ri; int day_of_year(int year, int month, int day); scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%d%d%d", &year, &month, &day); /*---------*/ day_year = day_of_year(year, month, day); printf("days of year: %d\n", day_year); } } /*---------*/ int day_of_year(int year, int month, int day) { int k, leap; int tab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

MicroLib微库和ARM标准C库有什么区别?

关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | 嵌入式专栏 我们在使用Keil MDK编程,用到printf打印输出时,通常都会使能Keil工具自带的微库(MicroLib): 下面就来讲讲关于Keil MDK中的这个MicroLib微库。 1什么是MicroLib? MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库。 与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势。 上图是一个性能基准测试代码,通过上图可以发现,微库在不同内核下代码量明显少很多。 补充: C语言标准库,我们经常都会调用,比如:<stdio.h>、 <stdlib.h>、 <string.h>、 <math.h>、 <error.h>、 <assert.h>等库文件。 在这些文件下还有很多各类库函数,比如:printf()、 malloc()、 memcpy()、 strncpy()等。 2微库和ARM标准C库区别 因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C库进行了优化,以减小代码量。 优化标准库,肯定会带来一些差异,下面分享几点主要的差异: 1.代码(数据)量更小(对比上图)。 2.缺少一些不常用标准库函数,比如:文件 I/O 的库函数。 3.微库最大程度优化代码量,可能会导致有些库代码运行速度更慢。 4.可用于RTOS这类系统中,但不支持在像Windosw这类系统中。 3最后 微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。 比如:你的项目经过验证,发现微库的代码量,或者运行速度都不理想的情况下,可以自己修改原型函数。 当然,在万不得已的情况下才建议修改原型函数。通常还是建议直接使用微库,毕竟经过别人多次验证的库,出现bug的概率更小。 ------------ END ------------ 后台回复『Keil系列教程』『嵌入式软件设计与开发』阅读更多相关文章。 欢迎关注我的公众号,回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。 欢迎关注我的视频号: 点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

leetcode 1707. 与数组中元素的最大异或值

题目 给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。 第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或(XOR)得到的最大值。换句话说,答案是 max(nums[j] XOR xi) ,其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi,最终答案就是 -1 。 返回一个整数数组 answer 作为查询的答案,其中 answer.length == queries.length 且 answer[i] 是第 i 个查询的答案。 示例 1: 输入:nums = [0,1,2,3,4], queries = [[3,1],[1,3],[5,6]] 输出:[3,3,7] 解释: 0 和 1 是仅有的两个不超过 1 的整数。0 XOR 3 = 3 而 1 XOR 3 = 2 。二者中的更大值是 3 。1 XOR 2 = 3.

c语言如何在notepad中运行,如何使用notepad++编c语言?

使用notepad++编c语言,解决这个问题的方法如下: 1、首先打开Notepad++软件,进入主界面。 2、打开菜单栏中的运行,点击其中的运行,或者按F5。弹出设置对话框。 3、在弹出的设置对话框中填准确信息: cmd /k gcc -o "D:\study\$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" & PAUSE & EXIT然后名字为编译c,快捷键自己设置。 4、同样第二个:cmd /k "D:\study\$(NAME_PART)" & PAUSE & EXIT名字为运行c,快捷键自己设置。设置好以后关闭对话框即可。 5、然后在软件简单地测试程序,检验是否通过。程序具体为: #include int main(void) { int i1=1,i2=2; int sum=i1+i2; printf("%d\n",sum); return 0; } 6、然后依次点击编译c和运行c,最终测试通过。 7、最后可以使用这个编译器编程,问题解决了。

Unity 发布webgl 通过IP端口访问无限制,布置IIS

首先电脑开启IIS权限,自行百度,此处不做赘述 打开IIS,右键添加网站 2.输入网站名称(随便输入即可)、物理路径(项目工程文件所在位置,安全情况下可以范围大一些)、端口(一般8080之类的就可以) 3.双击MIME,点击右上角添加 4.添加两个,一个是.unity3d,类型为application/octet-stream 一个是.unityweb,类型为application/binary 另外可根据自己需要增加,类似.json,等等。 添加完成后如下图所示 5.输入自己主机的IP地址+:端口号+项目index 路径即可在本局域网内打开

w ndows只能安装到gpt磁盘,在EFI系统上Windows只能安装到GPT磁盘的解决方法

最近帮同事做重做系统,自然是要装最新的win8的64位了,但是安装时出现选择分区后无法进行安装的问题,提示:。。。在EFI系统上Windows只能安装到GPT磁盘。。。 第一个同事电脑bios里有关于启动时的efi的设置,进入bios后关闭efi启动(请自行进入bios仔细找找~)就ok,顺利安装~ 第二个同事电脑bios无efi的任何设置的地方,更关键的是他bios efi默认启用的,既然无法从bios里关闭,那就想其他办法了。。。因为是用u盘做的启动盘,打开做好系统的u盘,把根目录下的efi目录直接删除(或 者剪切到别的地方),再次重新安装,一切ok! 至此,该问题顺利解决,留档备查~ 对于华硕品牌的电脑,启动时可以长按ESC键选择启动模式。 最新补充: 电脑型号:华硕s550c 开机不停点击delete键进入bios,其他型号可能进入bios方法不同。 进入Security—Secure Boot—Disabled 如果不修改Secure boot选项为Disabled,在光驱引导时可能会出现报错 进入Startup—UEFI/Legacy Boot选项,设置为enable。 保存配置重启电脑,长按ESC键选择启动模式。 不同电脑BIOS菜单项名称不同, 你就翻遍BIOS,应该是可以找到的。 有问题可以加QQ:1987152156一起探讨。

CoolShell-第4题

第4题地址:https://fun.coolshell.cn/furyy.html 没啥想法,输入cat试试,https://fun.coolshell.cn/cat.html。 得到了提示,但是看不懂。 因为对计算机英语不敏感,对pattern这个词没啥想法,在这里卡了很久。 查看网页源代码时,发现网页下方有一堆注释,可能这就是所谓的source。 最后是在网上搜到了解决方法…… 原来题目的意思是这样的,已知几个回文串的模式,其中标红的c、a、t是正确的格式,从source中找到模式相同的字符。 1、X3c3X 2、XYaYX 3、56b65 4、5YaY5 5、Z8Y8Z 6、Z8t8Z 7、Sa3aS 8、C121C 稍微推理一下: 1、只看到了英文字符和数字,暂且认为只支持这两种字符。由于后面两个字符是前两个字符的镜像,不做考虑。穷举前三个位置的组合则有: [大写、小写、数字][大写、小写、数字][大写、小写、数字] 2、2和4中间都是a,但是2不符合模式,说明前两个字符不能同时是大写 [大写、小写、数字][小写、数字][大写、小写、数字] 或 [小写、数字][大写、小写、数字][大写、小写、数字] 3、5和6只有中间的Y和t有差别,说明中间不能是大写 [大写、小写、数字][小写、数字][小写、数字] 或 [小写、数字][大写、小写、数字][小写、数字] 4、1和8可知,中间也不能是数字 [大写、小写、数字][小写、数字][小写] 或 [小写、数字][大写、小写、数字][小写] 5、3和4可知,前两个字符不能同时是数字 [大写、小写][小写、数字][小写] 或 [大写、小写、数字][小写][小写] 或 [小写][大写、小写、数字][小写] 或 [小写、数字][大写、小写][小写] 6、可能有点多,大胆假设前两个字符也不能是小写 [大写][数字][小写] 或 [数字][大写][小写] 这样的模式似乎简单很多,写成JavaScript的正则大概是: /[A-Z][0-9][a-z][0-9][A-Z]|[0-9][A-Z][a-z][A-Z][0-9]/ 但是第1个字符要和第5个字符相同,第2个字符要和第3个字符相同,正则怎么写呢? 正则表达式有元组的概念,用括号括起来,匹配的结果可以用\1表示(\1为第1个结果,\2为第2个结果,以此类推)。 所以,改革后的正则表达式为: /([A-Z])([0-9])[a-z]\2\1|([0-9])([A-Z])[a-z]\4\3/ 代码走起。 var source = [ "h8:x@03B:V<7Q3:]iqbn58|YoLGtweZus;17tws3jCvIiXl[g=0gekz74y`d[5qri3UJu0fEK26YZ16y", "y_^PvUKQdP@D[Tcq22E3?mW9L[`GhY4eGQrWL;BAV:rq2TTa>waM;[MQgDTKG7[4flxrIGkPVmbGYMlm", "c5nMro2nMfxtOveG9T?w?T_0C4KURCN?0PD82kE9hiECr0FHu:nd9i^3G9]:O4aXX`|UWPTw?B25h:lX", "W|=eh:Rk3U]JtO8zPB|zP6cTra=9td[0oI4ovjVpNV1n=Bk[K]q1LzQKP]>lQonjGE9<|Iz7MQp7Wrkb", "Eaew<2^g?a>PXKzjs@9dM=rmVaVm8@Sj9vHv9mughzX[Rkj>iQK0s1>1sC>Qu`I[]EE8GHnEV7iMIczz", "eKt>oa?pWywf>oQM`l^Y@8ajkp=pksw6WYzQwzq8@bmt00Nc|59;5r`2M2`|=xRtvCj61NLH_k5_5kCO", "rtR]9R<iU|g`W3Bx0AiXcr4dI<yT=7xv<hp[dXO|eXPczD2wBe@NtGK?w12C;W98CO3n;axswfvpT;F;", "ViU|T6:BXfLAfZPn|opFbYWFtR<0KI[4XVrYECPTVMIt^k;XFO0q;O:Z4k0N?WESWZqiqZ]Y;p]7vQpf", "N>Iyxq^_W3h|<;?[N:B=YKzGUjcFERBj0UM|Kom^BbFaFbqNfhCdChB248BN3?qZmW6:Tn^3fo>yJuXe", "^j@HXzxP`@uPlPuttTcy8QFn>;7X2X7YLSLYp7Lufz=qWF<=|74E?KPW>09qW:6QWq@WNK<GTy0p^JSE", "6]XgGjQ1i357dIxGedw;=Q:RR@HyE`9QLZQVEz:<GnP8XgfONeHUU``gpaRfvv18wCQXq5h`iZrP1n<t", "9KLCh_Qt8oit?^^W5kXyD17Zph1Up4En@EqzEaeH_lif0`iGN9pDVxXsXxvR_:ilTbyI6|4n]K9v|RuQ", "i>[gpbYvuW|[umnyRYaV^WH8ZDKdt1<sA^5[K8|aYR`m2Fm`YeI;1kf304IbDG|2j32fwKx1KPK1@lE^", "3R_96=ou_z<chnNKjdD7L^U|T;`ZvqYNdToteoUcs8K?UfwgUxchEmU?Iv6kioHxsGAZNYRn_yJ;9AwD", "yqiXgRwT9XG9BHjjorMhgp;D?te<0vY`VOT::zgrza4S0|GkXVsxD2n_<z5Kyjou3x[LBNolG;aVa;Ev", "18<w184VmeRE>N8`pEMx5xM_o4i;7F@7IQI7Qs0w|OI6TEv7ok[HYmw4VdenJNx4dNgmKJfJK=sw=<jl", "

重修c语言,C语言程序设计-重修班-中国大学mooc-题库零氪

第一单元 C语言概述 程序设计语言和程序随堂测验 1、程序设计语言是用于人和计算机之间进行通信的媒介。 2、程序是告诉计算机“做什么”和“怎么做”的一组指令。 3、程序设计就是编写程序。 简单的C语言程序随堂测验 1、以下关于main函数的叙述中,错误的是()。 A、main函数是自定义函数 B、main函数可以有形式参数,也可以没有形式参数 C、main函数定义必须出现在一个源文件的开头 D、在一个程序中只能有一个main函数 2、下列叙述中正确的是()。 A、main函数必须出现在其他函数之前 B、程序总是从main函数的第一条语句开始执行 C、main函数中至少有一条语句 D、程序总是在执行完main函数的最后一条语句后结束 3、以下符号中不能用做标识符的是()。 A、_256 B、scanf C、void D、Struct 4、浮点数的数据类型有int、float、double。 5、C语言中,变量无需区分大小写。 基层开发环境简介和C语言程序的开发步骤随堂测验 1、下列叙述中正确的是()。 A、在编译时可以发现注释中的拼写错误 B、C语言程序的每一行只能写一条语句 C、int main(void){···}必须位于程序的开始处 D、C语言程序可以由一个或多个函数组成 2、“调试”与“测试”的一个共同目的是发现程序中的错误。 第一单元测验 1、软件是指()。 A、程序 B、程序和文档 C、算法加数据结构 D、程序、数据和相关文档的集合 2、下列叙述中,不符合良好程序设计风格的是()。 A、程序的效率第一,清晰第二 B、程序的可读性好 C、程序中有必要的注释 D、输入数据前要有提示信息 3、以下关于C语言源程序的叙述中,错误的是()。 A、一个C源程序由若干个函数定义组成,其中必须有且仅能有一个名为main的函数定义 B、在一个函数定义的函数体中允许定义另一个函数 C、函数定义由函数头部和函数体两部分组成 D、在一个函数定义中,函数体允许调用另一个函数或调用函数自身 4、以下叙述中正确的是()。 A、C程序的基本组成单位是语句 B、C程序中每一行只能写一条语句 C、简单C语句必须以分号结束 D、C语句必须在一行内写完 5、一个C程序的执行是从()。 A、main函数开始,直到main函数结束 B、第一个函数开始,直到最后一个函数结束 C、第一个语句开始,直到最后一个语句结束 D、main函数开始,直到最后一个函数结束 6、一个C程序是由()。 A、一个主程序和若干子程序组成 B、一个或多个函数组成 C、若干过程组成 D、若干子程序组成 7、C语言派程序的基本单位是()。 A、过程 B、函数 C、子程序 D、标识符 8、计算机能直接执行的程序是()。

电路方程的矩阵形式 c语言,基于C语言实现大规模节点方程的LU分解算法.doc

基于C语言实现大规模节点方程的LU分解算法.doc 第 1 页 共 18 页基于 C 语言实现 大规模节点方程的 LU 分解算法班级 0403205 班学号 040320510姓名 邵汉钦完成日期 2006-03-25第 2 页 共 18 页基于 C 语言实现大规模节点方程的 LU 分解算法实验目的及主要内容通过编程实现基于 C 语言的大规模节点方程的 LU 分解算法,熟悉在电路仿真中运用的节点分析法计算机实现过程,对算法的收敛性、效率、计算过程中节省内存的手段和重要性有清晰的认识,从而能更好地运用商用大规模仿真软件或自己动手编写仿真软件。实验原理对复杂网络所建立的节点方程组,常常是高阶线性方程组,所以说,对线性电路的稳态分析,最终可归结为高阶线性方程组得求解问题。线性方程组的解法很多,一般可以分为两大类直接法和迭代法。直接法是通过对方程组直接进行一系列的运算而得到方程的解;迭代法是一开始就给出一个近似的解,然后通过逐次逼近来求 LAE 较好的近似解,迭代过程要一直进行到近似解达到预定的精度为止(即收敛到精确解) 。直接法的两个基本方法是高斯消元法和 LU 分解法,它们也是稀疏矩阵技术的基础。LU 分解是矩阵三角化分解法之一,也称三角分解法。它是把方程中的系数矩阵分解成下三角矩阵 L 和上三角矩阵 U 的乘积ALU式中,L 为主对角线以上的元素均为零的下三角矩阵;U 为主对角线以下的元素均为零,且主对角线元素均为 1 的上三角矩阵。上式展开就是第 3 页 共 18 页nnnaa 212112 nnlll 2110123112 nu则方程变为 AXLUXB一旦 A 分解成功,我们就可以设 UXY,方程就变成一个下三角形系统LYB,解此方程可以用所谓“前代”的方法,即从第 1 个方程求出 ,进1y而从第 2 个方程求出 ,依次类推,直到求出 ,把 , 代2yny2n入第 n 个方程求出 。然后求解上三角系统 UXY,这样就可以用回代的方n法求出 X 来。LU 分解法的优点主要表现在当系数矩阵 A 不变,即只是网络元件参数 不变,仅仅是右手边向量 B 变化时,即外加激励信号变化时,可以减少解方程的计算工作量。因为一旦系数矩阵分解成 L 和 U 的乘积,就可以把L,U 存储起来,每次右手边向量变化时,只需做前代和回代,即可完成方程的求解。它在灵敏度计算中需要求转置的方程组时也方便得多。下面推导对 A 矩阵进行 LU 分解的方法。在以上推导过程中得到下式nnnaa 212112 nnlll 2110123112 nu将其按矩阵乘法展开,就可以推导出L 矩阵的第 1 列元素 ilii ,1U 矩阵的第 1 行元素 njlaujj 32L 矩阵的第 2 列元素 iliii ,12U 矩阵的第 2 行元素 jlujjj ,42第 4 页 共 18 页若按此方式对列和行依次交换计算下去,最终即将求出 L 和 U 矩阵的全部元素,其通用公式为 nmiulalmkiii ,11illukimimi ,2,1 以上公式给出了对 A 矩阵进行 LU 分解的基本方法,在此基础上就可以编程实现 LU 分解法解线性方程组。程序设计按以上公式可以归纳出如下的求解线性代数方程组得 LU 分解算法输入A,非奇异矩阵 nn。1.

星河所沓,十二焉分,日月安属,列星安陈——记中国首次自主火星探测任务(一次英语课上的汇报)

文章目录 背景汇报PPT正文汇报发言稿参考文献 背景 2021年5月15日,中国国家航天局宣布,通过回传遥测数据显示,中国首次自主火星探测任务着陆器成功着陆火星。2021年5月19日,国家航天局发布我国首次火星探测天问一号任务探测器着陆过程两器分离和着陆后火星车拍摄的影像。图像中,着陆平台和“祝融号”火星车的驶离坡道、太阳翼、天线等机构展开正常到位。 中国用一次任务,完成了对火星的环绕探测和着陆探测,火星上终于留下了中国人的足迹。 汇报PPT正文 视频连接:https://www.bilibili.com/video/BV1V54y1L71C 汇报发言稿 good afternoon everyone! today i am very glad to tell you something about chinese first Mars explore mission! on the may 15th,chinese goverment reported that it has sucessfully landed first mars rover. on that day updated the article ,the tille is .it said that the landing of zhurong was the biggest test yet of china’s deep-space exploration capabilities. today i will show you more details about zhurong .

Unity与JavaScript之间的相互调用

一 、Unity 调用 Js 1、在Unity工程中新建一个后缀名为:.jslib文件 2、在.jslib文件中编写unity调用js代码,多个方法之间记得使用,号隔开,要不然打包的时候会报错。 mergeInto(LibraryManager.library,{ UpdateDatabaseScore:function(score1,score2,score3,score4,score5,score6,totalscore) { // js端写好的函数 updateStudentScore(score1,score2,score3,score4,score5,score6,totalscore); }, H5TTS:function(content){ // 在Unity中向js传递字符串时需要在js中使用Pointer_stringify(str)进行转换。 h5Tts(Pointer_stringify(content)); } }); 3、在c#代码中调用 [DllImport("__Internal")] public static extern void UpdateDatabaseScore(float score1,float score2,float score3,float score4,float score5,float score6,float totalscore); [DllImport("__Internal")] public static extern void H5TTS(string content); /// <summary> /// unity 调用js 端进行更新数据 /// </summary> /// <param name="score1"></param> /// <param name="score2"></param> /// <param name="score3"></param> /// <param name="score4"></param> /// <param name="score5"></param> /// <param name="score6"></param> /// <param name="totalscore"></param> public void UpdateDBScore(float score1,float score2,float score3,float score4,float score5,float score6,float totalscore) { #if !

【福利分享】阿里面试官叫我手写HashMap,我两分钟就给他整出来了!!!

文章目录 🌊前言撸起袖子开始造实现数组 + 链表实现获取Key对应数组索引的方法实现get方法实现put方法实现remove方法测试一下 完整代码CSDN独家福利降临!!!💖福利🌊 Java入门到就业学习路线规划🌊 小白快速入门Python爬虫路线 🌊前言 Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭🌈 👉话不多说,直达底部有粉丝专享福利!!! 撸起袖子开始造 实现数组 + 链表 众所周知,HashMap无论是JDK7还是JDK8,底层都是数组 + 链表,只是JDK8多了一个红黑树,按道理讲不会还有手写红黑树的吧,😰。 既然是数组 + 链表,那我就实现一个链表 参考JDK8源码 我们就没必要那么高级,🤭 static class Node { int key, value; //保存该节点的Key、Value Node next; //指向下一个节点 public Node(int key, int value) { this.key = key; this.value = value; } } 链表有了,就再来个数组(面试过程基本上不要求扩容,所以我们就直接给数组定义一个差不多的值就OK了) private final int CAPACITY = 10000; Node[] nodes = new Node[CAPACITY]; 实现获取Key对应数组索引的方法 参考源码 public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ?

RISC-V(1)cpu基础

1.1.RISCV CPU概述 RISC-V(读作“RISC-FIVE”)是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经四代RISC处理器原型芯片。由加州大学伯克利分校的David A. Patterson教授带领下完成。与大多数ISA相反,RISC-V ISA可以免费地用于所有希望的设备中,允许任何人设计、制造和销售RISC-V芯片和软件。它是第一个被设计成可以根据具体场景可以选择适合的指令集的指令集架构。基于RISC-V指令集架构可以设计服务器CPU,家用电器cpu,工控cpu和用在比指头小的传感器中的cpu。 1.2 RV32I 基本整数指令集RV32I 被设计成足以构建一个编译器目标机,并支持现代操作系统环境。这个 ISA 也被设计成在最小实现时减少所需的硬件。RV32I 包括了 47 条单独的指令,可以仿真几乎所有其他的 ISA 扩展。 1.3 基本指令格式 在所有格式中,RISC-V ISA将源寄存器rs1和rs2,和目标寄存器rd固定在同样的位置,以简化指令译码。在指令中,立即数imm被打包,朝着最左边可用位的方向,并且是分配好的,以减少硬件复杂度。所有立即数的符号位总是在指令的第31位,以加速符号扩展电路。 Opcode为指令操作码,每条指令都是由一个相应的opcode和对应的funct来定义。 1.4 计算机简单组成模型 计算机有三大组成部分,分别是,处理器(CPU)、输入输出(I/O)、存储器(Memory)。处理器从存储器中获取指令,然后按照指令执行一定的操作。输入/输出用来提供运算数据以及显示运算结果。 2.1 计算机组成原理的简单电路设计 本节将设计一个简化的处理器取指令电路,取指令模块为CPU其中一个组件,通过这个例子体会Verilog HDL的使用。处理器中的PC寄存器存储着指令地址,在正常运行过程中,PC的值会随着时间增加,同时从指令存储器中取出对应地址的指令。本次处理器取指电路包含两部分:PC模块、指令存储器ROM。 2.2 PC模块的设计和实现 PC模块的功能是给出取指令地址,同时每个时钟周期取指令地址递增。其接口设计如图所示。其左侧为输入右侧为输出。接口描述如表所示。 module pc_reg( input wire clk, input wire rst, output reg[5:0] pc, output reg ce ); always @ (posedge clk) begin if (ce == 1'b0) begin pc <= 6'h00; end else begin pc <= pc + 1'b1; end end always @ (posedge clk) begin if (rst == 1'b1) begin ce <= 1'b0; end else begin ce <= 1'b1; end end endmodule 在时钟上升沿触发,如果rst使能,则使能信号ce为0,否则使能信号ce为1。当ce为1时pc寄存器开始在每个时钟上升沿时加1。

VCS-Verdi仿真

VCS和Verdi仿真: makefile用法: make_vcs、verdi、clean(编译、仿真、查看波形、清除) -Mupdate 增量编译,只重新编译变化的文件。 -R 编译完后自动仿真。-l 设置log文件。 +v2k 支持verilog2001. -f 将RTL路径整合到filelist.f文件中。 -o foo,改变simv名字为foo。 +define+<宏名称>=<值>。 +incdir+inc路径 在当前路径下找文件 波形分析: 1:vcs和verdi联合仿真条件 ①生成的“.fsdb”文件才能用于Verdi波形分析。 ②要生成“.fsdb”文件,需要在Testbench中加入图2所示的几行用于产生“.fsdb”文件代码。 ③注意环境变量的添加:.bashrc文件 2:vcs和verdi仿真快捷键 ①抓取波形nwave,点击波形窗口后(大写字母=shift+小写): 快速抓信号:选取后ctrl+w。添加波形:g(get signal)。 放大、缩小波形:小写z缩小(zoom ),shift+z放大。波形全部显示:f(full)。 翻转信号跳转:n(next)向前,N向后。 改变信号颜色:c(color)。 重新加载设计:file->reload design。 ② debug经验: ①使用系统函数: $time、display、monitor、stop、finish、readmemb、readmemh ②$fsdbDumpMDA();用verdi查看二维数组信号。 ③覆盖率:代码覆盖率和功能覆盖率 代码覆盖率:检查if和else if完整、各路径是否都跳转、检查语句是否被执行、检查状态机每个状态是否达到。

c语言表达式和表达式语句的区别,C语言中表达式和表达式语句的区别(什么又叫做表达式)?...

满意答案 sfuejr22 2016.01.13 采纳率:56% 等级:7 已帮助:659人 表达式: 表达式是操作符、操作数和标点符号组成的序列,其目的是用来说明…个计算过程。 表达式可以嵌套,例如:2+3+(5*sizeof(int))/345。 表达式根据某些约定、求值次序、结合和优先级规则来进行计算。 所谓约定,即类型转换的约定。例如: float a; a=5/2; 结果。得到值为2。5/2是整数除法取整, 因为5和2都是整数,不会由于a是float型而轻易改变运算的性质。 所谓求值次序,是指表达式中各个操作数的求值次序视编译器不同而不同。见3.9节。 所谓结合性,是指表达式中出现同等优先级的操作符时,该先做哪个操作的规定。例如: d=a+b-c; //C++规定,加减法先左后右,先做a+b,其结果再减去c d=a=3; //C++规定,等号是先右后左。先做a=3,其结果再赋给d 所谓优先级,是指不同优先级的操作符,总是先做优先级高的操作。例如: d=a+b*c; //乘法优先级比加法高。先做b*c,其结果再与a相加 表达式语句: C++中所有的操作运算都通过表达式来实现。 由表达式组成的语句称为表达式语句。 它由一个表达式后接一个分号“;”组成。 31分享举报

c语言getsum函数的用法,只会用“Sum函数”求和的你,请花1分钟学会Sum if函数!...

原标题:只会用“Sum函数”求和的你,请花1分钟学会Sum if函数! 60秒get一个HR实用小技巧 说到求和函数,你先想到的是什么? 如果你脱口而出的是“Sum函数”,那你就赶紧收藏这篇文章吧~ 嘿嘿 因为“Sumif函数”可是一个比“Sum”函数好用一百倍的求和函数哦!今天小薪就给大家详细介绍一下~ 单条件求和 sumif函数的用法: 根据指定条件对若干单元格、区域或引用求和。 sumif函数语法是: SUMIF(range,criteria,sum_range) sumif函数的参数: 第一个参数:Range为条件区域,用于条件判断的单元格区域。 第二个参数:Criteria是求和条件,为确定哪些单元格将被相加求和的条件,其形式可以由数字、逻辑表达式等组成的判定条件。例如,条件可以表示为 32、"32"、">32" 或 "apples"。 第三个参数:Sum_range 为实际求和区域,需要求和的单元格、区域或引用。 当省略第三个参数时,则条件区域就是实际求和区域。 criteria 参数中可使用通配符(包括问号 (?) 和星号 (*))。问号匹配任意单个字符;星号匹配任意一串字符。如果要查找实际的问号或星号,需在该字符前键入波形符 (~) 举个例子 面对一张销售人员的业绩表格时,假设我们现在需要统计“北京”地区的“销售总额”,这时我们就可以使用“Sum if”函数。 具体语法: =SUMIF(B2:B9,E2,C2:C9) 这表示:在“B2:B9”区域内,寻找满足“E2”条件的单元格,将他们在“C2:C9”区域内的值相加求和。 绝对引用 在上述例子中,在求得“北京”地区的“销售总额”之后,如果需要再求得其他地区的“销售总额”,则可以使用“向下拖拽填充”的方式来实现。但是,此时我们的函数语法需要有所改变。 具体语法: =SUMIF($B$2:$B$9,E2,$C$2:$C$9) 此时的“条件区域”和“实际求和区域”均为绝对引用,这可以保证在我们向下拖拽的时候,区域范围不会变动。 快捷键填充 如果我们的条件区域或者实际求和区域有很多很多行,那么向下拖拉选取的方式就太过麻烦啦。这时,我们就可以使用快捷来一次性选取! 快捷键:ctrl+shift+↓ 隔列求和 如果统计表格是如下的样式,即需要统计的数量是隔列分布的,那么此时我们想要求和的话,“sum函数”就傻眼啦,但我们仍然可以使用“sumif函数”来实现! 具体语法: =SUMIF(A$2:F$2,G$2,A3) 以上就是给大家介绍的“Sum if函数”的几种用法啦,希望大家能通过这几个小技巧,更快速地体会到“Sum if 函数”的妙处,在日常工作中能充分利用起来~ 责任编辑:

terraform aws入门

环境CentOS7.9 1. 下载安装terraform 打开https://www.terraform.io/downloads.html,复制下载地址 wget https://releases.hashicorp.com/terraform/0.15.4/terraform_0.15.4_linux_amd64.zip 解压后,移动到/bin目录 unzip terraform_0.15.4_linux_amd64.zip mv terraform /bin/ 2. 配置awscli(这里默认已经配置好aws AMI access key) 安装awscli yum install awscli -y 配置awscli,输入id,key,地区和输出格式信息 aws configure AWS Access Key ID [****************65UO]: ^C [root@192-168-64-138 aws]# aws configure AWS Access Key ID [****************65UO]: AWS Secret Access Key [****************iOBH]: Default region name [ap-northeast-2]: Default output format [json]: 3. 编写main.tf文件 以下main.tf文件对于t2.micro是完全适用得,需要自己修改region,vpc_security_group_ids,subnet_id aws自有ami镜像获取方式如下: aws ec2 describe-images --owners self amazon #mkdir aws #cd aws #vim main.tf terraform { required_providers { aws = { source = "

Proxmox VE镜像分析与定制

Proxmox VE(Proxmox Virtual Environment,简称PVE)是一个开源的服务器虚拟化环境Linux发行版,基于Debian,使用给予Ubuntu的定制内核。相比于其他虚拟化平台,PVE具有的一个显著的特点就是无需master节点,安装完成后,无需特殊配置即可将多个节点组成集群。 由于工程要求,PVE需要大规模部署在物理服务器上,所以定制镜像就显得很有必要。 定制目标包括 (1)修改initrd中init脚本的提示信息 (2)删除GRUB界面多余选项,直接进入安装界面 (3)添加预装软件 (4)在安装过程中对软件进行个性化配置 (5)修改PVE安装界面,在PVE安装界面中的所有输入框设置默认文本 Proxmox VE镜像分析 下载Proxmox VE 6.4版镜像后挂载,观察文件结构 $ tree -L 2 . ├── boot │ ├── boot.cat │ ├── grub │ ├── initrd.img │ ├── linux26 │ └── memtest86+.bin ├── COPYING ├── COPYRIGHT ├── debian -> . ├── dists │ └── stretch ├── efi.img ├── EULA ├── mach_kernel ├── proxmox │ ├── country.dat │ ├── packages │ └── pve-base.cnt ├── pve-base.

历届试题 包子凑数 C语言,蓝桥杯 试题 历届试题 包子凑数 dp+欧几里得算法

问题描述 小明几乎天天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼刚好能放Ai个包子。每种蒸笼都有很是多笼,能够认为是无限笼。 每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中刚好一共有X个包子。好比一共有3种蒸笼,分别能放三、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。 固然有时包子大叔不管如何也凑不出顾客想买的数量。好比一共有3种蒸笼,分别能放四、5和6个包子。而顾客想买7个包子时,大叔就凑不出来了。 小明想知道一共有多少种数目是包子大叔凑不出来的。 输入格式 第一行包含一个整数N。(1 <= N <= 100) 如下N行每行包含一个整数Ai。(1 <= Ai <= 100) 输出格式 一个整数表明答案。若是凑不出的数目有无限多个,输出INF。 样例输入 2 45 5 样例输出 6 样例输入 2 4 6 样例输出 INF 样例说明 对于样例1,凑不出的数目包括:1, 2, 3, 6, 7, 11。 对于样例2,全部奇数都凑不出来,因此有无限多个。 解题思路:咱们首先观察第一个样例 ×表示不能凑出,√表示能凑出。观察到8√能够从4√+4获得,10√能够从5√获得。 因此咱们得出判断一个包子数是否能凑出的一个方法:dp解决。设dp[ j ]表示包子数为j是否能凑出。 有 dp[ j ] |= dp[ j - A[ k ] ] ( k>0 && j - A[k] >=0 ) 进一步观察能够知道,当连续√的数目>=4时,以后的数目都必定能凑出,由于只要在以前√的基础上加上最小包子数4便可。 接着观察第二个样例: 4 6 最后样例输出是INF。这里能够证实只有当给出的包子数至少有两个互质时最终结果不是INF。 反证法:假设n个包子数都不互质,则它们的最小公约数k>1,则它们能够表示为

clion mac 下刷题最佳配置

clion 打题有几个常见的问题: 默认的 cmakelist 配置下只能有一个 main 函数,之前采用的是每写完一题就注释掉,很不方便;mac 下的 clion 没有万能头 bits/stdc++.h 这里就来解决这几个问题,同时还支持:配置自定义代码模板 1.解决只能执行一个 main 函数的问题 以前总觉得怎么clion这么反人类,归根到底还是对cmake不熟。 修改CmakeList.txt文件: 改成: cmake_minimum_required(VERSION 3.17) project(algorithm) set(CMAKE_CXX_STANDARD 14) # 上面的用你自己的就行 # 遍历项目根目录下所有的 .cpp 文件 file (GLOB_RECURSE files *.cpp) foreach (file ${files}) string(REGEX REPLACE ".+/(.+)\\..*" "\\1" exe ${file}) add_executable (${exe} ${file}) message (\ \ \ \ --\ src/${exe}.cpp\ will\ be\ compiled\ to\ bin/${exe}) endforeach () 然后右键项目,点击Reload CMake Project 然后多个文件下的main函数就可以执行了。 2.解决没有万能头的问题 Mac 下,打开终端(terminal): cd /usr/local/bin ls | grep g++ 查看下g++版本

信息安全实验一

实验一 加密与解密 一、实验目的 1.提高对加密与解密原理的认识 2.提高对信息隐藏原理的认识 3.学会使用加密与隐藏软件 4.了解口令破解基本方法; 5.体会设置安全口令的重要意义 二、实验要求 使用任意高级语言做出给文本文件加、解密的软件. 三、实验重点、难点 1.Easy code boy plus的使用 2.能熟练运用Lophtcrack、Aoxppr、Apdfprp、Mailhack等 四、实验学时 2学时 五、实验内容 1、凯撒密码实现、维吉尼亚表加密、DES 2、加密与隐藏软件的使用 3、利用破解密码软件破解口令 六、注意事项 Easy code boy plus可以将不同类型的文件作为寄主文件,将各种文件隐藏到不同类型的文件中。为了减少实验时间,实验破解用的密码可以选得简单一些。如1234。 七、实验步骤: 任务一、参考教科书有关内容,掌握凯撒加密方法,自行设计密钥.编制程序。 密码术可以大致别分为两种:即换位和替代,当然也有两者结合的更复杂的方法。在换位中字母不变,位置改变;替代中字母改变,位置不变。 将替代密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替代密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做凯撒移位密码,或简单的说,凯撒密码。 凯撒密码是将每一个字母向前推移K位。如K=3,则它的每一个明文字符都由其右边第三个(模26)字符代换如将字母A换作字母D,将字母B换作字母E。 如有这样一条指令: RETURN TO ROME 用恺撒密码加密后就成为: UHWXUA WR URPH 如果这份指令被敌方截获,也将不会泄密,因为字面上看不出任何意义。 这种加密方法还可以依据移位的不同产生新的变化,如将每个字母左19位,就产生这样一个明密对照表: 明:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密:T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

Parallels Desktop 16.5 M1 使用到期的解决方法

将mac的系统时间改为使用到期之前的时间即可: 就比如现在我的体验到期时间是2021-5-20号 接下来修改mac的当前系统时间 点击时间与日期 将当前时间改为到期日期之前的时间,然后再去查看我们的试用时间 现在已经变成了3天 改时间大法还是依旧的稳

成功解决CMake Error at src/CMakeLists.txt:3 (add_library): Cannot find source file:

目前整个的文件结构如下: user@user-B460MPOWER:~/work/xinguo/rgbd-slam-tutorial-gx/partI$ tree -L 2 . ├── bin ├── build │ ├── CMakeCache.txt │ ├── CMakeFiles │ ├── cmake_install.cmake │ ├── Makefile │ └── src ├── cmake-build-debug │ ├── CMakeCache.txt │ ├── CMakeFiles │ ├── cmake_install.cmake │ ├── Makefile │ ├── slam.cbp │ ├── src │ └── Testing ├── CMakeLists.txt ├── include │ └── mylib ├── lib └── src ├── CMakeLists.txt ├── main.cpp └── planar.cpp 没有找到是因为头文件配套的实现文件名字写错了。 CMake Error at src/CMakeLists.

C语言base64转换成字符串,Base64编码转换原理-C语言

Base64编码转换原理-C语言 Base64是一种加密方法。它的特点是:1、速度非常快。2、能够将字符串A转换成字符串B,而且如果你光看字符串B,是猜不出字符串A的内容来的。 Base64编码其实是将3个8位字节转换为4个6位字节,( 3*8 = 4*6 = 24 ) 这4个六位字节其实仍然是8位,只不过高两位被设置为0. 当一个字节只有6位有效时,它的取值空间为0到 2的6次方减1 即63,也就是说被转换的Base64编码的每一个编码的取值空间为(0~63)。 事实上,0~63之间的ASCII码有许多不可见字符,所以应该再做一个映射, 映射表 ‘A‘ ~ ‘Z‘ ? ASCII(0 ~ 25) ‘a’ ~ ‘z‘ ? ASCII(26 ~ 51) ‘0’ ~ ‘9‘ ? ASCII(52 ~ 61) ‘+‘ ? ASCII(62) ‘/‘ ? ASCII(63) 这样就可以将3个8位字节,转换为4个可见字符。 具体的字节拆分方法为: aaaaaabb ccccdddd eeffffff ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ 字节 1 字节 2 字节 3 ││ \/ 00aaaaaa 00bbcccc 00ddddee 00ffffff 注:上面的三个字节位原文,下面四个字节为Base64编码,其前两位均为0。 这样拆分的时候,原文的字节数量应该是3的倍数,当这个条件不能满足时,用全零字节 补足,转化时Base64编码用=号代替,这就是为什么有些Base64编码以一个或两个等号结 束的原因,但等号最多有两个,因为:如果F(origin)代表原文的字节数,F(remain)代 表余数,则 F(remain) = F(origin) MOD 3 成立。

剪刀石头布c语言 循环程序,什么方法最简单编剪刀石头布程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 水平有限,凑合吧... #include #include #include int main() { printf("初始分数为0分。赢了加一分,输了减一分,到达6分胜利。到达-6分失败。\n"); int score=0; do { if(score==6) { int x=0; for(x=0;x<10;x++) printf("YoU WrE tHe WiNnEr!! CoNgRaTuLaTiOnS!!!\n"); fflush(stdin); getchar(); return 0; } if(score==-6) { int x=0; for(x=0;x<10;x++) printf("YoU lOsT! LoSeR, SuCkEr.\n"); fflush(stdin); getchar(); return 0; } int in; srand((unsigned)time(NULL)); in=rand()%3; printf("请选择: 1为剪刀,2为石头,3为布\n"); int choice; scanf("%d",&choice); switch(in) { case 0: printf("电脑的选择是剪刀。\n"); if(choice==1) { printf("平手,请继续。\n"); } if(choice==2) { printf("你赢了,请继续。\n"); score++; } if(choice==3) { printf("你输了,请继续。\n");

c语言如何输出动态数组,C语言动态数组的使用实现代码

C语言动态数组 从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。要求尽可能使用函数实现程序代码。平均值为小数的只保留其整数部分。 样例输入: 5 3 4 0 0 2 样例输出: 9 1 样例输入: 7 3 2 7 5 2 9 1 样例输出: 29 4 代码如下: #include int addAll(int a[],int N); int aveFun(int sum,int n); int main(){ int N; int sum=0,ave=0; scanf("%d",&N); int a[N]; for(int i=0;i scanf("%d",&a[i]); } sum = addAll(a,N); ave = aveFun(sum,N); printf("%d %d",sum,ave); } int addAll(int a[],int N){ int sum=0; for(int i=0;i sum += a[i]; } return sum;

SQLyog下载、安装和破解

1、SQLyog12.09的下载 链接 我的链接 2、SQLyog12.09的安装 默认步骤安装,但是在这里要记着更改安装位置 3、SQLyog12.09的破解 链接 我的链接 参考链接:https://blog.csdn.net/lihua5419/article/details/73881837/

c语言setlocale第二个参数,setlocale_本地化支持 | Localization support_C_参考手册_非常教程...

setlocale 在头文件中定义 ​ ​ char * setlocale(int category,const char * locale); ​ ​ setlocale函数将指定的系统语言环境或其部分作为新的C语言环境安装。这些修改仍然有效,并会影响到所有区域设置敏感的C库函数的执行,直到下一次调用setlocale。如果locale是空指针,则setlocale查询当前的C语言环境而不修改它。 参数 category - 区域设置类别标识符,其中一个LC_xxx宏。可能为null。 locale - 系统特定的区域设置标识符。对于用户首选语言环境可以是“”,对于最小语言环境可以是“C” 返回值 指向一个以null结尾的空字符串的指针,该字符串在应用更改后标识C语言环境(如果有)或空指针失败。 返回的字符串以及此次调用中使用的类别的副本setlocale可能会稍后在程序中用于将语言环境恢复到此调用结束时的状态。 注意 在程序启动期间,等同于setlocale(LC_ALL, "C");在任何用户代码运行之前执行。 虽然返回类型是char*,但修改指向的字符是未定义的行为。 由于setlocale修改影响的区域设置相关的函数执行的全局状态,它是不确定的行为,从一个线程调用它,而另一个线程正在执行任意的功能如下:fprintf,isprint,iswdigit,localeconv,tolower,fscanf,ispunct,iswgraph,mblen,toupper,isalnum,isspace,iswlower,mbstowcs,towlower,isalpha,isupper,iswprint,mbtowc,towupper,isblank,iswalnum,iswpunct,setlocale,wcscoll,iscntrl,iswalpha,iswspace,strcoll,wcstod,isdigit,iswblank,iswupper,strerror,wcstombs,isgraph,iswcntrl,iswxdigit,strtod,wcsxfrm,islower,iswctype, isxdigit. POSIX还定义了一个名为“POSIX”的语言环境,该语言环境始终可以访问,并且完全等同于默认的最小“C”语言环境。 POSIX还指定返回的指针,不仅仅是指向字符串的内容,可能会通过后续对setlocale的调用而失效。 例 ​ #include #include #include #include int main(void) { // the C locale will be UTF-8 enabled English; // decimal dot will be German // date and time formatting will be Japanese setlocale(LC_ALL, "en_US.UTF-8"); setlocale(LC_NUMERIC, "de_DE"); setlocale(LC_TIME, "

c语言setlocale第二个参数,关于setlocale函数的参数问题

先上代码 wchar_t ss[10]; char *p; ss[0] = _T('中'); ss[1] = _T('文'); ss[2] = _T('\0'); p = setlocale(LC_ALL, "zh-CN"); wprintf(L"%ls\n", ss); printf("%s\n", p); 在用宽字符数组输出中文的时候用setlocale来设置地域,在使用第二个参数的时候出现了一点问题 (运行环境VC2010Express) setlocale(LC_ALL, "chs"); 或者 setlocale(LC_ALL, ""); 都可以能正常输出中文汉字 但是我在微软的手册里面查不到chs这个参数,如下图 但是上图的所有参数,无论是简体中文还是繁体中文的参数在VC2010下使用都无法正常使用(意思是setlocale失败,返回值为NULL) 例如: p = setlocale(LC_ALL, "zh-CN"); 运行结果: 但是我在VS2017下测试了setlocale函数,发现上面微软手册里的所有简体中文还是繁体中文的参数都可以正常使用 p = setlocale(LC_ALL, "zh-CN"); 运行结果: 还有一点非常奇怪的,我随便输了一个手册里面没有的参数,居然还能正常输出中文 问题二:为什么在VC2010下,上面这些参数不能用,但是在VS2017下却都可以使用 问题三:为什么随便输入了一个参数zh-NC(手册里没有这个参数),却仍然能输出中文汉字

CoolShell-第1题

第1题地址:https://fun.coolshell.cn/welcome.html 根据数列推理的话,前两个数的乘积得到第三个数,算的6*18=1944。 访问https://fun.coolshell.cn/1944.html 并没有过关,似乎X确实是1944,还有个Y不知道。 老办法,搜索“生命、宇宙以及任何事情的终极答案”,发现是一个电影《银河系漫游指南》里的第42分钟的内容(答案:42)。 对于为什么是42……网上众说纷纭。 反正1944*42=81648,得到第2题地址:https://fun.coolshell.cn/81648.html 收获:人生在世,宇宙茫茫,如果漫无目的,岂不空虚寂寞觉得冷? 但是企图让一个机器(或别人)告诉你,你自己的人生意义,这是可能是问了一个荒谬的问题,也可能得到一个荒谬的答案。

Android SDK下载安装及配置教程

本文转自:https://blog.csdn.net/qq_35868412/article/details/91366770 Android SDK下载安装及配置教程。让大家很方便的不用翻墙不用代理地就完成Android开发环境的搭建。 总结起来,Android开发环境搭建可以分为以下四步: 第一步、安装JDK; 略 第二步、安装Eclipse;略 第三步、下载并安装AndroidSDK; 第四步、为Eclipse安装ADT插件 详解: 第三步、下载并安装AndroidSDK 首先,下载Android SDK Tools,首先打开https://www.androiddevtools.cn/,我们可以看到这里面有Android开发所需的各种工具,首先找到SDK Tools: 选择一个最新的版本就行了。注意,这里有exe和zip两种文件可供下载,exe的就是个安装程序,下载下来需要自己双击安装。这里建议下载zip压缩包,下载后,直接解压缩到你想要安装Android的路径就行了。解压后的文件目录如下: 然后就双击“SDK Manager.exe”,启动SDK Manager,如图所示: 几个必须要安装的,Tools文件夹里面的Android SDK Tools,然后就是Android SDK Platform-tools和Android SDKBuild-tools,只需要下载最新的版本。 然后就是API的选择了。因为Android是向下兼容的。所以只选择了下载当前最新的Android API。如果以后不打算用模拟器调试,而是一直用真机来调试的话,那么就可以不用装“system images“了。 最后就是extras文件夹中的东西了,如下图所示, extras中的东西可以只安装上图中的三个,即Android Support Repository、Android SupportLibrary和Google USB Driver。 接下来就可以进行安装了。要注意,由于这些东西都是在google 的服务器上下载的。所以可能出现连接不上的情况,如下图: 这种时候,我们可以通过有Android SDK的国内镜像服务器来下载安装,这里推荐几个: 1、中科院开源协会镜像站地址: IPV4/IPV6 :https://mirrors.opencas.ac.cn 端口:80 2、北京化工大学镜像服务器地址: IPv4:https://ubuntu.buct.edu.cn/ 端口:80 IPv4:https://ubuntu.buct.cn/ 端口:80 IPv6:https://ubuntu.buct6.edu.cn/ 端口:80 3、大连东软信息学院镜像服务器地址: https://mirrors.neusoft.edu.cn 端口:80 这里我选择的是大连东软的镜像,使用方法如下: 首先,点击菜单中的“Tools”,然后选择下拉中的“Options…”, 然后在弹出的对话框中,填写HTTP Proxy Server为mirrors.neusoft.edu.cn(镜像服务器的地址,注意前面不要加http),然后填写HTTP Proxy Port为80 (端口号)。最后在勾选下面的『Forcehttps://... sources to be fetched using https://...』复选框,如下图所示 接着点击close,关闭对话框,再重新启动SDK Manager就行啦。

clang编译c语言开o优化,针对gcc或clang的LTO可以跨C和C方法进行优化

是! 链接时优化通常适用于“胖”目标文件中存在的中间表示(IR),其可以包含用于传统链接的机器代码和用于LTO链接的IR. 在这个阶段,没有更高级的语言结构,因此链接时优化与语言无关. GCC 海湾合作委员会的link-time optimization(LTO)在GCC的中间代表之一GIMPLE上运作. IR始终与语言无关,因此任何链接时优化都可以在任何语言生成的代码中使用. Another feature of LTO is that it is possible to apply interprocedural optimizations on files written in different languages: 06000 Notice that the final link is done with g++ to get the C++ runtime libraries and -lgfortran is added to get the Fortran runtime libraries. In general, when mixing languages in LTO mode, you should use the same link command options as when mixing languages in a regular (non-LTO) compilation.

Nacos 服务调用出错 Connection refused

Nacos 服务调用出错 Connection refused 如图: 出现了connection refuesd的问题了,在网上查了一圈,很多都是用的eureka注册中心,而我使用的是阿里的nacos注册中心,所以没有现成的解决方案。只能硬着头皮解决了。 第一步我先去看了我本地启动的服务有没有注册到注册中心,发现本地的服务已经在注册中心成功注册了 2.第二步,我去看了下我所要调用的那个服务的ip,然后去ping了下,看看网络是不是通的。最后测试了下,发现本地ping是能通的。 3.第三步也是我出错的一步,我在代码上找不问题,就去看了下服务器上开放的端口,发现开放的端口没有我要调用的微服务的端口,这时我才恍然大悟,原来是我服务器上的端口没有开放,导致一直连接拒绝。完美解决 查看服务器开放的端口 firewall-cmd --list-all 开放端口 firewall-cmd --add-port=8870/tcp --permanent 重启防火墙 firewall-cmd --reload

c语言程序中u8是什么意思,c – __u8和uint8_t之间的区别

有人可以解释uint8_t和__u8类型之间的区别吗? 我知道uint8_t是在stdint.h中定义的,并且它们在每个unix系统上都可用. /* Unsigned. */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; ... 如果我使用它们可以识别我打算做什么. 现在我偶然发现了__u8和__u16类型.它似乎对我来说是一样的. 其中一些类型在linux / types.h中定义 #ifdef __CHECKER__ #define __bitwise__ __attribute__((bitwise)) #else #define __bitwise__ #endif #ifdef __CHECK_ENDIAN__ #define __bitwise __bitwise__ #else #define __bitwise #endif typedef __u16 __bitwise __le16; typedef __u16 __bitwise __be16; typedef __u32 __bitwise __le32; ... 我没找到__u8但我仍然可以使用它,它的行为就像uint8_t. 性能或内存消耗有一些差异吗? 感谢帮助 :)

【性能优化】相关工具记录-gDEBugger

1:openGL调试工具,我是主要用来看纹理缓存占用的,其他功能暂时未发掘出来,看纹理图能发现字体的纹理浪费严重 参考链接 http://blog.sina.com.cn/s/blog_3ca90a0b0101frnv.html 帮助链接 http://www.gremedy.com/tutorial/ 下载链接 https://download.csdn.net/download/liying426/18830673

2021-05-18

工单完工入库作业(asft340)步骤讲解 目录 工单完工入库作业(asft340)步骤讲解 步骤一:选择录入(并且启用中文,文本) 步骤二:选择单号 选择以后效果图 步骤三:选择入库申请 步骤四:选择工单单号 二次弹窗完成以后效果图 工单单号选择完成以后效果图 步骤五:选择申请数量 步骤六:选择指定库位 步骤七:选择指定批号(可以任意填写) 步骤八:进行审核 步骤五,六,七,操作完成以后的详细 步骤一:选择录入(并且启用中文,文本) 步骤二:选择单号 选择以后效果图 步骤三:选择入库申请 步骤四:选择工单单号 二次弹窗完成以后效果图 工单单号选择完成以后效果图 步骤五:选择申请数量 步骤六:选择指定库位 步骤七:选择指定批号(可以任意填写) 步骤八:进行审核 步骤五,六,七,操作完成以后的详细图片

数据恢复笔记——NTFS文件系统

Winhex数据恢复(NTFS文件系统) DBR的数据结构NTFS文件系统的元文件主文件表MFTMFT属性类型10h属性体数据结构30h属性体的数据结构60h属性体的数据结构70h属性体的数据结构80h属性体的数据结构MFT属性中的属性头数据结构MFT的簇流运行数据结构手工提取文件数据手工提取片段文件数据常驻80h属性 B0属性体的数据结构 DBR的数据结构 偏移描述00-02跳转指令0D-0D每簇扇区数28-2F文件系统扇区总数30-37(MFT)主文件表起使簇号 跳转指令对应数据可以找到NTFS的DBR。 NTFS文件系统的元文件 在格式化为NTFS文件后,系统对分区写入的文件就是元文件。 其中根据起使簇号,先跳转到MFT。其中2C-2F位置为对应序号,文件名也可以看出来。用鼠标向下滚过一个扇区可以看到2C-2F位置对应序号1的$MFTMirr文件名。 主文件表MFT 以明文“FILE”开头。实验中对应46 49 4C 45。每个MFT项都占用1024个字节,即两个扇区。每个MFT项占用的两个扇区,最后两个字节为一个修正值,这个修正值和MFT项中的更新序列号相同。如果系统发现不同,就会认为此MFT项错误,会把开头明文改为“BAAD”。 MFT属性类型 属性类型值(16进制)描述10标准信息20属性列表30文件名属性40对象ID50安全描述符60卷名70卷信息80文件数据内容90索引根属性A0索引分配树节点B0$MFT文件和索引的位图 10h属性体数据结构 30h属性体的数据结构 其中在实验中winhex显示的38-3B为“06 00 00 00”.可以分为:2和4,表明文件为隐藏的系统文件。 60h属性体的数据结构 60属性是卷名属性,用以记录卷名。在属性体中记录的为Unicode代码。 70h属性体的数据结构 70属性是卷信息属性,用以描述卷的版本、状态等信息。 80h属性体的数据结构 80属性是数据属性常驻80h属性的属性体是数据内容非常驻80h属性的属性体是簇流运行。 MFT属性中的属性头数据结构 其中MFT属性可以分为两类:常驻属性和非常驻属性。 常驻属性:直接在MFT项中记录属性体。(只能记录少量的数据) 非常驻属性:在MFT之外的地方记录属性体。 常驻属性的数据结构(从属性开始的地方偏移,而不是从头): 偏移字节(16进制)描述00-03属性类型08-080:常驻属性。1:非常驻属性10-13属性体字节数。(实验中为“4A 00 00 00”,表示属性体4行在多出半行到A这个位置)14-15属性体偏移的字节数 非常驻属性的数据结构(从属性开始的地方偏移,而不是从头): 偏移字节(16进制)描述00-03属性类型08-080:常驻属性。1:非常驻属性10-17属性体的起始虚拟簇号18-1F属性体的结束虚拟簇号20-21簇流运行的偏移地址28-2F属性体占用总空间30-37属性体实际占用字节数38-3F属性体的初始大小40-簇流的记录信息 MFT的簇流运行数据结构 32 => 0011 0010 第一个数值的低4位为“2”:对应后面两个数值第一个数值的高4位为“3”:簇流大小后面的3个数值前两个数值“C0 02”:簇流的大小后面三个数值“00 00 0C”:簇流起使簇 手工提取文件数据 先在DBR,根据“30-37”对应(MFT)主文件表起使簇号,点击跳转到MFT。(或点击$MFT文件)打开LoveString软件,将文件名输入进去。复制Unicode编码方式的编码。点击“查找十六进制数值”,将刚刚的代码复制进去,下面的勾都不勾。点击查找。会在“30”属性中查找到对应的文件名。在“80”属性中查找属性体部分,按照上面簇流运行的数据结构,查找“簇流大小”、“簇流起使簇”转跳到“簇流起使簇”,右键“选块起使位置”。再跳转到“簇流起使簇”+“簇流大小”位置,右键“选块尾部”。选中之后右键,“编辑”→“复制选块”→“至新文件”。重命名为文件正确格式。 手工提取片段文件数据 如果后面是00,那么那么这个簇流运行结束,否则还有簇流运行。 下个簇流的起始簇号是相对于这个簇流的起始簇号。 按照上面一般文件提取顺序,将第一部分文件提取出来,命名为“1”看到后面不为00重复以上操作,将第二部分文件提取出来,命名为“2”。7.(注意:第二个起始簇号并不是上面的标号,第二个簇号是相对于第一个簇号来说,第二个簇号=第一个簇号+标号)提取出两个选块后,“工具”→“文件工具”→“文件合并”。先保存一个后缀名和原文件相同的文件,然后按照顺序进行附加。双击即可。 常驻80h属性 直接创建文件的时候文件内容少点就行,属性体中可以放的下就行。 选中其属性体,右键→“编辑”→“复制选块”→“至新文件”,即可复制文件。 B0属性体的数据结构 B0属性为位图属性,描述索引或MFT的分配情况。 比如:$MFT文件的MFT项中位图存储位置 “31 01 FF FF 03”其中 03 FF FF:为“262143”。代表此簇流起始于262143簇 01:代表大小一个簇。

pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出

#include //该程序用于使CCP1模块产生分辨率为10位的PWM波形,占空比为50%,根据PWM_WIDE计算频率。proteus仿真通过 //CCP1(CCP2相同设置)模块的PWM工作方式初始化子程序(中断为什么不行呢?) #define CCP1 #define PWM_WIDE 0x7F #define PWM_TOTAL PWM_WIDE<<1 void CCPINIT() { #ifdef CCP1 CCPR1L = PWM_WIDE; CCP1CON = 0X3C; //设置CCP1模块为PWM工作方式,且其工作 //循环的低2位为11,高8位为01111111=7F TRISC &= 0XFB; //设置CCP1引脚为输出方式 #else CCPR2L = PWM_WIDE; CCP2CON = 0X3C; // CCP2 TRISC &= 0XFD; //设置CCP2引脚为输出方式 #endif PR2=PWM_TOTAL; //设置PWM的工作周期 INTCON &= 0X00; //禁止总中断和外围中断 } void DelayMs(unsigned int ms) { unsigned char i; while(--ms) { for(i=110;i>0;--i); } } //主程序 main() { TRISD = 0xff; CCPINIT(); //CCP1模块的PWM工作方式初始化

linux redis模糊删除,【Redis实战】批量模糊删除(适用生产环境)

目前在网上看到的大部分文章都是通过keys 进行模糊匹配并删除的 下面介绍3种删除方法,建议使用linux去操作,可以结合 xargs(点击查看介绍) 命令进行操作 参数说明: [ip]: ip地址, 参数名 -> -h [port]: 端口号, 参数名 -> -p [password]: 密码, 参数名 -> -a, 没有密码则不输入 -a [password] [index]: 缓存所在的库, 参数名 -> -n keys命令 它会扫整个库,导致Redis阻塞,影响正常使用, 不建议使用 redis-cli -h [ip] -p [port] -a [password] -n [index] keys "User:*" | xargs redis-cli -h [ip] -p [port] -a [password] -n [index] del 这是目前网上常用的方法,通过keys 命令返回匹配到的key,然后再使用 xargs整合所有的并删除 但是这个方法有个致命的问题,就是它是通过keys去扫描模糊匹配,keys命令会导致Redis阻塞问题,并且keys命令在生产环境是禁用的 scan命令 它是通过游标的方式扫描 (推荐) redis-cli -h [ip] -p [port] -a [password] -n [index] --scan --pattern 'User:*' | xargs redis-cli -h [ip] -p [port] -a [password] -n [index] del

简答一个c语言程序的,【简答题】运行一个C语言程序主要有哪些步骤?

【简答题】运行一个C语言程序主要有哪些步骤? 更多相关问题 As soon as he comes back, I’ll tell him when ___ and see him.A.you will comeB.will you comeC.you com He said,“What’s the matter?”→He asked .A.what the matter isB.what the matter wasC.what is the matter You’d better give the task to_______you think can finish it ahead of time. A.whoeverB.whomeverC.anyo A modern teaching building has been set up in ______ was a wasteland ten years ago.A.whatB.whichC.th After___seemed a hopeless wait, four coal-miners trapped in the mine for 125 hours were finally resc

xavier刷机部署ros

xavier刷机 使用图为T-600 xavier ,安装了256G固态。 1. 刷需要的镜像文件 从百度下载对应型号的文件到电脑的系统盘(windows下载文件后,Ubuntu系统作为刷机主机,将文件拷贝到系统盘下,目录无中文字符) 2. 刷机过程参照图为官网T-600格式化刷机(驱动安装章节) 3. 刷机后系统默认在30G硬盘里,需要更改系统盘为256G,参照官网T-600文档中SSD作为系统盘章节。 链接:https://pan.baidu.com/s/1wedD1umQqAbYw28bJ43LXg 提取码:20sp 4. 删除自带的更新源文件 sudo rm /etc/apt/sources.list.d/nvidia-l4t-apt-source.list sudo apt-get update sudo apt-get upgrade 5. nomachine安装 6. ROS安装 参考ROS安装及测试.pdf 安 装 ROS- melodic 1. 设置 sources.list 设置您的计算机接受来自 packages.ros.org 的软件。 $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 设置 ros 的官方源对于国内用户来说可能会比较慢,建议您用国内源替换,以下的清华大学 源。 $ sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 2. 增加 Keys

C语言中 定义数组大小时 不能使用变量,编程达人 C语言中数组长度不能用变量定义吗...

C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)n); 这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“[]”中括号运算符做的只是偏移其内的地址数并取值。如: a[1] 等价于 (a + 1) 而const修饰符在星号之后,则表示指针在被声明后不能改变,即只能指向这个获取的空间,完全符合数组的性质 综上所述,如果需要变量控制长度的一个数组,类似“int a[n];”的,可改成“int const a = (int)malloc(sizeof(int)*n);”并直接作为数组以[]方式使用。const可以去掉,但要保证使用时不改变a的指向 const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。

java.lang.StackOverflowError: stack size 1040KB

Connection connection = DriverManager.getConnection(url,user,password); 数据库连接出现问题, Connection connection = null; try { Class.forName(driver); //Log.i(TAG, "mGetConnect: driver success"); //获取连接 connection = DriverManager.getConnection(url,user,password); }catch (Exception e){ e.printStackTrace(); } //注释和上面的异常可以替换 // catch (ClassNotFoundException e){ // e.printStackTrace(); // } catch (SQLException e){ // e.printStackTrace(); // } return connection; 问题解决

Leetcode 421. 数组中两个数的最大异或值

题目 给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。 进阶:你可以在 O(n) 的时间解决这个问题吗? 示例 1: 输入:nums = [3,10,5,25,2,8] 输出:28 解释:最大运算结果是 5 XOR 25 = 28. 示例 2: 输入:nums = [0] 输出:0 示例 3: 输入:nums = [2,4] 输出:6 示例 4: 输入:nums = [8,10,2] 输出:10 示例 5: 输入:nums = [14,70,53,83,49,91,36,80,92,51,66,70] 输出:127 提示: 1 <= nums.length <= 2 * 1040 <= nums[i] <= 231 - 1 思路 最简单的方法是暴力枚举所有可能的两个数,但时间复杂度为O(n2);

分页

分页 排序 数据库支持在查询数据时进行排序 -- order by 字段名称 asc/desc select * from myuser order by id asc -- 如果有查询条件,那么排序的规则写到最后 select * from myuser where gender = 1 order by age asc asc表示升序排列(默认) desc表示降序排列 分页 分页:分多次查询数据,每次查询一部分数据 好处:查看方便;前端性能较高 -- limit 从第几条开始查询(从0开始), 每次查询几条 select * from myuser order by id asc limit 1, 2 从第几条开始用n表示 从第几页开始用pagenum表示 每页显示的条数用pagesize表示 *n = (pagenum-1)pagesize 前端分页需要的参数是页码和每页的条数 pagenum 页码 pagesize 每页的条数 app.get('/users', function (req, res) { // 页码:第几页 const pagenum = req.

池州学院c语言实验作业答案,池州学院实验报告3.doc

池州学院实验报告3 池州学院实验报告 姓 名_ 余飞 学 号 100712223 专 业 10级资环 (2)年级 大一 成绩___________ 课程名称:c语言程序设计 教师签字___________ 实验 项目实验三 分支结构程序设计指导教师潘韵实验 目的1.学会使用逻辑表达式表示条件的方法。 2.掌握if语句三种形式的用法。 3.掌握switch语句的用法。 4.学会设计有实际价值的分支结构程序。实验 仪器计算机实 验 内 容1.简单if语句的用法。 编写调试程序:从键盘输入一个任意大小的实数x,如果x满足如下条件,则输出x及其绝对值。输出x的条件:-29.5≤x≤29.5 2.if-else语句的用法。 修改上面的程序,使得x满足-29.5≤x≤29.5时输出x及其绝对值,否则只输出x。 3.if-else if语句的用法。 编写一个能够进行加减法运算的程序,要求:从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其他符号时,只显示输入的符号不进行运算。 4.switch语句的应用。 编写计算器程序。要求从键盘任意输入两个数值,然后输入一个四则运算符,自动完成运算后输出结果。实 验 指 导1.简单if语句的用法。 ⑴ 编程分析 正确表示条件,将数学不等式-29.5≤x≤29.5表示为如下逻辑表达式: x>=-29.5&&x<=29.5 或 (x>=-29.5)&&(x<=29.5) 也可以使用x的绝对值形式表示,如下: fabs(x)<=29.5 ⑵ 参考程序 ⑶ 程序调试 输入数据时,至少应考虑的几种情况 ① 输入满足输出条件的数,包括正数、负数、零。 ② 输入不满足输出条件的数,包括正数、负数。 ③ 输入数据为整数。 2.if-else语句的用法。 ⑴ 编程分析 只需修改上面程序中的if语句即可。将if语句修改为如下形式: if(x>=-29.5&&x<=29.5) printf("x=%f\t|x|=%f\n",x,fabs(x)); else printf("x=%f\n",x); ⑵ 参考程序 3 程序调试