自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 “第六十七天”

这个一开始要么错一个,要么对一个,我还以为这个网站憨了,其实是它有一个没有明说的是字符串可能会以空格结尾,所以所以它这测试里面是有一个以空格结尾的,我就要么对这一个,要么就错这一个,对末尾空格的处理也不麻烦,额外判断一下就行,这个打印还是那个,这个在需要比较密码的时候,我是先用了一个二维数组,把账号,密码,邮箱三者分开读的,但其实感觉也可以用gets函数一次读入,然后从字符串的末尾开始比较,因为邮箱都在最后,然后以空格为界判断,密码,账号和邮箱。,我一开始还是把逗号和前面的绑定打印,后来才记起来之前的。

2023-11-13 22:25:14 305

原创 “第六十六天”

这个我记得是有更优解的,不过还是明天发吧,明天想一想,看看能不能想起来。这串代码我自己测是没问题的,可是检测过不去。,不过不具体说了,可以自己对比一下。

2023-11-12 23:08:15 535

原创 “第六十五天”

比如如果某个计算机的主存地址空间大小是256MB(B表示字节,b表示比特),按字节编址,其数据Cache有8个Cache行,行长64B,256MB对于的是2^28bit,也就是主存的地址共28位,由于Cache的行长是64B,则主存可以划为256MB / 64B=2^22个块,所以主存地址有22位的主存块号和6位的块内地址。为了区分Cache中存放的是哪个主存块,需要给每个Cache块增加一个“ 标记 ”,用来记录对应的主存块号,除了标记外,还要增加一个有效位,来表示当前的Cache块是否存有数据。

2023-11-10 21:18:27 160

原创 “第六十四天” 字扩展和位扩展,外部存储器

还有一种方法是 1-2译码器,就是用一根地址线,然后分支出两条线,一条线接上非门,然后两条分支出的线分别和两个片选线相加,这样只需要一根地址线就可以控制两个存储片,同样的还有 3-8译码器,和上面的原理类似(需要三根地址线,因为三位的二进制才能表示八个单位 000~111),这种方法,就可以实现 n条线 发出 2的n次方的选片信号,而且地址空间是连续的。这里要注意的是,磁盘所有磁道记录的信息量是一定相等的,并不是圆越大信息越多,故每个磁道的位密度都不同,也就是越靠近内侧的磁道位密度越大。

2023-11-08 21:17:29 939

原创 “第六十三天”

而gets不会,所以在strlen函数计数的时候,对于fgets读入的会多一个换行符,所以是四,学艺不精,学艺不精。这两天怎么做的这么别扭,为什么我的vs 的strlen函数包括终止字符了;这个题说的长度小于50,可是我把数组长度扩大到100它才给我全过,这个又是为什么?这个学来一个新东西,字母的判断,大小写字母的判断,以及大小写字母的转换。昨天的那个成了,把时间复杂度从n^2变成了n,我真的感觉我把。上面函数括号里面放的都是需要判断的字符;当作其他数组的下标还蛮厉害的,hh。它们都是在同一个库函数。

2023-11-07 21:41:30 274

原创 “第六十二天”

这个题就提到了我上次提到的,对于这种周期性循环,可以用模求余的方式控制,信息有点多,今天写的还是比较麻烦的,就是分别实现每个要求,然后最后打印。那个加21 实际上是-5+26,为了保证A~E的对应正确。这个题测试的时候不知道哪里为什么一直错一个。

2023-11-06 22:38:47 103

原创 “第六十一天”

找到错误了,上面改的什么啊,这个比他的还要快,哈哈哈,上面那个改错了就,然后导致后面的错误也没有发现,就是那个if,后面用while了,注意我使用while循环为什么,是因为阶乘后,flag未必小于10,所以如果使用if的话,最后那个存储的不是个位数,如果n阶n太大,后面会崩掉,用while是把flag化成个位。这个题和求2的n次方没有什么区别,不过把每次乘以的2 变成了 i,不过我真绷不住的是,这个有些结果用10000位都存不下,我用的十万才存的下,不过应该也用不了这么多。这个是double类型做的,

2023-11-05 22:55:45 108

原创 “第六十天” RAM

所以由于DRAM既要读后重写,又要不断刷新,所以访问延迟就比较高,但由于集成度高,存储密度大,所以往往被用作主存(RAM),以提供计算机程序所需的大量存储空间,相对的SRAM不需要刷新,可以立即访问,所以访问速度快,但集成度低,存储密度小,所以往往被用来作Cache。同时写入数据比较好理解,应该也不能说时写入错误,更像是后者写入会读前者写入的数据造成覆盖,同时对一个地址,一个写入,一个读出,写入其实应该没有什么问题,数据是存进去,但读出可能出现问题,因为原先数据可能已经被覆盖。

2023-11-04 21:14:17 133

原创 “第五十九天”

这是昨天那道题,这个后面自己的处理思路还是差了点,这道题关键感觉就是对进位的处理的,由于进位的存在,所以处理数据的时候只能从最低位开始,我一开始是从高位处理的,而且后面越来越迷,这个点一直没有反应过来。不过不是很理解这个前导 0 到底上面意识,因为我用gpt写了一个之前,它的貌似并没有处理前导 0 ,但还是过了。gpt写的,不过它这个将字符转换成整数的处理还可以。我根据gpt的又改了一下,主要就是多了个对前导0的处理。

2023-11-03 21:35:51 116

原创 “第五十八天” 存储器

之前提过,字和字节的不同,1 字节是8bit,而 一个字 和存储字长有关,若存储字长为32位,则1个字为 32bit。这个题我最开始是打算引入一个变量来观测a,b是否循环一个周期了,这样虽然能做但还是比较麻烦的,但后面突然意识到可以通过模求余来表示第几次出拳,这样感觉就比较巧,如果a的出拳周期是3 ,那么0,3,6的模3余都是0,都表示第一次,然会 1,4,7都余1表示第二次,这样不用借助变量,而且处理起来也算方便。信息读出后,原存储信息不被破坏 -- 非破坏性读出(如SRAM芯片,磁盘,光盘)

2023-11-02 22:46:41 126

原创 “第五十七天”

把区域看成 左开右闭,吗,每次输入一个区域的时候,都把这个区域的左边对应的树的位置所在数组位置设为 +1 ,右边对应的设为 -1 ,然后在后面的判断的时候通过 flag 的值来进行判断,当flag 为正的时候表示从左边进入了一个区域,每进入一个区域都会加(多个区域可能重合),每出一个区域 flag -1 .如果flag 不为 0,表示还没有出去所有的区域,真的是很厉害的思路。这个思路,真的太神了,当然也是自己太弱了,就这我还为自己想出用 1/0 来表示树是否存在,然后求和而自喜呢,他这个思路真的好厉害。

2023-11-01 22:12:14 116

原创 “第五十六天”

上面都没有做。

2023-10-31 22:16:55 98

原创 “第五十五天” 定点数,乘除运算

然后根据余数的正负对余数进行处理得到下一个新余数,然后再根据这个新余数的值确定下一位商值,这样重复直至得出结果,这里如果最后的出的余数为负,则再商0之后,还需要对余数再处理一下(加 |y| 的补码,就是恢复余数的那个东西)得到正确的余数。(把现在这个相减之后小于 0 的余数在加上除数,得到的就是之前的那个余数),注意这个虽然是原码的除法,但在减去除数的时候,用的是 (-|y|)的补码,在恢复余数的时候加的是 |y|的补码。,数值位去绝对值进行运算。每次加法加的可能是 0 ,x的补码 ,(-x)的补码。

2023-10-30 22:04:31 361

原创 “第五十四天” 溢出判断,标志位 ,移位,有问题没有解决

用来判断运算结果是否为 0 ,其值为 1 的时候 表示结果为 0 ,其值为 0 的时候 ,表示运算结果非 0,在硬件上的计算方法是运算结果的全部位 为 0 的时候 ZF的值为1,这里我和上面保有一样的疑问,不过这里再用来判断的时候是不是好点。对于带进位位的循环移位,会把移出的位放到进位位,原进位位补上空缺,也是右移,这样最低位(假如是0)被移除,然后把原进位位(假如是1)已到由于右移而空缺的最高位,然后把最低位移出的 0 放入进位位。,定点小数正数都补 0 ,负数的原,补码补的是 0,反码补的是 1.

2023-10-29 21:56:23 1902 2

原创 “第五十三天”

今天没有做什么,不过这个在打印,的时候一直卡着,我一直在想把逗号打印在后面,所以一直想办法确定最后一个是哪一位,这里居然没有绕过来其实可以看做是前面,这样第一个不打印逗号,后面打印就可以,而且很好确定,不过也没有做很久,中间是有事情离开了,不至于做了两个多小时。这个是别人的,居然没有绕过这个圈,真的是....我的,后面用num确定打印第几个了。

2023-10-28 22:00:24 203

原创 “第五十二天” 逻辑运算,加法器

这个不好说,这个就是补码的加法器,它这里多了一个Sub加/减法控制信号,同时向选择器和低位的进位输入信息,如果是加法的话非门是关着的,低位的进位输入是 0 ,这样就都是补码直接参与运算,如果是减法的话,那非门就是打开的,另一边是关着的,这样的话就可以实现减数的全部为按位取反,而末位加一这个操作的实现是通过向低位的进位输入 1 来实现的,这里真的很巧妙,一个输入信号,即控制了加减,又实现了对数据处理,其实两个都是数据的处理,反正就是挺开眼的。或: Y=A+B;就是取反,a是0,y就是1,a是1,y就是0.

2023-10-27 20:42:11 195

原创 “第五十一天” 原反补,定点数,奇偶验证码

定点小数的原,反,补码的相互转换和定点整数是一样的,这里定点小数的原码和反码的真值 0 也都是两种形式,原码就是还是,符号位为 1/0 ,其他位为 0,反码还是全 1 ,或者全 0,和定点整数一样, 定点小数的补码也只有一种,那就是全 0, 所以也会比原码和反码多表示一个数,就是符号位为 1,数值位全 0 的时候,这个时候表示 -1(最小值)。,就是说,比如 1111 1111,这个数,其最低为不再表示2的零次方,第二位也不再表示 2 的一次方 ,但其实正数好像也没有什么问题,毕竟和原码是一样的。

2023-10-26 21:42:19 128

原创 “第五十天” 机组--数据的表示 向上向下取整函数

2421码是改变了权值的定义 ,现在这四位二进制的权值分别是 2 4 2 1,4以下,包括4,对应值关系和8421码是一样的,比如4 还是 0100,但4以上的值就定义保证最高位的2为1,这样是为了避免歧义,比如5可以表示为 0101,也可以表示为 1011,但有了最高位的要求,就只能是 1011,这样就避免歧义的发生。:每个数码位所用到的不同符号的个数,r进制的基数就是r,比如10进制的基数是10个,0~9,二进制是2个,0~1.,比如十进制的0~9,9这个符号的权重和0是不一样的,而且现在的计数法。

2023-10-25 22:07:08 410

原创 “第四十九天” 机组 硬件基本讲解

这里需要说明的是主频高的cpu不一定比主频低的cpu快,因为处理指令的速度还和CPI有关(处理一条指令所需的时钟周期数),即使平均CPI相同,主频快的也不一定更快,还要看指令系统,如过前置不支持乘法指令,那就只能用多次加法实现乘法,而如果后者支持乘法指令,两者的快慢也未必。送到CU,CU经分析后,会指挥其他部件进行执行指令,如“取数”指令,分析后,IR会将指令中的地址码传给MAR,然后MAR会根据地址找到对应的数据传到MDR,若进行加法运算,这个值会再传递ACC或者X(看这个值是被加数还是加数)。

2023-10-24 21:54:03 171

原创 “第四十八天” 机组,计算机发展历程

硬件是指计算机的实体,如主机和外设等;软件则是由具有各类特殊功能的程序组成,又可分为系统软件和应用软件 ,前者用来管理整个计算机系统,如操作系统,数据库管理系统,标准程序库,网络软件,语言处理程序,服务程序等,后者是指按任务需要编织成的各种程序,如抖音,王者荣耀,迅雷等。第二代是晶体管时代,1958-1964,此时的逻辑元件是晶体管,晶体管的体积比电子管小的多,而且功耗降低,运算速度是几万到几十万,内存是磁芯存储器,外存是磁带,此时出现了面向过程的程序设计语言:FORTRAN,有了操作系统雏形。

2023-10-23 22:23:37 141

原创 “第四十七天”

数据结构也差不多学完了,不过学的很急,里面的各种代码也没有实操,不过还是打算继续往前学,争取先过一遍。不过这几天不知道为什么感觉很疲倦,感觉很奇怪。这个题不难,但下面这个人思路还蛮有意思的,居然用 || 来控制后面printf语句的运行,

2023-10-22 21:32:23 22

原创 “第四十六天”

今天又没有做什么,看了几节课....

2023-10-21 22:16:11 24

原创 “第四十五天” 数据结构基本概念

对应的存储结构分别是顺序存储结构和链式存储结构 ,数组就是一种顺序存储结构,数据之间彼此是相互靠近的,而链式存储结构,数据和数据并不一定是靠近的,而且感觉基本是不可能靠近的,所以对于链式存储,要想实现数据的关联,就需要存储对于关联数据的地址以达到访问或者操作的目的。目前看的有关数据结构的课,估计这周就看完了,但感觉差很多,还是和c一样,这样过一下吧。: 构成数据元素的不可分割的最小单位,我们每个的信息也可以在划分一下,比如学号,姓名,性别之类的,这些都是构成我们信息的数据项。:性质相同的数据元素的集合。

2023-10-20 21:11:31 496

原创 “第四十四天”

这道题也不是难,但可能会忽略一种情况,当最大小出现在首位的时候,那个时候如果进行交换的话,大小值可能出现覆盖的情况,最终导致丢失最大值或者最小值,比如最大值 10 在第一位,最小值 0 随意,先交换最小值,那么 最小值 0 再和第一位交换时 第一位的 10 就被覆盖了,后面进行最大值交换时 ,再用 最大值位交换就会出现问题,因为最大值位是第一位 ,现在是 0 了。这个地方就是为了防止那样,是先用m对后赋值的进行存储,防止值被覆盖丢失。

2023-10-19 22:19:18 347

原创 “第四十三天”

这个是我自己写的,下面那个是看的别人的,其实大致都是一样的,通过四次循环,挨个求和比较,都很麻烦,但重点在于,对于已知变量的运用,当我需要在最内层循环用变量确定a数组组元时,是通过引入新的变量来搞定的,而这个人则是通过对已有变量的处理来表示,这个地方感觉还是蛮差距的。

2023-10-18 22:05:42 152

原创 “第四十二天”

这个,之前用的b去存储a的总和和排名,后来在比较的过程中,只改变的b的值,却没有改变a的值,但在比较语文成绩的时候用的还是a,这个时候a和b同样是第i个对应的可能不是同一个对象了。,因为上面b的值可能改变了,现在的第i个b可能是原来第i+1,i-1个,都有可能,所以比较结果错误。这个是正确的,不过感觉这样还是很麻烦。

2023-10-17 22:25:24 145

原创 “第四十一天”

今天这个有点意思,这里第二个代码分数相等时进行交换的时候是在打印前,当时提交的时候一直错两个,后来才明白应该是有两个以上分数相等的情况,在打印的时候,一个人不能和全部比较,只能和后面那个比较,比如分数相等的是 abc ,那么最后是bca,而不是cba,这就是不能全部比较,而在比较时进行判断时,就可以全部比较。

2023-10-16 22:11:44 20

原创 “第四十天”

今天就没有做什么。

2023-10-15 21:59:51 21

原创 “第三十九天”

一发入魂,前面那个错的是忘了打印没有的情况了。

2023-10-14 22:13:26 24

原创 “第三十八天”

【代码】“第三十八天”

2023-10-13 22:28:41 21

原创 “第三十七天”

实战错误就慢慢暴露,scanf老是忘记地址符,对题目要求判断也会出错,即使写出来,有时候代码也比较麻烦,路漫漫其修远兮。

2023-10-12 22:16:30 25

原创 “第三十六天” 练习

这个是 求给定一个只包含小写字母的字符串,找到并输出第一个仅出现一次的字符。如果没有输入 no。他这个真的好lp,这怎么想到的,存储次数和对应字符 ,下标有对应的意思,一次大循环搞定,震惊。下面前两个是我自己写的,但时间复杂度都很高,第三个是借鉴别人之后写的,基本是照搬了,就是这个,借鉴的别人的,感觉很厉害,自己理解都花了一段时间。

2023-10-11 22:11:02 24

原创 “第三十五天” define

3、最后,再次对结果文件进行扫面,看看它是否包含任何由#define定义的符号,如果是,就重复上诉处理过程。1、在调用宏时,首先对参数进行检查,看看是否包含任何#define定义的符号,如果是,它们首先被替换。4、宏参数和#define定义中可以出现其他#define定义的符号,但是对于宏,不能出现递归。#define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏或者定义宏;2、替换文本随后被插入到程序中原来文本的位置,对于宏,参数名被它们的值所替换。#define 定义宏;

2023-10-10 19:56:48 28

原创 “第三十四天” 文件

C标准库中的一个函数,用于检查文件流的文件结束标志(end-of-file,EOF)。它用于确定文件指针是否已经达到了文件的末尾。函数是C标准库中的一个函数,用于检查文件流的错误标志。1、文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets);在文件读取过程中,不能用feof函数的返回值直接用来判断文件的结束与否。2、二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。:根据文件指针的位置和偏移量来定位文件指针。:让文件指针的位置回到文件的起始位置。

2023-10-09 21:02:28 22

原创 “第三十三天” 文件

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(比如文件的名字,文件状态及文件当前的位置等)。文件在读写之前应先打开文件,在使用结束之后关闭,在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当建立了指针和文件的关系。磁盘上的文件是文件,但在程序设计种,我们一般谈的文件有两种:程序文件,数据文件(从文件功能的角度来分类)。:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件或者输出内容的文件。

2023-10-08 19:45:14 23

原创 “第三十二天” 动态内存管理 malloc,calloc,realloc

与函数malloc的区别只在于calloc会返回地址之前把申请的空间的每个字节初始化为0,同时可以定义申请元素的大小(类型)和个数;包含柔性数组成员的结构用 malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。你可以使用适当的初始化方法来确保新内存的内容是已知的。后,指向内存块的指针的值可能会发生变化,因此你应该使用返回的指针来更新你的引用。如果参数ptr指向的空间不是动态开辟的,那么free函数的行为是未定义的;将尝试将现有内存块的大小更改为新的大小。

2023-10-07 21:32:19 26

原创 “第三十一天” 字符串函数收尾,结构体

但怎么感觉memcmp不能比较数的大小,因为按字节比较,对于像整型这样的先比较完低位,如果低位比较出结果后面就不比高位了,比如如果按十进制来看,一个是101,一个是2 ,个位先比,2>1之后,直接返回一个小于零的数,后面的就不比了。4、如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处(结构体所代表的对齐数,就是其内部成员变量的最大对齐数),结构体的整体大小就是所有最大对齐数(含嵌套结构体对齐数)的整数倍。这种结构体的大小是可以计算的,编译器可以为其分配具体的内存。

2023-10-06 22:19:47 28

原创 “第三十天” 字符串函数

这里有自己和老师写的,还是会忘了对指针是否为空指针的判断和对不改变变量的const修饰保护,这些还好,编程的思维方面老师是直接用num--作为判断循环条件的,但我则是引入了一个新的变量 i 以达到目的。strtok函数的第一个参数不为NULL,函数将找到str中的第一个标记,strtok函数将保存它在字符串中的位置。(由于strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容,并且可以修改。memcpy函数是不用来处理重叠的内存之间的数据拷贝的。

2023-10-05 22:33:23 36

原创 “第二十九天” 字符串函数

这下面的模拟不同点是前者对arr数组没有定义大小,字符串大小就是数组大小,当程序运行到函数里面的 *str1-*str2 时,后者*str2是越界访问的。后面定义了大小,未完全初始化让后面的全为0,所以访问第八个元素的时候,返回的是两个 0 相减。:从dest的空白符出开始追加 n 个字符,追加之后后面补 \0 ,如果src中没有足够多的字符则在全部复制之后,后面补 \0。从src复制 n 个字符到dest中,注意要是src中没有足够的字符,会在后面默认补 \0 到n个字符 ,打印效果如图。

2023-10-05 12:00:11 18

原创 “第二十七天” qsort函数,字符串函数

模拟qsort函数的实现,很不熟练,可以消化的点还是蛮多的,一个一个字节交换的那个循环再写一个函数好一点,还有用 flag 来判断原序列是否有序这个点感觉也很不错。字符串以 ' \0 ' 作为结束标志,strlen函数返回的是在字符串中 ‘ \0 ’ 前面出现的字符个数(不包括空白符)。再次提醒,字符串是有值的,值是首字符的地址,下面这个也间接说明的了,strcpy会拷贝空白符。这里的返回值是 e1-e2 ,在比较函数内部是先把无类型指针,转化成其原本的类型之后才操作的。可以排序任意类型的数据。

2023-10-02 22:42:01 19

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除