实验8-1-6 函数实现字符串逆序 (15分)

本题要求实现一个字符串逆序的简单函数。

函数接口定义:
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

void f( char *p ){
	int len=0;
	while(p[len]){
		len++;
	}
	for(int i=0;i<len/2;i++){//特别要注意这里是i<cnt/2,而不是i<=cnt/2;如果有等号,则在数组元素个数为偶数个的情况下,多交换一次导致错误,//如4个元素,a b c d 就会逆序为  d b c a,因为 在交换b,c之后,最后一轮循环i==4/2==2,此时又将交换好的d c b a 中的  c 和b 交换了一次
		char temp=p[i];
		p[i]=p[len-1-i];
		p[len-1-i]=temp;
	}
}

猜你喜欢

转载自blog.csdn.net/u014390786/article/details/107702996