
c
weixin_39410618
汇编c数据结构算法操作系统编译原理希望能学到80岁吧
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基础知识学习 用递归求形如a + aa + aaa + ...
这里有三个递归关系,a、a0、a00,第n项是n-1项的10倍,而a、aa、aaa的递归关系是a、a0、a00求和,a + aa + aaa也是求和。可见求和是天然的递归关系。原创 2024-11-21 04:02:03 · 296 阅读 · 0 评论 -
汉诺塔递归实现和循环实现的比较
下面是参考文献c语言程序设计 夏涛 主编 北京邮电大学出版社https://blog.youkuaiyun.com/maomao8246/article/details/84841431下面代码完全参考教科书// hanoi.c 汉诺塔的递归实现#include <stdio.h>void move(unsigned int n, char* head, char* tail);void hanoi(unsigned int n, char* a, char* b, char* .原创 2021-08-18 22:42:37 · 523 阅读 · 0 评论 -
GCC NASM 混合编程, 这一次有点实用性, 借用程序堆栈实现了数制ascii转换
GCC NASM 混合编程, 这一次大概有点实用性了, 是借用程序堆栈实现了数制ascii转换,当然负数的部分没写,留个思考额余地吧;testnasm.asmglobal _bin2ascii, _mystackextern _s[BITS 32]section .data_tab: db '0123456789abcdef', 0section .text _bi...原创 2019-11-22 22:27:18 · 264 阅读 · 0 评论 -
仍然是汇编和C混合编程的例子,这次用了gcc 和 NASM
仍然是汇编和C混合编程的例子,这次用了gcc 和 NASM之所以选择gcc和NASM,主要目的是在开发操作系统的时候,经常要用到几种不同的汇编和C语言的编译器,而NASM和GCC都是开源的,而且也配合的非常好,同时又是INTEL格式的汇编,相信会很合大家的胃口。global __strlen, _str, _printextern _ss, _printf_str: db 'G...原创 2019-11-18 11:46:22 · 521 阅读 · 0 评论 -
数字的蛇形输出(这个玩意儿,可是钻研了两天,真特么的烧脑了!)
//数字的蛇形输出#include <iostream>#define LEN 10using namespace std;typedef struct direct{ int x; int y;}direct;enum mycase {_right, _left_down, _down, _right_up};direct d[4] = {{0, 1}, {...原创 2019-11-07 22:03:52 · 319 阅读 · 0 评论 -
昨天又做了一些题目,权是为了练手,蛮有意思的!
//测试这个程序的运行结果为 7 28#include <iostream>using namespace std;int main() { int x = 2, y = 0, z; x += 3 + 2; printf("%d", x); x *= y = z = 4; printf("%d", x);}//三元运算符的一个典型例子#include <...原创 2019-11-02 10:39:19 · 149 阅读 · 0 评论 -
没想到求一个数的素数因子的题目还真有点难度。。。因此在这里发一下。
//求正整数的素数因子,里面似乎有定义了多余的变量。算法近似耍赖,不过似乎得到了正确的结果。#include <iostream>using namespace std;int is_prime(int n) { int i; for(i = 2; i < n - 1; i++) { //这里似乎做了冗余的运算,但是不知道怎么改,似乎是n的一半就好 if(!(n...原创 2019-10-31 21:33:46 · 435 阅读 · 0 评论 -
关于指针,我对初学C语言的同窗们真的有话要说!5
这应该是一个结束篇,同学们如果是还不理解的话,也没有关系,只要你多敲代码,多调试每一段程序,理解指针不成问题。那么这一篇就说一下C中的主要指针种类吧可见每一种数据类型都有对应的指针类型。必须说基本类型, char*, short*, int*, long*, float*, double*相应的我们构造的数据类型也都有对应的指针struct mystruct { ...原创 2019-10-21 09:13:28 · 133 阅读 · 0 评论 -
关于指针,我对初学C语言的同窗们真的有话要说!4
前边对于指针的解说和一些不怎么恰当的例子,或许使有些同学们已经了解了指针的本质问题,当然如果是没有实践基础的话,也可能因此更糊涂了。那么让我们今次再具体和肯定的说一下指针的问题好了。第一点,就是c当中为什么引用指针的概念(这只是自己使用汇编及c语言后的体会,并不一定准确,大家谨慎阅读了),如果是有些汇编基础的同学们,一定对此问题没有什么疑问了,我想本质的原因就寻址的问题,首先是程序的数据存储在...原创 2019-10-15 21:03:51 · 239 阅读 · 0 评论 -
关于指针,我对初学C语言的同窗们真的有话要说!3
这一偏距离上次说指针,时间是有点长了,主要是这几天上班有点累。好了,今天恢复了一下,让我们将继续侃吧!上一次我们提到了一般的变量,同时也说了指针变量。这样的话我们应该认识到这两种变量有什么异同了吧。什么什么,您还在迷糊,没关系,让我再来说一遍。我们说定义了一个变量实际上是分配的一定字节的存储空间,所以这个存储空间就有他的首地址,首地址就是我们平常的指针常量,同时从首地址开始的若干个字节...原创 2019-10-11 22:15:48 · 173 阅读 · 0 评论 -
连续做了C书上的习题,也不知道对不对!
// 1 - 2! + 3! - 4! + ... - 10!#include <stdio.h>int factorial(int n) { int x = 1, i; for(i = 1; i <= n; i++) { x *= i; } return x;}int main(void) { int sum = 0, i, flag = 1; f...原创 2019-10-06 21:23:27 · 170 阅读 · 0 评论 -
关于指针,我对初学C语言的同窗们真的有话要说!2
昨天,我大胆地从不知道是什么角度,泛泛地把指针的一些问题谈了起来。今天,我们还是继续再谈谈吧!在C中如果要说指针的话,其实更确切的说应该是定义的指针变量, 那么对应起来就是指针的常量,这两者之间说起来还是挺好区分的。我们知道变量一定是分配存储空间的,而常量是本来就存在的,那么本质的区别在哪里呢?还是拿个具体的例子来说一下吧如果我们int a;定义了一个整型变量发生了什么呢,有同窗就...原创 2019-09-29 22:09:43 · 122 阅读 · 0 评论 -
1 3 4 9 10 12 13 27 这个数列的算法是正确了吗?
// 1 3 4 9 10 12 13 27// 3^0 3^1 3^0+3^1 3^2 3^0+3^2 3^1+3^2 3^0+3^1+3^2 3^3// 1 2 3 4 5 6 7 8 // 1b 10b...原创 2019-09-29 22:02:21 · 970 阅读 · 2 评论 -
关于指针,我对初学C语言的同窗们真的有话要说!
这些日子其实也不是闲着的,觉得自己算法方面差的很多,所以一个劲的看“严书”。不过真的是有爬雪山、过草地的感觉,万里长征还刚刚开始,我已经快到40岁了,也就是黄土都埋到一半的人了,不由得也要感叹一下了!又觉得操作系统还只是开了头,具体的理论知识,真的不懂多少,所以又要拿起那本“minx操作系统与实现”书来啃一下,至于是什么效果了,自己就没有办法了,看了后边忘前边,回过来翻前面的吧,后面的又不知看过没...原创 2019-09-28 22:17:31 · 199 阅读 · 0 评论 -
1 3 4 9 10 12这个问题还真的……
// 1 3 4 9 10 12// 3^0 3^1 3^0+3^1 3^2 3^0+3^2 3^1+3^2// 1 2 3 4 5 6// 1b 10b 11b 100b 101b 110b// 把上面的二进制数为 1 的地方替换成 3 的相应位...原创 2019-09-28 21:19:14 · 199 阅读 · 0 评论 -
字符串替换的程序,虽然有点幼稚,但是几乎没有抄袭的痕迹。
这个程序有没有bug当然是不知道的,还是谨慎的看吧!#include <stdio.h>//求字符串长度int _strlen(char* s) { int len = 0; while(*s++) { len++; } return len;}//比较两个字符串是否相同int _strcmp(char* s0, char* s1) { int...原创 2019-08-17 21:54:20 · 156 阅读 · 0 评论 -
在大字符串中删除所有指定小字符串居然有些难度,看来幼稚园也有挑战呀!
#include <stdio.h>void del_c(char* s, char c) { char* ss; while(*s) { if(*s == c) { ss = s; while(*ss) { *ss = *(ss + 1); ss++; } *ss = '\0'; } else { s++; }...原创 2019-08-14 10:25:14 · 131 阅读 · 0 评论 -
好久没有发文了,自己用C语言编写了一个计算器程序。
对了这个就是幼稚园小朋友写的东西了,同是也是写给小朋友的玩具程序。#include <stdio.h>#include <stdlib.h>#include <conio.h>#define YES 1#define NO 0typedef int Status;int add(int a, int b);int dec(int a,...原创 2019-07-24 20:42:58 · 635 阅读 · 0 评论 -
C语言复杂中再加入复杂,这次尝试着解释了一下,不知道编译器是怎么理解的。
#include <stdio.h>int main(void) { #define N 3 #define max(a, b) ((a) > (b)?(a):(b)) #define __NR_hello 0x81 #define __NR_world 0x82 #define f(type, name) \ type name(void) { \ pri...原创 2019-04-28 09:38:12 · 146 阅读 · 0 评论 -
SnailOS 这里算是坐上C++的列车了吗?
AS = asC = g++CF = -cLD = ldLDF = -Ttext 0x100000OBJ = boot.o kernel.o ./font/myfont1.o ./font/myfont.odefault: $(OBJ) make boot.o make kernel.oboot.o: boot.s $(AS) -o $@ $< ker...原创 2019-04-28 11:13:55 · 180 阅读 · 0 评论 -
真的理解C中的可变参数了吗?
#include <stdio.h>struct mystruct { struct mystruct* next;};void f(int a, char c, char* s, struct mystruct* b, ...){ void** varg = (void*)&b; varg++; while(*s){ if(*s != '%')...原创 2019-05-03 23:09:32 · 129 阅读 · 0 评论 -
究竟C中的函数调用时怎么回事呢?我们很像知道,因此做了下面的实验。
这一次比之前的弄得明白一点了,希望不会误导大家!#include <stdio.h>void ff(char* s) {printf("%s", s);}void main(void){ void fff(char* s) {printf("%s", s);} ff("Hello, C language!\n"); fff("Hello, World!\n"); ...原创 2019-04-28 21:46:43 · 298 阅读 · 0 评论 -
难道我们始终都在做有意义的事情吗?深入C的乐趣!
#include <stdio.h>void myf(void){ printf("I am myf()\n");}int main(void){ int a = 100; int d = 0; int b = 3; int res; asm("divl %4;" "jmp 1f;" "1:jmp 1f;" "1:" :"=a"(res),"=d...原创 2019-04-30 22:33:25 · 206 阅读 · 0 评论 -
SnailOS 的显存地址是怎么计算出来的?
在SnailOS 屏幕显示的函数中,我们明显的使用显存地址0xe0000000,然而这个值是从哪里来的呢?说起来还真是挺曲折的,不过为了让大家也不糊涂,我还要在这次啰嗦一些。(以前的文章应该已经说过它的由来,不过时间已久,我们就不得不再提起,不然就忘得差不多了)。1、保护模式的图形模式的由来。我们保护模式的图形模式,说起来是由grub给我们直接构建来的,只要我们的引导启动文件符合grub的...原创 2019-05-21 22:48:26 · 329 阅读 · 0 评论 -
为什么C中的文件读写函数会出现这样的问题?
以前从不关心C应用程序的开发,但是这次有点傻了,为什么?//: test03.cpp#include <stdio.h>#include <stdlib.h>struct student{ char name[0x20]; int score; long num; int age;};int main() { struct student...原创 2019-05-26 09:14:18 · 267 阅读 · 0 评论 -
这么快就找到C文件读写错误问题的答案,真的很意外!
真的不知道二级制读写与一般的读写到底有什么区别,仅仅是在文件打开时把原来的“r”改成“rb”(w改成wb)就成功了。//: test03.cpp#include <stdio.h>#include <stdlib.h>struct student{ char name[0x20]; int score; long num; int age;};...原创 2019-05-26 18:47:44 · 195 阅读 · 0 评论 -
C中文本文件的拷贝也会有个小问题,但是很快就解决了。
多写的字符似乎就是EOF,但是不能确定。//: test05.c#include <stdio.h>#include <stdlib.h>int main() { system("cls"); FILE* f; char buf[0x1000]; char* p = buf; f = fopen("test05.c", "r"); while...原创 2019-05-26 21:10:59 · 159 阅读 · 0 评论 -
这是插入排序吗?我真的不太清楚。
这是运行结果,下面是代码。F:\Thinking in C++\sims>test1050 -1 3 1000 84447 90 277 0 -9 20a[1](50) <--> a[0](-1)-1 50 3 1000 84447 90 277 0 -9 20a[2](50) <--> a[1](3)-1...原创 2019-05-30 09:06:58 · 129 阅读 · 0 评论 -
还是排序,为什么突然对排序感兴趣了呢?我自己都不太清楚。
//: test20.c// 这应该是插入排序吧?(“插入”多么有想象力的词汇,令人浮想联翩,似乎编程中也有苍老师的指导)#include <stdio.h>#define L 9int main(void) { int a[L] = {3, -1, 4, 5, 6, 7, 0, -10, -1}; int i, j, tmp; printf("排序前的数列:");...原创 2019-06-01 21:42:45 · 147 阅读 · 0 评论 -
对插入排序情有独钟,自己试着解释了一下
#include <stdio.h>#define L 10int main(void) { int a[L] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; int i; for(i = 0; i < L; i++) { printf("%d ", a[i]); } printf("\n\n"); int j, key; i =...原创 2019-06-19 20:43:08 · 135 阅读 · 0 评论 -
构造单链表
#include <stdio.h>#include <stdlib.h>typedef struct linklist { int e; struct linklist* next;}linklist, * Linklist;Linklist tail;int count;Linklist initlinklist(void) { Linklis...原创 2019-06-21 23:37:10 · 424 阅读 · 0 评论 -
冒泡排序和折半查找
#include <stdio.h>#define L 11int main(void) { int a[L]; int i, j, key, t; for(i = 0, j = (L - 1) * 3; j >= 0; j -= 3, i++) { a[i] = j; } for(i = 0; i < L; i++) { printf("%d ...原创 2019-06-26 22:51:31 · 407 阅读 · 0 评论 -
无意中又喜获一本好书——《操作系统真相还原》——郑钢 著
盗版还真是无处不在呀!电子版的PDF封面也都有了。不过为了能够躺着看,我还是买了一本正版的。拿到手上也只是烦了几页,最近其实是在学习C、C++等语言,实在的说,没有时间和经历看这些厚厚的操作系统书的。不过只要一看到这类书就情不自禁地想买,真是狗改不了吃屎的感觉,哎,我什么时候才能理性和矜持一点呀!!!!...原创 2019-05-01 22:32:35 · 1003 阅读 · 0 评论