回文字符串是指正讀和倒讀都一樣的字符串,如"level"、"radar"等。下面是一個簡單的C語言程序,使用動態內存管理實現判斷一個字符串是否為回文字符串的功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isPalindrome(char *str) {
int len = strlen(str);
char *rev = (char *)malloc(len * sizeof(char));
int i, j;
for (i = 0, j = len - 1; i < len; i++, j--) {
rev[i] = str[j];
}
rev[i] = '\0';
int result = strcmp(str, rev);
free(rev);
if (result == 0) {
return 1; // 是回文字符串
} else {
return 0; // 不是回文字符串
}
}
int main() {
char str[100];
printf("輸入一個字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("是回文字符串\n");
} else {
printf("不是回文字符串\n");
}
return 0;
}
在上面的程序中,首先定義了一個isPalindrome
函數,該函數接受一個字符串作為參數,動態分配內存空間用于存儲字符串的逆序。然后通過比較原字符串和逆序字符串的結果,判斷是否為回文字符串。最后在main
函數中調用isPalindrome
函數,輸出判斷結果。
需要注意的是在使用完動態分配的內存后,需要使用free
函數釋放內存,以避免內存泄漏。