《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常数,百度搜索常数值,查手册,也就成了 ...
随机推荐
- 微信开发第4章 通过accesstoken获取用户标签管理
通过access_token获取用户标签管理: 1.获取标签列表 调用接口为: http请求方式:GET(请使用https协议) https://api.weixin.qq.com/cgi-bin/t ...
- C#通过FTP账号上传、修改、删除文件 FTPClient
下面类文件中,主要做的工作是:从ftp服务器上下载文件把本地文件替换.添加.或删除功能,在替换本地文件时会先备份一下本地的文件,若整个操作都完成了就会发出commit命令,表示全部替换成功.若中间操作 ...
- PHPExcel的读取excel的操作
首先导入类库: require_once 'PHPExcel.php'; require_once 'PHPExcel\IOFactory.php'; require_once 'PHPExcel\R ...
- oracle6
转换函数 介绍 转换函数用于将数据类型从一种转为另外一种.在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型 比如: crea ...
- APUE 读书笔记 -----孤儿进程与僵尸进程[总结] +数据结构+C
http://www.cnblogs.com/Anker/p/3271773.html
- Using JAAS Authentication in Java Clients---weblogic document
The following topics are covered in this section: JAAS and WebLogic Server JAAS Authentication Devel ...
- Android开发之UI更新交互机制与实例解析
android开发过程中,经常需要更新UI的状态和文案等.这是就需要对UI进行 更新.在android中更新UI一般有三种方法,handler机制.RunOnUiThread方法以及AsyncTask ...
- Java中的I/O流
import java.io.*//生成代表输入流的对象fis=new FileInputStream("e:/src/from.txt") //生成代表输出流的对象 fos=ne ...
- chrome跨域配置
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --use ...
- python基础知识五
数据结构基本上就是---它们可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python中有三种内建的数据结构---列表.元祖和字典. 我们将会学习如何使用它们,以及它们如何使编程变得 ...