《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常数,百度搜索常数值,查手册,也就成了 ...
随机推荐
- 图解三种APP的区别
- angularjs开发常见问题-1(持续更新中...)
angularJs中学习中- 1.刷新当前页面数据:$state.reload service.create(data).then(function (newItem) { flash.success ...
- linux fork函数浅析
#include <sys/types.h> #include <unistd.h> /* 功能:复制进程 參数:无 返回值: 成功: 父进程:返回子进程id 子进程:返回0 ...
- TCP keepalive
2. TCP keepalive overview In order to understand what TCP keepalive (which we will just call keepa ...
- iOS创建界面方法的讨论
以前在入门的时候,找的入门书籍上编写的 demo 都是基于 Storyboards 拖界面的.后来接触公司项目,发现界面都是用纯代码去写复杂的 autoLayout 的.再然后,领导给我发了个 Mas ...
- Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC
Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC 缺少com/sun/tools/inte ...
- JavaScript入门(2)
一.JS输出内容--(document.write) document.write()可用于直接向HTML输出流写内容,即直接在网页中输出内容. 第一种:输出内容用" "括起来,直 ...
- H TML5 之 (6)下雨效果
在对HTML5进行研究之后,有了一点想法,思考出游戏其实感觉就是四个步骤 1.创建一个你需要的对象,赋予属性(一些影响方法的属性),方法(运动,叫....) 2.实例化这个对象,让它成为一个或者多个个 ...
- sharepoint中的YesNo字段
sharepoint中的YesNo字段实际上是一个Boolean字段,性格有点特别,如果IsShow是一个YesNo字段,使用caml查询的时候值为”1“(Yes)”0“(No),Item[IsSho ...
- 在C#中使用正则表达式自动匹配并获取所需要的数据
转自:http://my.oschina.net/bv10000/blog/111736 正则表达式能根据设置匹配各种数据(比如:e-mail地址,电话号码,身份中号码等等).正则表达式功能强大,使用 ...