- 博客(35)
- 收藏
- 关注
转载 从零搭建计算机 第二章 计算机组成原理
由科学家冯诺依曼提出的模型理论。基于通用图灵机建造的计算机都是在存储器(内存/寄存器)上存储数据。鉴于程序和数据在逻辑上是相同的,因此程序也能存储在计算机的存储器中。(1)存储器:用来存储数据和程序的区域(2)算数逻辑单元(ALU):用来进行计算(算数运算、逻辑运算、位运算等)的地方。(3)控制单元:对存储器、算数逻辑单元、输入/输出等子系统进行控制操作。(4)输入/输出单元:输入子系统负责从计算机外部接收输入数据,输出子系统负责将计算机处理结果输出到计算机外部。
2025-01-18 17:23:09
1237
原创 从零搭建计算机 第一章 数字电路基础 1.7 寄存器
D触发器可以在时钟上沿存储1bit数据,如果我们想存储多个bit的数据,就需要用多个D触发器并联实现,这种电路我们称之为寄存器。
2025-01-18 14:55:45
309
原创 从零搭建计算机 第一章 数字电路基础 1.6 锁存器和触发器
现在我们想计算这个算式:25+37+12-9+8。在没有状态存储的情况下,我们只能用4个计算电路串联得到最终结果,这显然是不现实的。目前我们画了很多计算电路,这些电路都有一个特点,。这在某些情况下会给我们的计算带来麻烦,接下来的一系列电路,我们要给大家描述的是,。
2025-01-17 19:16:28
1124
原创 从零搭建计算机 第一章 数字电路基础 1.5.3 4位加法器
添加两个“组件——导线”中的分裂器,右键点击将其设置如下图所示。添加输入Cin,A,B,右键点击A和B,将位数调整为4;说明:图中A0管道是给标签名起名位A_0来实现的。多位加法器就是多个加法器的串联。
2025-01-16 17:06:39
263
转载 从零搭建计算机 第一章 数字电路基础 1.5.2 加法器
为了处理三个数相加,我们可以用两个半加器分别处理两个累加过程,同时两个累加器产生的进位C1和C2,不可能同时为1,(因为如果C1位1,那么S1=0,S1=0,C2不可能为1),且二者只要有一个为1,则输出进位为1。半加器只能处理两个数的运算,但在实际计算中,半加器实现一位全加器。
2025-01-16 16:36:29
346
原创 从零搭建计算机 第一章 数字电路基础 1.5.1 半加器
现在我们来考虑如何用电路来实现1位加法。对于加法运算,应该两个输入A和B,两个输出S和C,S表示和,C表示是否产生进位。要想设计出1位加法的电路,就要明确A、B与S,A、B与C的关系。
2025-01-16 15:16:20
285
原创 从零搭建计算机 第一章 数字电路基础 1.4 其他门电路
与或非三门我们一般称之为,而。下面我们给出一些门电路真值表以及用与或非三门的组合实现。(这些实现并非最简实现,我们的这门数字电路基础,更多只考虑可行性,不考虑优化)
2025-01-16 14:36:10
400
原创 从零搭建计算机 第一章 数字电路基础 1.3.2 或门
给输入编号A、B,给输出编号C,按照如下图连接:开启仿真,观察C与AB之间的关系,可得真值表如下图所示:
2025-01-15 18:19:00
229
原创 判断对称日
本题不用考虑是否闰年即二月28还是29天,这对本题无影响(因为如果是29日,对称日的年份应该是92**年,超出了题目的3000年),那么可以分成三类,1个月31天的,1个月30天的,和1个月28天的。然后对年份进行依次循环,在依次判断这一年的1到12月天数,最后判断月数和天数的对称组合数是否和年份相同,输出即可。#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ long i.
2021-12-05 19:44:30
5288
1
原创 1080 画正方形
题目描述给定一个整数n,输出一个由字符“*”组成的边长为n的中空的正方形。输入要求输入一个整数n输出要求输出一个由字符“*”组成的边长为n的中空的正方形。输入样例5输出样例****** ** ** ******观察图形第一行和最后一行以及第一列和最后一列输出了所有的“ * ”所以这里可以设两个变量:行row、列column。用两个for循环进行嵌套,当row和column分别出..
2021-12-04 22:30:49
5538
原创 C语言:姓名排序
题目描述输入两个人的姓名,按字典顺序进行输出。输入要求输入2个字符串,每个字符串以换行符结束(每个名字不超过10个字符,中间无空格)。输出要求按字典顺序排序并输出。各占一行。输入样例SusanAnney输出样例AnneySusan对姓名进行排序,实际上就是按字符串的大小进行排序。字符串比较大小时,实际上是根据两字符对比时出现的第一对不相等的字符的大小来决定它们所在字符串的大小。而字符串比较大小是不能直接使用关系运算符的。例如:i
2021-12-03 22:37:51
11367
3
原创 C语言:寻找重复数字
题目描述输入n(n<100)个整数,不排序直接查找并输出所有重复的数字。输入要求先输入一个整数n,表示这个测试实例的数值的个数,跟着输入这n个整数,每个整数都不大于100。输出要求如果存在有重复的数字则依次输出,两个数字之间用空格间隔,如果不存在重复的数字,则输出-1。输入样例7 5 4 3 2 1 2 4输出样例4 2这道题讲道理如果只是寻找重复数字他很简单,但是这道题恶心人的地方就是他还要输出这个数,而且只能输出一次,那么如果
2021-12-02 21:51:49
10133
3
原创 C语言:寻找重复数字
题目描述输入n(n<100)个整数,不排序直接查找并输出所有重复的数字。输入要求先输入一个整数n,表示这个测试实例的数值的个数,跟着输入这n个整数,每个整数都不大于100。输出要求如果存在有重复的数字则依次输出,两个数字之间用空格间隔,如果不存在重复的数字,则输出-1。输入样例7 5 4 3 2 1 2 4输出样例4 2这道题讲道理如果只是寻找重复数字他很简单,但是这道题恶心人的地方就是他还要输出这个数,而且只能输出一次,那么如果
2021-12-02 21:44:59
6914
2
原创 2017年第八届C/C++ B组蓝桥杯省赛真题 等差素数列
题目描述2,3,5,7,11,13,…是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。这道题可以采用暴力枚举#include<.
2021-11-29 22:35:11
185
原创 K - 中等难度暴力(计算天数)
蒜头君给定两个日期,请计算相差的天数。比如 2010-1-1和2010-1-3相差2天。输入格式共两行:第一行包含三个整数startYearstartYear,startMonthstartMonth,startDaystartDay,分别是起始年、月、日。第二行包含三个整数endYearendYear,endMonthendMonth,endDayendDay,分别是结束年、月、日。相邻两个整数之间用单个空格隔开。年份范围在 1∼3000。保证日期正确且结束日期不早于起...
2021-11-28 19:55:55
262
原创 I - 理解结构体的用处(偏难一些的结构体排序)(中等难度)
小蒜给出了班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。输入格式第一行为n(0<n<20),表示班里的学生数目;接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。输出格式把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。Sample Input4Kitty 80Hanmeimei 90J...
2021-11-26 22:09:06
116
原创 H - 二分思想(稍简单)
蒜头君手上有个长度为n的数组A。由于数组实在太大了,所以蒜头君也不知道数组里面有什么数字,所以蒜头君会经常询问在数组A中,大于等于x的最小值是多大?输入格式第一行输入两个整数n和m,分别表示数组的长度和查询的次数。接下来一行有n个整数ai。接下来m行,每行有1个整数x,表示蒜头君询问的整数。输出格式对于每次查询,如果可以找到,输出这个整数。否则输出−1。数据范围1≤n,m≤10^5,0≤x≤10^6。Sample Input...
2021-11-24 20:20:54
303
原创 时间复杂度
对于时间复杂度,我的理解其实就是一个代码的执行时间啦,时间复杂度低的代码运行快,时间复杂度高的代码运行速度慢。但这么说显然无法解释清楚时间复杂度,于是我去找了百度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数
2021-11-23 20:09:59
408
原创 C语言:二分法基本思想
假如我们要在通过代码在1 2 3 4 5 6 7 8 9 10 这几个数中找到6,那么你会怎么做?我想必然是用6通过枚举一个个去和数据中的数进行比较吧,这样看来十分简单,我们最多比较10次就可以将6找出。可是如果这是一个数据量庞大的数据我们应该如何找到这个数,就例如在十亿个数据中找到1787623吧,这相对来说是一个比较大的工作量了。那么我们应该如何利用较短的时间来找到这个数。这里我们要提到的就是二分法思想。额,虽然面对数据量较大的数使用二分法,但是我想为了方便演示我这里就用1-10
2021-11-23 19:43:43
947
原创 G - 二分法+时间复杂度(简单)
蒜头君手上有个长度为n的数组A。由于数组实在太大了,所以蒜头君也不知道数组里面有什么数字,所以蒜头君会经常询问整数x是否在数组A中。输入格式第一行输入两个整数n和m,分别表示数组的长度和查询的次数。接下来一行有n个整数ai。接下来m行,每行有1个整数x,表示蒜头君询问的整数。输出格式对于每次查询,如果可以找到,输出"YES",否则输出"NO"。数据范围1≤n,m≤10的五次方,0≤x≤10的六次方。Sample Input10 ...
2021-11-21 21:28:27
791
原创 约瑟夫环(数组)
传说约瑟夫当年活下来就是靠快速计算这个问题。nn个人围成一圈,编号依次为1,2,3…n。从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈。以此类推,直到所有的人都出列。请输出依次出圈人的编号。输入格式两个整数n,m,1≤n,m≤100。输出格式n个用空格分隔的整数,表示出圈人的编号。Sample Input6 4Sample Output4 2 1 3 6 51、让数到m的人出圈。2、让游戏中的人像一个圈一样...
2021-11-21 06:40:17
837
原创 E - 简单排序(冒泡排序思想)
蒜术师给了你一个1010个整数的序列,要求对其重新排序。排序要求: 奇数在前,偶数在后; 奇数按从大到小排序; 偶数按从小到大排序。 输入格式输入一行,包含1010个整数,彼此以一个空格分开,每个整数的范围是大于等于00,小于等于100100。输出格式按照要求排序后输出一行,包含排序后的1010个整数,数与数之间以一个空格分开。Sample Input4 7 3 13 11 12 0 47 34 98Sample Output47...
2021-11-18 22:12:37
666
1
原创 百钱买百鸡
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?输入格式输入一个正整数nn。输出格式如果有解,依次输出公鸡、母鸡、小鸡的个数(用正整数表示)。如果无解,输出"No Answer."。数据范围1≤n≤200。Sample Input100Sample Output0 25 754 ...
2021-11-17 18:31:11
355
原创 二进制换十进制
把一个二进制数转化为十进制数。输入格式第一行一个正整数n(1≤n≤30),表示二进制数的长度。第二行一个二进制数。输出格式输出一个整数,表示对应的十进制数。Sample Input510101Sample Output21本题的难点1、用n表示二进制数的长度。2、将二进制数转化为十进制。下面就来一一解决吧。本题首要是要解决二进制转化为十进制的问题。请允许我借鉴一下百度好吧。要想知道如何从二进制转化为十进制,我们就要先知道怎么..
2021-11-16 20:46:12
817
原创 B - 简单暴力(计算今年第几天)
请你计算出xx年yy月zz日是xx年的第几天。请注意闰年对答案的影响。输入格式一行三个整数,xx,yy和zz。(1583\le x\le 21001583≤x≤2100)。数据保证输入合法。输出格式一个整数,表示是第几天。Sample Input2016 3 1Sample Output61Sample Input 21900 3 1Sample Output 260总的来说就是告诉一天的年月日来计算这是这一年的第几天。...
2021-11-15 21:41:03
442
原创 A - 简单排序
蒜头君给了一个长度为N(不大于500)的正整数序列(正整数的值不超过N),请将其中的所有奇数取出,并按升序输出。输入格式共22行:第11行为NN;第22行为NN个正整数,其间用空格间隔。输出格式增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。Sample Input101 3 2 6 5 4 9 8 7 10Sample Output1,3,5,7,9OK,看到这就明白题目需要我们干什么了,从小到大排序,找奇数项。...
2021-11-14 16:12:38
246
原创 最小数与数列第一个数交换
描述输入一个正整数(1<n<100),再输入n个整数,将最小数 与第一个数交换(若最小数就在第一位,不需要交换),输出交换后的n个数【输入】第一行输入一个正整数n。第二行输入n个整数。【输出】输出交换后的n个整数。输入输出示例 输入 输出 示例1 5 3 5 2 8 1 1 5 2 8 3 #include <stdio.h> int main(){ int n,.
2021-11-09 18:24:10
2019
原创 计算n的阶乘
题目描述给定整数n。计算n!的值并输出。输入要求输入一个正整数n!输出要求输出n!的值。输入样例5输出样例120#include <stdio.h> int main(){ int n,i; int x=1; scanf("%d",&n); for(i=1;i<=n;i++) x*=i; printf("%d\n",x); return 0; } ...
2021-11-09 14:36:36
443
原创 标题:逢七过
描述:一群人围坐在一圈玩报数的游戏。游戏规则是:从一开始报数,若遇到7的倍数或者个位为7的数则击掌代替,若犯错则要受罚。可是这些人都太聪明了,竟然没有人犯错!请问同样聪明的你,现在当报数到N(0<N<=10^7时,击掌共次数是多少?) 输入 输出 示例1 29 6 #include <stdio.h>int main(){ int N,i; int sum=0; scanf("%d",&N);
2021-11-09 14:20:53
3046
原创 1057 字符变换
题目描述CoCo在帮忙录入一篇英文文献,可是由于键盘误操作,事先按下了Caps Lock键,然后又按照平时的录入习惯进行操作,结果录入的内容里面,原本应该是英文大写的地方都变成了小写,而原来应该是英文小写的地方都变成了大写。重新录入的话实在太可怕了!你能帮忙设计一个程序,可以将字符串中的大写英文字母转换成对应的小写英文字母,而将小写英文字母转换成对应的大写英文字母,其余字符不变吗?如果对整篇文献操作还有点难度的话,先尝试对一个字符串的操作吧。输入要求输入任意一个字符串(长度小于等于100
2021-10-26 18:57:32
455
1
原创 插入排序
解决这道题,用数组会更加简便,所以采用遍历数组的方法把值赋给每一个数 scanf("%d", &N); int a[100]; for ( i = 0; i < N; i++) { scanf("%d", &a[i]); }解决完第一步之后难点就来了,如何将数组中看似没有任何关系的数进行排序。如果将数组中的数与前一位数进行比较,根据比较结果将数字的位置进行交换,是可以达到效果的。 int temp,j; for(i=1;i<N;i++){ ...
2021-10-23 19:13:56
85
原创 找大小的方法
要解决这道题,可以利用数组思想。首先输入整数N(0<=N<=1000): scanf("%d",&n);要在下一行连续输入N个数,那么开一采用遍历数组的方法: for(i=0;i<n;i++){scanf("%lf",&a[i]);} 将输入的值赋给数组中的每一个数。接下来需要对数组中的数比较大小。...
2021-10-23 12:45:48
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅