摘要: scanf里那些普通字符是用来指定在输入数据中必须出现的字符 阅读全文
posted @ 2013-03-02 19:13 ideawu 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 该关键字可修饰函数和变量对于函数,若加上该关键字则改变的是该函数的链接性质,该函数仅能在本文件中使用,而不能link到其他文件。好处是对不同作者的代码进行了隔离,别人的程序是不能够调用你写的这个函数的。对于变量,根据变量分为局部和全局有两种情况:(1)局部,一般的局部变量在函数结束之后会被释放掉,加了该关键字之后就不会被释放,在下一次使用的时候该变量还保持上一次的值(2)全局,全局变量也是被限定只能在本文件中使用。 阅读全文
posted @ 2013-03-01 16:04 ideawu 阅读(147) 评论(0) 推荐(0) 编辑
摘要: for(exp1;exp2;exp3){exp4;}步骤1:解算exp1步骤2;解算exp2;对exp2进行判断,exp2真就接着执行exp4,假就直接跳出循环体步骤3;解算exp3,然后回到exp2退出循环的唯一条件就是exp2为假这里有几点exp1可以什么都没有,只要你在前面有初始化exp3中i++和++i都一样,不影响结果 阅读全文
posted @ 2013-02-28 21:09 ideawu 阅读(125) 评论(0) 推荐(0) 编辑
摘要: for(int i=0;i<total && scanf("%d",&buf[i])>0;i++) ;注意这样的写法是正确的,但是for(int i=0;scanf("%d",&buf[i])>0&&i<total;i++);像这样将读入和下标判断反过来就会出错,会造成多读入一个数据。因为&&运算符的原因,先计算i<total就可直接判断该语句为假,不用再执行一次读入指令。 阅读全文
posted @ 2013-02-28 20:53 ideawu 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 最近在网上看到个小学四年级的数学题,用1~8这8个数字构成两个四位数,每个数字只能使用一次,要求其中一个四位数是另一个四位数的4倍,求出这两个数。算了一会,没得啥子思路,感觉要试很多次才搞得出来,索性就编个程序算。解决这个问题的主要方向就是排列组合的问题,列出所有的组合,然后将字符数组转换为数字,找出符合关系的数字即为答案。计算出来有两组答案,7452=1863*4,5472=1368*4。根据百度文库里面有一篇文章讲解字符排列组合的算法,如aba abcba cab bca acb bac abc......以此类推。此算法就是利用上一次排列的结果,根据新加入的元素插入的位置来组织数据在内存 阅读全文
posted @ 2013-02-19 21:15 ideawu 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 首先我想谈谈我对C++里面操作的理解,C++里面的操作存在两层含义:1.操作本身所做的事 2.操作跟函数一样存在返回值就拿自加操作++来举例说明:int i(0),j;j=++i;这里前置自加操作本身做的事就是让i加1得到i=1;同时++i的返回值为自加过后的值,所以j=1。类似的程序我们使用后置自加操作的话:int i(0),j;j=i++;本身做的事就是i加1得到i=1;但是后置的返回值就是本身操作之前i的值,也就是未操作的值,所以j=0. 阅读全文
posted @ 2012-11-30 11:20 ideawu 阅读(684) 评论(0) 推荐(0) 编辑
摘要: c对同时包含有符号和无符号数表达式的处理是将有符号参数强制转换为无符号数,并假设两个数都是非负的来执行这个运算。先看一个简单的例子:-1<0U;对int型的-1来说,其二进制编码为32个1,转换为unsigned型则表示十进制4294967295所以最后的结果是0,这就跟直觉不符。有符号数到无符号数的隐式强制类型转换会导致与直觉不相符的行为,这样的错误很难被发现,主要是隐式转换是看不到的。我们再来看看书上给的另外一个例子:float sum_elements(float a[],unsigned length){ int i; float result = 0; for(i=0;i< 阅读全文
posted @ 2012-11-29 10:12 ideawu 阅读(731) 评论(0) 推荐(0) 编辑
摘要: 首先枚举是跟结构体一样,创建了一个新的数据类型。其次“枚举”这个词的意义体现在哪?数学里的枚举法就是把一个问题所有可能的解列举出来。因此我们在定义枚举类型的时候是要将其所有可能的取值列出来,其中这些取值都是以整数的形式表达。例如enum open_mode {input, output, append};这条语句定义了open_mode为枚举类型,注意open_mode是一个类型!!!然后我们根据这个类型定义一个枚举类型的变量:open_mode file_state =open;file_state的取值只能够在input,output,append这三个里面选择。感觉枚举类型就像是下拉菜单 阅读全文
posted @ 2012-11-29 09:37 ideawu 阅读(227) 评论(1) 推荐(0) 编辑
摘要: 在本科微机原理中就早早地接触过补码这个概念,但是对其的理解仅仅停留在原码取反加一的程度,至于为什么提出这个,这个有什么用,怎样得到取反加一这条法则等问题,当时我是稀里糊涂的。现在再回过头来看,要更精确地理解其内涵。首先我们要明确的一点事这些码都是编码,编码就是用二进制数来表示特定的数字和符号,比如asc码就是用八位二进制数来表示英文字母和各种符号,同理我们也可以用二进制数表示数字大小。这里我们先对编码的形式进行统一的假设:编码一共w位,[xw-1,xw-2,...,x0],其中每一位不是0就是1.接下来我们先看无符号数的表示。无符号数的理解起来很简单直观,用一个公式进行总结就很直观,后面的补码 阅读全文
posted @ 2012-11-27 21:41 ideawu 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 书上这一节一开始还是提供了许多有用的概念:1.每个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,叫做自由存储区或者堆(这里堆栈的概念就分开来了,由堆和栈两个组成)。2.在程序中使用new和delete来实现动态分配和释放。必须显示地释放,否则内存会耗尽。这两个概念还算有用,接下来说明了动态数组的定义方法:int *pia = new int [10];new操作的返回值是指向该数组第一个元素的指针,该数组没有名字,因此只能通过指针对其进行操作。看到这里我怎么也不觉得动态体现在哪。直到看到下列程序段才明白:size_t n =get_size();int *p =new int[ 阅读全文
posted @ 2012-11-27 16:05 ideawu 阅读(350) 评论(0) 推荐(0) 编辑