- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 位运算符(续) 例:编写一个函数getbits(unsigned x, unsigned p, unsigned n),返回一个整型变量x从位置p开始的n位 unsigned getbits(unsigned x, unsigned p, unsigned n) { return ( ( x (p + 1 – n)) ~(~0 n)); } p n p+1-n x(p+1–n) 1 1 ~0 0 0 0 ~0n 0 1 1 0 n 0 0 1 0 ~(~0n) 0 1 * 位运算符(续) 在按位运算中, 按位或(|)通常用于给字中某些位赋值。 按位与()通常用于取出字中某些位的值。 按位异或(^)通常用于图形/图像运算中。 * 结构成员的引用(续) 指针方式: struct complex *addComplex(stuct complex *p1, struct complex *p2) { struct complex *pt; pt = (struct complex)malloc(sizeof(struct complex)); pt-real = p1-real + p2-real; pt-imag = p1-imag + p2-imag; return pt; } int main() { struct complex c1, c2, *p; scanf(“%f %f %f %f”, c1.real, c1.imag,c2.real, c2.imag); p = addComplex(c1, c2); printf(“(%.2f, %.2f) + (%.2f, %.2f) = (%.2f, %.2f)\n”, c1.real, c1.imag, c2.real, c2.imag, p-real, p-imag); return 0; } 考虑:用下面语句替代malloc函数初始化pt,程序运行是否有问题? complex tmp; pt = tmp; * 结构数组 当数组中的每一个元素都是同一结构类型的变量时,则称该数组为结构数组。例如: struct person table[100]; * 问题5.1:问题分析 定义一个结构说明用以表示关键字与其出现次数: struct Key { char *keyword; int count; }; 关键字表的组织:使用一个有序的结构数组来存放关键字表及关键字出现次数: struct Key Keytab[ ] = { “auto”, 0, “break”,0, “case”, 0, … “while”, 0 }; 将关键字有序存放能提高关键字的查找效率。 * 问题5.1:算法设计 主要算法: While ( 仍有新单词读入) If(在关键字表中查找并找到输入的单词) 相应关键字次数加1; 输出关键字及出现次数; 设函数 char getWord(char word,int lim) 从标准输入中读放一个长度不超过lim-1的单词,并返回单词类型。 设函数 struct Key *binary(char *word, struct Key tab[ ], int n) 在关键字表tab中查找单词word是否存在。如果找到,则返回其出现位置。N为关键字表的长度(关键字个数)。 设函数 void printKey(struct Key tab[ ], int n) 输出关键字及出现次数。 * 折半查找算法(binary search) 在有序数据集中查找指定数据项最常用及最快的算法是折半查找算法。 假设数据集按由小到大排列,折半查找算法的核心思想是: 将要查找的有序数据集的中间元素与指定数据项相比较; 如果指定数据项小于该中间元素,则将数据集的前半部分指定为要查找的数据集,然后转步骤1; 如果指定数据项大于该中间元素,则将数据集的后半部分指定为要查找的数据集,然后转步骤1; 如果指定数据项等于中间元素,则查找成功结束。 如果数据集中没有元素再可进行查找,则查找失败。 下面以在一个整型数据集中查找给定整数为例来说明折半查找。 * 折半查找算法(续) 5 7 16 24 25 50 45 50 62 65 1 0 3 2 4 6 5 8 7 9 low high 查找范围 例:在下面有序数据集中查找数据项62 item = 62 low = 0 high = 9 mid = (low+high)/2=4 item data[mid],即6225 5 7 16 24 25 50 45 50 62 65 1 0
原创力文档


文档评论(0)