[C语言]将字符数组中的每一个元素进行逆转的方法

对于一个字符数组中元素逆转的方法我总结了以下的两个方法

1.即为最常见的一个方法:创建一个新的变量对首元素进行储存,再将其与最后一位的元素进行互换,两边的地址读取再分别加上一和减去一,大致代码如下:

[C语言]将字符数组中的每一个元素进行逆转的方法_第1张图片[C语言]将字符数组中的每一个元素进行逆转的方法_第2张图片

 

 2.第二种方法是利用递归的方法:

对于以下创建的字符数组 arr[]="abcdef",大致方法如下:

大致思路:--

//1.先进行a以及f的交换;
//2.进行逆序--这里我创建了一个函数 reverse_string对剩下的("b c d e")进行互换;
//3.剩下的b c d e再重复上述操作,使得b与e进行交换;c再与d进行交换;

步骤详解:--

//首先将a,f取下来,将f放到a的位置,然后将f原来的位置先放一个'\0',再对bcde进行逆序;
//最后将a补回f的位置;之后按此操作重复进行即可完成任务;

代码大致如下所示:[C语言]将字符数组中的每一个元素进行逆转的方法_第3张图片[C语言]将字符数组中的每一个元素进行逆转的方法_第4张图片

有一个值得注意的点,在代码的62行注意不要忽略了递归的限制条件,即在奇数个字符的情况下,

例如:int arr1[] = "abcdefg",则递归到最后一层会剩下d一个字符,此时strlen(arr)==1;若在双数个字

符的条件下,例如 int arr2[]="abcdef",则递归到最后一层剩下的字符数为0,此时strlen(arr)==0;

因此递归进行的条件是 strlen(arr)>=2.

你可能感兴趣的:(c语言)