《C和指针》章节后编程练习解答参考——6.3
《C和指针》——6.3
题目:
编写一个函数,把参数字符串中的字符反向排列。
函数原型:
void reverse_string(char *string);
要求:
使用指针而不是数组下标
不要使用任何C函数库中用于操纵字符串的函数
不要声明一个局部数组来临时存储参数字符串
解答代码:
#include <stdio.h> void reverse_string(char *string)
{
int i, n=; while (*(string+n) != '\0') //计算字符串中字符的个数
n++;
n--; //字符个数n作为索引号时要减1,即从0到n-1
if (n > ) //字符个数小于等于1时没有必要反转
{
for (i=; i<=(n/); i++)
{
if (i != (n-i))
{
char p; //字符内容交换
p = *(string+i);
*(string+i) = *(string+n-i);
*(string+n-i) = p;
}
}
}
} int main()
{
char source[] = "ABCDEFGH"; printf("Before reverse:\n%s\n", source);
reverse_string(source);
printf("After reverse:\n%s\n", source); getchar();
return ;
}
注:
1、先计算字符串中非'\0'字符的个数
2、首位字符轮流交换
《C和指针》章节后编程练习解答参考——6.3的更多相关文章
- 《C和指针》章节后编程练习解答参考——6.2
<C和指针>——6.2 题目: 编写一个函数,删除源字符串中含有的子字符串部分. 函数原型: int del_substr(char *str, char const *substr); ...
- 《C和指针》章节后编程练习解答参考——第5章
5.1 题目: 略 解答代码: #include <stdio.h> int main(void) { char ch; while (((ch = getchar()) != EOF) ...
- 《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 ...
- 《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 ][][][] = { , ...
- DSAPI多功能组件编程应用-参考-Win32API常数
DSAPI多功能组件编程应用-参考-Win32API常数 在编程过程中,常常需要使用Win32API来实现一些特定功能,而Win32API又往往需要使用一些API常数,百度搜索常数值,查手册,也就成了 ...
随机推荐
- C++编译器函数模版机制剖析 - 函数模版的本质
思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...
- ThinkPHP函数详解:M方法
M方法用于实例化一个基础模型类,和D方法的区别在于:1.不需要自定义模型类,减少IO加载,性能较好:2.实例化后只能调用基础模型类(默认是Model类)中的方法:3.可以在实例化的时候指定表前缀.数据 ...
- Recommended add-ons/plugins for Microsoft Visual Studio
http://stackoverflow.com/questions/2767/recommended-add-ons-plugins-for-microsoft-visual-studio NUGe ...
- linux系统磁盘分区之parted
对于linux的分区通常可以使用fdisk命令工具和parted工具 对于分区表通常有MBR分区表和GPT分区表 对于磁盘大小小于2T的磁盘,我们可以使用fdisk和parted命令工具进行分区 对于 ...
- 神奇的 BlocksKit(1):源码分析(下)
私有类 _BKObserver _BKObserver 是用来观测属性的对象,它在接口中定义了 4 个属性: @property (nonatomic,readonly,unsafe_unretain ...
- Android环境变量笔记
Logcat打印日志 使用方法Log.i(tag, msg);参数tag: 标签.用于识别Logcat的分类(一般可以使用类名作为标签)数msg: 打印的内容 在eclipse中打开logcat标签W ...
- 构建本地yum源之rpmbuild
组内准备搭建内部yum源,在这之前需要规范软件的安装目录,并把现有的应用打包. 目前接触两种rpm打包工具,rpmbuild和fpm. - rpmbuild rpmbuild关键是spec文件编写. ...
- JVM笔记7:类加载器
虚拟机设计团队把类加载阶段中的"通过一个类的全限定名来获取描述此类的二进制字节流"这个动作放到Java虚拟机外部实现,以便让应用程序自己决定如何去获取所需要的类,实现这个动作的代码 ...
- Asp.Net 如何获取所有控件&如何获取指定类型的所有控件
一. Asp.Net Page页面中访问所有控件的属性为: Page.Controls 控件的结构是树结构. 二.获取指定类型所有控件实例: 1.递归方法定义: private void GetCon ...
- 在VM虚拟机中安装centos7