1.題目
編寫一個函數reverse_string(char * string)(遞歸實現)
實現:將參數字符串中的字符反向排列。
要求:不能使用C函數庫中的字符串操作函數。
2.程序代碼
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
#include <assert.h>//assert函數是用來判斷括號內是否爲真,若不爲真,
//則後面的程序不執行
int my_strlen(const char *string)//計算字符串長度的函數
{
assert(string);
int count = 0;
while(*(string++))
{
count++;
}
return count;
}
void reverse_string(char *string)
{
assert(string);
int len = my_strlen(string);//求出字符串長度
char temp = 0;
if (len > 0)
{
temp = *string;//把該字符串的第一個字符賦給temp
*string = string[len - 1];//把該字符串的最後一個字符賦給第一個位置
string[len - 1] = '\0';//刪掉最後面的字符
reverse_string(string + 1);
string[len - 1] = temp;//把此時的第一個字符賦給此時的最後一個位置
}
}
int main()
{
char arr[20] = "0";
printf("please input a character string:");
scanf("%s", &arr);
//printf("%d\n", my_strlen(arr));//測試求字符串長度的函數是否正確
reverse_string(arr);
printf("%s\n", arr);
system("pause");
return 0;
}