《C和指针》章节后编程练习解答参考——第5章
5.1
题目:
略
解答代码:
- #include <stdio.h>
- int main(void)
- {
- char ch;
- while (((ch = getchar()) != EOF) && (ch != 'z'))
- {
- if (ch >= 'A' && ch <= 'Z')
- {
- ch += 'a' - 'A';
- }
- putchar(ch);
- }
- getchar();
- return ;
- }
5.2
题目:
略
解答代码:
- #include <stdio.h>
- int main(void)
- {
- char ch;
- while (((ch = getchar()) != EOF) && (ch != 'z')) //输入z时退出
- {
- if (((ch >= 'A') && (ch <= 'Z')) || ((ch >= 'a') && (ch <= 'z'))) //加密
- {
- if ((ch <= 'M') || (ch <= 'm'))
- {
- ch += 'n' - 'a';
- }
- else if ((ch >= 'N') || (ch >= 'n'))
- {
- ch -= 'n' - 'a';
- }
- }
- putchar(ch);
- }
- getchar();
- return ;
- }
5.3
题目:
编写函数,函数返回值把参数的二进制位模式从左到右变换一下后的值。
函数原型:
unsigned int reverse_bits(unsigned int value);
解答代码:
- #include <stdio.h>
- #define NUM 0xA5
- unsigned int reverse_bits(unsigned int value)
- {
- unsigned int i;
- unsigned int valuebak = ;
- char list[] = { };
- for (i=; i!=; i<<=)
- {
- valuebak <<= ;
- valuebak |= (value & 0x01);
- value >>= ;
- }
- return valuebak;
- }
- int main(void)
- {
- unsigned int rev;
- rev = reverse_bits(NUM);
- printf("0x%X\n", NUM);
- printf("0x%X\t\t%d\n", rev, rev);
- getchar();
- return ;
- }
5.4
5.5
题目:
编写函数,把一个给定的值存储到一个整数中指定的几个位。假定整数中的位是从右向左进行编号,起始位的位置不会小于结束位的位置。
函数原型:
int store_bit_field(int original_value, int value_to_store, unsigned starting_bit, unsigned ending_bit);
提示:
创建一个掩码
用掩码的反码对原值AND操作
将新值左移,使与待存储值对齐
把移位后的值与掩码进行AND操作
把结果值与原值进行位OR操作
解答代码:
- #include <stdio.h>
- #define ORI_VALUE 0xFFFF
- #define VALUE_STORE 0x123
- #define START_BIT 13
- #define END_BIT 9
- int store_bit_field(int original_value, int value_to_store,
- unsigned starting_bit, unsigned ending_bit)
- {
- unsigned int int_bit = sizeof(unsigned) * ;
- if ((starting_bit <= int_bit) && (ending_bit <= int_bit) && (ending_bit < starting_bit))
- {
- unsigned int maskt = ~;
- unsigned int mask = ;
- unsigned int i;
- for (i=starting_bit; i>=ending_bit; i--) //生成掩码
- {
- mask |= (<<i);
- }
- original_value &= ~mask;
- value_to_store <<= ending_bit;
- value_to_store &= mask; //待存储数据与掩码匹配
- original_value |= value_to_store;
- }
- else
- printf("Data format error!\n");
- return original_value;
- }
- int main (void)
- {
- int value;
- value = store_bit_field(ORI_VALUE, VALUE_STORE, START_BIT, END_BIT);
- printf("0x%X\n", value);
- getchar();
- return ;
- }
《C和指针》章节后编程练习解答参考——第5章的更多相关文章
- 《C和指针》章节后编程练习解答参考——第10章
10.1 #include <stdio.h> typedef struct { unsigned ]; unsigned ]; unsigned ]; }TelphoneNumber; ...
- 《C和指针》章节后编程练习解答参考——第9章
9.1 #include <stdio.h> #include <ctype.h> #include <string.h> #define N 100 int ma ...
- 《C和指针》章节后编程练习解答参考——第8章
8.1 #include <stdio.h> int main (void) { int a, b, c, d; // 不使用嵌套花括号初始化 unsigned ][][][] = { , ...
- 《C和指针》章节后编程练习解答参考——6.2
<C和指针>——6.2 题目: 编写一个函数,删除源字符串中含有的子字符串部分. 函数原型: int del_substr(char *str, char const *substr); ...
- 《C和指针》章节后编程练习解答参考——6.3
<C和指针>——6.3 题目: 编写一个函数,把参数字符串中的字符反向排列. 函数原型: void reverse_string(char *string); 要求: 使用指针而不是数组下 ...
- 《C和指针》章节后编程练习解答参考——6.6
<C和指针>——6.6 题目: 在指定的下限.上限之间使用数组方法查找质数,并将质数提取出来. 要求: 略 解答代码: #include <stdio.h> #define U ...
- 《C和指针》章节后编程练习解答参考——6.4
<C和指针>——6.4 题目: 质数是只能被1和本身整除的整数. 在1到1000之间的质数,在数组中剔除不是质数的数. 解答代码: #include <stdio.h> #de ...
- 《C和指针》章节后编程练习解答参考——6.1
<C和指针>——6.1 6.1 题目: 编写一个函数,在一个字符串中进行搜索,查找另一子字符串中出现的字符. 函数原型如下: char *find_char(char const *sou ...
- DSAPI多功能组件编程应用-参考-Win32API常数
DSAPI多功能组件编程应用-参考-Win32API常数 在编程过程中,常常需要使用Win32API来实现一些特定功能,而Win32API又往往需要使用一些API常数,百度搜索常数值,查手册,也就成了 ...
随机推荐
- js 日期插件 datepicker
点击图片出现 时间 ,增加一个点击事件 <label for="" class="width80">创建日:</label> < ...
- Java NIO使用及原理分析(二)
在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如 ...
- HTML5 简单画图,切片,变形
本人是在校学生,由于这段时间不知道怎么回事,心情比较无聊没有事干,所以利用这段时间学一下HTML5,发博客的目的是为了以后可以查询,也希望各位大神能够指导像我们这样的菜鸟,告别菜鸟的时段 我学东西时候 ...
- chrome下老是弹出网页显示 true
事实上这个问题是chrome下安装了一些插件的原因,一般来说是安装迅雷插件会出现这个问题,删除迅雷插件就好了.
- [ES7] Exploring ES2016 Decorators
Original artial --> link How descorator looks like: @mydecorator function myFun(){ ... } Descorat ...
- Android开发之TextView的下划线添加
如何给TextView添加下划线呢,最近项目中需要这个,于是就用代码添加了下划线功能.主要就是用Paint的setFlags方法来实现,具体如下: ((TextView)mScrollView.fin ...
- .net缓存应用与分析
在 ASP.NET 提供的许多特性中,相比 ASP.NET 的所有其他特性,缓存对应用程序的性能具有最大的潜在影响,利用缓存和其他机制,ASP.NET 开发人员可以接受使用开销很大的控件(例如,Dat ...
- CentOS隐藏nginx版本号
在/usr/local/nginx/conf/目录中,修改nginx.conf文件 在http { }段中加入 http { server_tokens off; }
- HDU 5637 Transform
题意: 有两种变换: 1. 改变此数二进制的某一位(1变成0 或者 0变成1) 2. 让它与给出的n个数当中的任意一个做异或运算 给你两个数s, t,求从s到t最少要经过几步变换,一共m组查询思路: ...
- php并发处理
最近某个项目用php生成文件,但是由于文件量太大,单个进程生成需要很长的时间,所以想并发进行处理. 网上查找了下相关的资料,php本身是没有多线程的概念的,那就只能用多进程了,再找资料却是 ...