本题要求实现一个字符串逆序的简单函数。 函数接口定义: 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]; readstr
时间: 2023-04-30 14:06:37 浏览: 161
题目要求实现一个字符串逆序的简单函数,函数接口为void f( char *p ),表示函数f对指向一个字符串的指针进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。
根据题目要求,可以先通过一个自定义函数readstring来读入一个字符串,并存到数组s中。然后再调用函数f,对s指向的字符串进行逆序操作,即可得到最终结果。
具体实现可以采用两个指针i和j,分别指向字符串的首尾字符,然后通过循环将i和j向中间移动,并交换它们所指向的字符。直到i>=j时,整个字符串逆序操作完成。
以下是一份样例代码:
#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;
}
/* 自定义函数,用来读入一个字符串 */
void readstring(char *s)
{
printf("Please input a string (length < %d): ", maxs - 1);
fflush(stdout);
scanf("%s", s);
}
/* 实现字符串逆序操作的函数 */
void f(char *p)
{
char *i = p; //指向首字符
char *j = p + strlen(p) - 1; //指向尾字符
while (i < j)
{
char tmp = *i;
*i = *j;
*j = tmp;
i++;
j--;
}
}
运行样例:
Please input a string (length < 19): hello world
dlrow olleh
注:以上代码仅供参考,可能存在一些不严谨或不够健壮的地方,使用时应自行进一步完善和调试。
阅读全文