《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常数,百度搜索常数值,查手册,也就成了 ...
随机推荐
- nginx查看进程连接信息
linux 中查看当前请求连接的进程统计信息 root@VM-24-181-ubuntu:/# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) ...
- Java的redis 操作类-优化通用版本
java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/首先maven引入依赖包 <dependency> ...
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...
- W5500问题集锦(持续更新中)
在"WIZnet杯"以太网技术竞赛中,有非常多參赛者在使用中对W5500有各种各样的疑问,对于这款WIZnet新推出的以太网芯片,使用中大家是不是也一样存在下面问题呢?来看一看: ...
- Cocos2d-x游戏中默认的AndroidManifest.xml的解析
直接上代码说明: <?xml version="1.0" encoding="utf-8"? > <!-- xmlns:android=&qu ...
- [React] React Fundamentals: Build a JSX Live Compiler
we want to have the ability to write JSX and see the output live in the browser. <!doctype html&g ...
- HDU ACM 1392 Surround the Trees->凸包
分析:直接求出凸包.再算边长就可以. 另外仅仅有一个点时为0.00单独处理,两个点直接为距离也单独处理. #include<iostream> #include<cmath> ...
- mybatis08
Mybatis解决jdbc编程的问题 .数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMapConfig.xml中配置数据链接池,使用连接 ...
- 蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)
蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)下载 >>>>>>>>>>>>>>>>>> ...
- PHP如何解决网站大流量与高并发的…
首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...