本题要求实现一个字符串逆序的简单函数。
函数接口定义:
void f( char *p );
函数 f 对 p 指向的字符串进行逆序操作。要求函数 f 中不能定义任何数组,不能调用任何字符串处理函数。
裁判测试程序样例:
#include <stdio.h>
#define MAXS 20
void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */
int main()
{
char s[MAXS];
ReadString(s);
f(s);
printf("%s\n", s);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
Hello World!
输出样例:
!dlroW olleH
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/13/exam/problems/541
提交:
题解:
/*
* 实现字符串逆序
*/
void f(char *p) {
int len = 0;
// 获得字符串长度
for (int i = 0; p[i] != '\0'; i++) {
len++;
}
// 依次交换字符串的首尾两个对应字符
for (int head = 0, tail = len - 1; head < len / 2; head++, tail--) {
char tmp = p[head];
p[head] = p[tail];
p[tail] = tmp;
}
}