摘要:
问题描述:输入一个1-99999之间的任意整数,要求转换为字符后输出;算法分析:先分别取万,千,百,十,个位,再转换成字符存储,这样就完成了一半。后一半是要分析些所在位是0的情况,分别是万,千,百,十上是零的情况,比如:万,千,百,十都是0,只输出个位,其它位类推。代码如下:View Code #include <stdio.h>int main(void){ long int n; printf("Enter a number in 1 - 99999: "); scanf("%ld", &n); char ch0, ch1, ch 阅读全文
摘要:
问题描述:输入一行字符,统计其中的英文字母,空格,数字和其他字符的个数。算法分析:用函数判定字符类型,再使用变量累加。但这里输入不要用scanf()函数,因为它遇到空格就终止读入字符,改用getchar()函数。代码如下:View Code 1 #include <stdio.h> 2 #include <ctype.h> 3 4 int main(void) 5 { 6 char c; 7 int character = 0; // 字母 8 int num = 0; // 数字 9 int space = 0; // 空格10 ... 阅读全文
摘要:
问题描述:设有一阶梯,若每步跨2阶,最后余1阶;若每步跨3阶,最后余2阶;若每步跨5阶,最后余4阶;若每步跨6阶,最后余5阶;当第步跨7阶时,正好达到阶梯顶。问共有多少级阶梯?算法分析:设阶梯数为n,这个n肯定是个奇数,这个奇数满足:n%2==1, n%3==2, n%5==4, n%6==5, n%7==0,所以:代码如下:View Code 1 #include <stdio.h> 2 3 int main(void) 4 { 5 int n = 3; 6 7 while(n) 8 { 9 if((n%2==1) && (n%3==2) && . 阅读全文
摘要:
问题描述:欧拉公式: a(n) = n^2 - n + 41,求n在 -39 ~ 40范围内的素数。算法分析:穷举法,穷举出-39~40范围内的a(n),再判断a(n)是否为素数;代码如下:View Code 1 #include <stdio.h> 2 #include <math.h> 3 4 int main(void) 5 { 6 int i, k; 7 for(i = -39; i <= 40; i++) 8 { 9 int p = i * i - i + 41;10 int flag = 0; // 标记11 12 ... 阅读全文
摘要:
问题描述:有36块砖,由36人搬:一个男人可以搬4块,一个女人可以搬3块,两个小孩抬一块。要求一次全部搬完。问需要多少个男人、女人和小孩?算法分析:穷举法,如果由男人来搬需要9人,女人来搬需要12人,小孩来搬需要72人,从前面三组数中去穷举,再满足以下两个条件:1)4*men + 3*women * children/2 == 36;2) men + women + children == 36;代码如下:#include<stdio.h>#define N 36int main(void){ int men = N/4; int women = N/3; int child... 阅读全文
摘要:
1. tuple(元组)1)定义tuple与定义list方式相同,但元素用圆括号括起来;2)tuple的元素与list一样按定义的次序进行排序,索引值也是从0开始;3)负数索引与list一样从tuple尾部开始计数;4)与list一样,也可使用切片;当分割一个tuple时,会得到一个新tuple;5)不能向tuple增加元素,因为没有append或extend方法;6)不能从tuple删除元素,同理,没有remove或pop方法;7)可以使用index 来查找元素,也可使用in 来查看元素是否存在于tuple中;8)tuple的好处是比list操作速度快,如果定义了一个值的常量集,唯一要做的是 阅读全文
摘要:
字典: {key1: value1, key2: value2, ...}1. Dictionary 没有元素顺序的概念。说元素“顺序乱了”是不正确的,它们只是序偶的简单排列。这是一个重要的我,它会在你想要以一种特定的,可重现的顺序(像以key的字母表顺序)存取dictionary元素的时候骚扰你。有一些实现这些要求的方法,它们只是没有加到dictionary中去。dictionary 的key 区分大小写。2. 从dictionary 中删除元素: 1)del 字典名[键名] :从字典中删除指定的key; 2)字典名.clear () :删除字典中所有的元素;列表: [element1, e 阅读全文
摘要:
C语言没有严格地禁止修改字符串字面值,但不应该这么做:char *p = “house”; // 初始化一个字符指针char *p = ‘m’; 上面的语句具有不可移植性,原因之一是,编译器将字符串字面值视为常量,可能会将字符串存储在只读存储器,所以试图对此字符串执行写入操作将会产生错误。另一个原因是,如果程序中有两个或更多个完全相同的字符串字面值,编译器可能会将它们存储在相同的位置,因此修改一个字符串会影响到其他字符串。上面的问题的一个解决策略是:char s[] = “house”; // 初始化为一个字符串数组s[0] = ‘m’; // 修改数组内容,现在数组内容是 ”mouse” 阅读全文
摘要:
第1章 引论 在看第二章算法分析之前,先来看几个数学公式: 1. 复习数学公式 1.) 指数: 2.) 对数: 3.) 级数: 那为什么需要指出上面这些数学公式呢?因为在分析算法复杂度如:T(n) = O(f(N)) 所对应的关系可能是上面这些数学公式所对应的关系,即:常量阶,线性阶,平方阶,对数阶或指数阶等。 2. 证明方法 证明数据结构分析中的结论两个最常用的方法是归纳法和反证法(证明一... 阅读全文
摘要:
1. CPU中的运算器做信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各器件,在它们之间进行数据的传送。对于汇编程序员来说,CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件,并通过改变各种寄存器的内容来实现对CPU的控制。 8086CPU(16位CPU)有14个寄存器,分别是:AX,BX,CD,DX,SI,DI,SP,BP,IP,CS,SS,DS,E... 阅读全文