天天看點

matlab回文字元判斷程式,(c語言)回文字元串的判斷,gets和scanf

問題描述:判斷一個字元串是否是回文字元串。程式分析:回文字元串:回文字元串是指一個字元中的最高位與最低位的字元是一樣的,次高位和次低位上的字元是一樣的

問題描述:

判斷一個字元串是否是回文字元串。

程式分析:

回文字元串:

回文字元串是指一個字元中的最高位與最低位的字元是一樣的,次高位和次低位上的字元是一樣的,以此類推。同時,值得注意的是單個字元,或者多個重複的字元也是回文字元串。

(1)定義一個判斷回文數的函數,按照上面給出的回文數的定義,我們進行判斷。

(2)本程式在主函數傳入字元串的過程中發現了用gets函數與用scanf函數的不一樣之處。我想讓這個程式在一個while循環的控制下可以判斷多個字元串再結束。這時候如果用gets不斷的讀取str的内容則會出現錯誤。gets讀取緩沖區中的内容,當我們每次敲下Enter鍵德爾時候,gets就讀取了'\0'。這就是為什麼每次我們看到的除(第一次以外)每次還沒輸入值的時候就判斷是回文字元串。

代碼如下:

#include

#include

#defineLENTH 100

int IS_palindromic_str(char arr[]) //定義判斷回文字元串的函數

{

char *left = arr;

//定義指針left指向數組的第一個元素

char *right;

//定義指針right

while(*arr !='\0') //結束條件是通路到字元串中的'\0'

{

arr++;

}

right = arr - 1;

while(left <= right)

{

if(*left == *right) //判斷是否符合回文字元串的條件

{

left ++;

right--;

}

else

return 0; //注意這時候先傳回0

}

return 1;

}

int main()

{

char str[100] ;

int i = 1;

while(i)

{

printf("Please input a string:\n");

gets(str);

//scanf("%s",str);

if((IS_palindromic_str(str)== 1))

printf("str is a palindromic string\n");

else

printf("str is not a palindromic string\n");

printf("continue:1,break:0\n");

scanf("%d",&i);

fflush(stdin); //如果用gets函數傳入str則要使用一個輸入記憶體清空函數

}

return 0;

}

matlab回文字元判斷程式,(c語言)回文字元串的判斷,gets和scanf