Archive for C语言

clear主要作用是清屏 ax=0600h初始化屏幕 cx起始位置 dx结束位置 然后调用bios中断 clear下边是设置光标的位置 ah=02h dh行,dl列 DispStr主要打印hello world 详细介绍google搜索得到。 boot/boot.asm代码: <pre lang="asm"> org 07c00h mov ax,cx mov ds,ax mov es,ax call clear call DispStr jmp $ clear: mov cx,00h mov dx, 2580h mov bh, 00h mov ax, 0600h int 10h mov bh, 00h mov dh, 11h mov dl, 00h mov ah, 02h int 10h ret DispStr: mov ax,BootMessage mov bp, ax mov cx,

Continue

lisp群里有人写操作系统,我又想起了以前写的。以前写的没做完,当时有很多不明白的,现在决定看书再做一遍。 环境搭建:系统是ubuntu,编译器gcc,make,nasm,虚拟机bochs,然后应该没了。 bochsrc.txt文件配置 floppya: image=./img/a.img, status=inserted,加载软盘镜像 ata0-master: type=disk, path="./img/c.img", mode=flat, cylinders=20, heads=16, spt=63, 硬盘镜像,这个还没用,建了个10M的文件 boot: floppy,,启动顺序 #boot: disk log: ./log/bochsout.txt 日志记录 parport1: enabled=1, file="./log/parport.out"# 并口的数据记录文件 应该在没啥了,有错误可以再改。 Makefile文件配置 <pre> build/boot : boot/boot.asm nasm boot/boot.a

Continue

啃了python源代码,从python.c开始慢慢看到token获取,学到很多东西,但是我看到python源代码也有很多可以优化的地方。很多参数、变量可以不要的,同样的判断在不同地方使用的不同方法,我靠看的我晕头转向。一到晕头转向的时候,我就重新从有疑问的地方再走一遍,认真看关键代码,然后才能看懂这一部分的功能。 语言的基本语法想个差不多了,天马行空了一下,与开始想的差距太大。

Continue

1 安装 下载的最新的3.4, http://llvm.org/releases/download.html#3.4 Clang source code (.sig) LLVM source code (.sig) Compiler RT source code (.sig) 官方安装文档:http://llvm.org/docs/GettingStarted.html#getting-started-quickly-a-summary 下载的源码主要解压到正确目录就行了. mkdir build cd build ../configure make make install 编译的二进制文件在llvm-3.4/build/Release+Asserts/bin 搞定了 clang --version clang version 3.4 (tags/RELEASE_34/final) Target: x86_64-unknown-linux-gnu Thread model: posix 源里边最新的是3.3的 2 写一个c的hello

Continue

老师说要实现一个在线c语言学习的网站,引导用户一步一步编程。 找到这个网站:http://www.codecademy.com,准备以这个网站为原型设计。这个也不错http://www.paomianba.com/astar/ 需要一个一步一步的引导语,一个代码框,再一个代码保存的功能。代码运行这个先不考虑,安全性我还没考虑好。 加入用户登录功能,记录学习进度。加入每个步骤的提问,评论功能。 后台能够添加教程。 难度主要在代码输入编辑框中后,检测输入是否正确。 代码框准备使用http://ace.ajax.org/。前端使用js与服务器进行数据交互,判断是否正确。 后台代码用python写,框架不准备用django了,笨了点,使用tornado或者web.py,这两个文档都有看,就是没有实践一下了。数据库还是用mysql,查查资料,看看换个,借机学学其他数据库。

Continue

解决问题的方法真的有好多种,有的可以用很少的代码实现,好佩服。 自己写的代码: <pre lang="c"> /* ID: LANG:C TASK:friday */ #include<stdio.h> int main() { int i,j,n,a[7]={0},t;//t FILE *fin=fopen("friday.in","r"); FILE *fout=fopen("friday.out","w"); fscanf(fin,"%d",&n); for(i=0;i<n;i++) {for(j=0;j<12;j++) {if(i==0&&j==0){ t=13%7; //a[t]++; }else{// if(j==2) { int b=1900+i; if(b%4==0&&b%100!=0||b%400==0) {t=(29%7+t)%7; //a[t]++; }else{t=(28%7+t)%7; //a[t]++; } } else if(j==4||j==6||j==9||j==11) {//30 t=

Continue

今天做完百度acm的题,群里几个人在讨论各个学校的acm队伍、学习等。说到一起做USACO Training上的题目。我遍开始做了,以为这个网站是训练,是一个循序渐进的过程。做到Greedy Gift Givers这个题目,学到很多东西,记录一下。 这个题目很简单,不需要神马高深的算法,主要学到许多c语言的用法,先上我自己写的代码。 <pre lang="c"> /* ID: LANG:C TASK:gift1 */ #include<stdio.h> struct gift { char name[15]; int get; int give; }g[10]; int main() {FILE *fin=fopen("gift1.in","r"); FILE *fout=fopen("gift1.out","w"); int i,np; fscanf(fin,"%d",&np); for(i=0;i<np;i++) { fscanf(fin,"%s",g[i].name); g[i].get=0; g[i].give=0; } fo

Continue

今天把操作系统作业做完了,本来以为很简单的一个程序几十行就写完了。没想到写了有二百行,各种添加变量,各种添加if,各种添加for,直接晕菜了。 写得很乱,说不定明天就忘记写得神马意思了。先贴出来,等上机的时候在优化一下。<操作系统课程设计--短作业优先作业调度> code: <pre lang="c"> #include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXNUM 5 #define MAXTIME 20 struct sjf { char name[8]; int arrivetime; int servicetime; int runtime; int is_over;//是否运行完 int starttime; int finishtime; int turnaroundtime; float rightturnaroundtime; }p[MAXNUM]; static int j=0,k=0,l=0;//j当前正在执行的进程 k

Continue

<pre lang="c">#include  <stdio.h> /* 用于将输入复制到输出的程序;第2个版本 */ main ( ) { int  c; while ( (c = getchar ( ) ) != EOF ) putchar ( c ); }</pre> g e t c h a r函数在没有输入时返回一个特殊值,这个特殊值不能与任何实际字符相混淆。这个值叫做E O F(End Of File,文件结束) 。必须把c说明成一个大到足以存放g e t c h a r函数可能返回的各种值的类型。之所以不把c说明成c h a r类型,是因为c必须大到除了能存储任何可能的字符外还要能存储文件结束符E O F。因此,把c说明成i n t类型的。 VC6.0打印输出EOF值发现是-1

Continue

云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C语言的朋友一个有价值的参考。 为什么要学习C语言? 为什么要学习、使用C语言?为什么要学习一个可能比自己都岁数大的编程语言? 我在前面如何学习编程语言的博客文章http://sunxiunan.com/?p=1597 里提到,选择一门编程语言,“为什么而学”这个目的是最重要的,目的不明确就没法学好。这也是为什么很多学生朋友在大学里必修C语言却觉得没学明白的原因。因为学习的目的不明确,学习当然也没有动力。还有一个原因是C语言是工程实践性很强的语言,它不是来自某个研究所某个大学学院,而是实实在在从项目需要中产生,伴随着Unix的兴起而流行,语义简明清晰,功能强大而不臃肿,简洁而又不过分简单,实在是居家旅行工作学习必备之良友。 C语言相比C++的

Continue