![](https://img-blog.csdnimg.cn/20200721235845610.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
c和指针_编程练习
不定期更新中...
时间管理大师
这个作者很懒,什么都没留下…
展开
-
C和指针_编程练习_第4章_第5题
/* 编写一个函数, 从标准输入一行一行地读取文本, 并完成如下任务: 如果文件中有两行或者多行相邻的文本内容相同, 那么就打印出其中一行, 其余的行不打印.你可以假设文件中的文本行在长度上不超过128个字符(127个字符加上用于终结文本行的环行符). 考虑如下输入文件: This is the frist line. Another line. And another. And another.原创 2020-07-21 23:23:13 · 202 阅读 · 1 评论 -
C和指针_编程练习_第5章_第4题
/* 编写一组函数, 实现位数组. 函数的原型如下: void set_bit( char bit_array[], unsigned int bit_number ); void clear_bit( char bit_array[], unsigned int bit_number ); void assign_bit( char bit_array[], unsigned int bit_number, int value );原创 2020-07-21 23:13:11 · 148 阅读 · 1 评论 -
C和指针_编程练习_第5章_第5题
/* 编写一个函数, 把一个特定的值存储到一个整数中在指定的几个位. 它的原型如下: int store_bit_field( int original_value, int value_to_store, unsigned int starting_bit, unsigned int ending_bit ); 假定整数中的位是从右向左进行编号. 因此, 起始位的位置不会小于结束位的位置. 为了更清楚地说明, 函数应该返回下列值:原创 2020-07-21 22:54:49 · 154 阅读 · 1 评论 -
C和指针_编程练习_第6章_第4题
/* 质数就是只能被1和自己整除的整数. Eratosthenes筛选法是一种计算质数的有效方法. 这个算法的第一步就是写下所有从2至某个上限之间的所有整数. 在算法的剩余部分, 你遍历整个列表并剔除所有不是质数的整数. 后面的步骤是这样的: 找到表中第一个不被剔除的整数(也就是2), 然后将列表后面所有逢双的数都剔除, 因为它们都可以被2整除, 因此不是质数. 接着, 再回到列表的头部重新开始, 此时列表中尚未被剔除的第一个原创 2020-07-21 22:50:57 · 134 阅读 · 1 评论 -
C和指针_编程练习_第6章_第5题
/* 修改前一题的Eratosthenes程序, 使用位数组而不是字符数组, 这里要用到第5章编程练习中所开发的位数组函数. 这个修改使程序的空间效率进一步提高, 不过代价是时间效率的降低. 在你的系统中, 使用这个方法, 你所能找到的最大质数是多少?*/#define MAX_NUMBER 1000 //检测范围: [0, MAX_NUMBER]#define PRIME_PER_LINE 8 //每行显示质数个数#include <stdio原创 2020-07-21 22:46:38 · 150 阅读 · 1 评论 -
C和指针_编程练习_第7章_第5题
/* 编写一个简化的printf函数, 它能够处理%d, %f, %s, 和%c 格式码. 根据ANSI标准的原则, 其他格式码的行为是未定义的. 你可以假定已经存在函数print_integer 和print_float, 用于打印这些类型的值. 对于另外两种类型的值, 使用putchar来打印.*/#include <stdio.h>#include <stdarg.h>void MyPrintf( char *str,原创 2020-07-21 22:32:29 · 119 阅读 · 1 评论 -
C和指针_编程练习_第7章_第6题
/* 编写函数: void written_amount( unsigned int amount, char *buffer ); 它把amount表示的值转换为单词形式, 并存储于buffer中. 这个函数可以在一个打印支票的程序中使用. 例如: 如果amount的值是16 312, 那么buffer中存储的字符串应该是: SIXTEEN THOUSAND THREE HUNDRED TWELVE 调用程原创 2020-07-21 22:25:22 · 207 阅读 · 1 评论 -
C和指针_编程练习_第8章_第6题
/* 如你所知, C编译器为数组分配下标时总是从0 开始. 而且当程序使用下标访问数组元素时, 它并不检查下标的有效性. 在这个项目中, 你将要编写一个函数, 允许用户访问"伪数组", 它的下标范围可以任意指定, 并伴有完整的错误检查. 下面是你将要编写的这个函数的原型: int array_offset( int arrayinfo[], ... ); 这个函数接受一些用于描述伪数组的信息以及一组下标值. 然后它使用这些信息把下标值翻译为一个整数, 用于表示原创 2020-07-21 22:04:18 · 208 阅读 · 1 评论 -
C和指针_编程练习_第8章_第7题
/* 修改问题6 的array_offset函数, 使它访问以列为主序的伪数组, 也就是最左边的下标率先变化. 这个新函数array_offset2在其他方面与原先的那个函数一样. 例如: 假定arrayinfo数组包含了值3, 4, 6, 1, 5, -3, 3. 这些值提示我们所处理的是三维伪数组. 第一个下标范围从4 到6; 第二个下标范围从1 到5; 第三个下标范围从-3 到 3. 在这个例子中, array_offs原创 2020-07-21 22:09:33 · 163 阅读 · 1 评论 -
C和指针_编程练习_第8章_第8题
/* 皇后是国际象棋中威力最大的棋子. 在大小为 8 * 8 的棋盘上, 皇后可以攻击其上, 下, 左, 右四个方向以及左上, 右上, 左下, 右下四个方向上的所有棋子. 我们是否能把 8 个皇后放在棋盘上, 它们中的任何一个都无法攻击其余的皇后? 这个问题被成为八皇后问题. 你的任务是编写一个程序, 找到八皇后问题的所有答案, 看一看一共有多少种答案. 提示: 如果你采用一种叫做"回溯法(backtracking)"的技巧, 就很容易编写出这个程序.原创 2020-07-21 21:58:45 · 161 阅读 · 1 评论 -
C和指针_编程练习_第9章_第10题
/* 编写函数: int palindrome( char *string ); 如果参数字符串是个回文, 函数就返回真, 否则就返回假. 回文就是指一个字符串从左至右和从右至左读都是一样的. 函数应该忽略所有的非字母字符, 而且爱进行字符比较时不用区分大小写. 提示: 空白字符, 标点符号和大小写应该被忽略. 当Adam(亚当)第一次遇见(Eve)夏娃时他可能会说一句:"Madam, I'm Adam!"就是原创 2020-07-21 21:45:36 · 145 阅读 · 1 评论 -
C和指针_编程练习_第9章_第11题
/* 编写一个程序, 对标准输入进行扫描, 并对单词"the" 出现的次数进行计算. 进行比较时应区分大小写, 所以"THE", 和"The" 并不计算在内. 你可以认为各单词由一个或多个空格字符分割, 而且输入的行在长度上不会超过100 个字符. 计算结果应该写在标准输出上.*/#define TURE 1#define FALSE 0#define MAX_SIZE 102 //buf大小#define TAG_WORD "the" /原创 2020-07-21 21:36:21 · 237 阅读 · 1 评论 -
C和指针_编程练习_第9章_第12题
/* 有一种技巧可以对数据进行加密, 并使用一个单词作为它的密钥. 下面是它的工作原理: 首先, 选择一个单词作为密钥. 如:TRAILBLAZERS. 如果单词中包含重复的字母, 只保留第一个, 其余几个丢弃. 现在, 修改过的那个单词列于字母表的下面, 如下所示: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z T R A I L B Z E S原创 2020-07-21 21:01:56 · 195 阅读 · 1 评论 -
C和指针_编程练习_第9章_第13题
/* 编写函数: void encrypt( char *data, char const *key ); 它使用前题prepear_key 函数所产生的密钥对data 中的字符进行加密. data 中的非字母不做修改, 但字母字符则使用密钥所提供的编码过的字符一一取代源字符. 字母字符的大小写状态应该保留.*//* * 遍历data, 直到遇到NUL字符 * 如果data 中某个字符是大写字母, 先在密钥中寻找大写字母的小写形式原创 2020-07-25 20:56:57 · 133 阅读 · 1 评论 -
C和指针_编程练习_第9章_第14题
/* 这个问题的最后部分就是编写函数: void decrypt( char *data, char const *key ); 它接受一个加密过的字符串为参数, 它的任务是重现原来的信息. 除了它是用于揭秘之外, 它的工作原理应该与encrypt 相同*/void decrypt( char *data, char const *key ){ /* offset: data 中某个字母在key 中的偏移量( 即下标 ) */原创 2020-07-25 21:46:50 · 170 阅读 · 1 评论 -
C和指针_编程练习_第9章_第15题
/* 标准I/O库并没有提供一种机制, 在打印大整数时用逗号进行分割. 在这个练习中, 你需要编写一个程序, 为美元数额打印提供这种功能. 函数把一个数字字符串(代表以美分为单位的金额) 转换成美元形式, 如下表所示: 输入: 输出: 输入: 输出: null $0.00 12345 $123原创 2020-07-25 23:18:43 · 335 阅读 · 1 评论 -
C和指针_编程练习_第9章_第16题
/* 这个程序与前面一个练习程序相似, 但它更为通用. 它按照一个指定的格式字符串对一个数字字符串进行格式化, 类似于许多BASIC 编译器所提供的"print using" 语句. 函数的原型应该如下: int format( char *format_str, char const *digit_str ); digit_str 中的数字根据一开始在format_str 中找到的字符从右到左逐个复制到format_str原创 2020-07-26 06:10:37 · 181 阅读 · 1 评论