(c語言)迴文字串的判斷,gets和scanf

來源:互聯網
上載者:User

標籤:c語言   迴文字串   gets和scanf   

問題描述:

判斷一個字串是否是迴文字串。

程式分析:

迴文字串:

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

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

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

代碼如下:

/*******************判斷一個字串是否是迴文字串********************/#include<stdio.h>#include<string.h>#defineLENTH 100int IS_palindromic_str(char arr[]) //定義判斷迴文字串的函數{char *left = arr;         //定義指標left指向數組的第一個元素char *right;  //定義指標rightwhile(*arr !='\0')   //結束條件是訪問到字串中的'\0'{arr++;}right = arr - 1;while(left <= right){if(*left == *right) //判斷是否符合迴文字串的條件{left ++;right--;}elsereturn 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");elseprintf("str is not a palindromic string\n");printf("continue:1,break:0\n");scanf("%d",&i);fflush(stdin); //如果用gets函數傳入str則要使用一個輸入記憶體清空函數  }return 0;}


(c語言)迴文字串的判斷,gets和scanf

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.