看板 cksh75th09 關於我們 聯絡資訊
※ 引述《berserk (鬍子)》之銘言: : 老師要我們寫一個可以判定是否為Palindrome的程式 : 我現在卡在兩個地方 : 一.要如何去除掉輸入句中非字母的字元 : 二.要如何讓原來去除非字母字元的句子跟倒轉過後的句子比對 程式如下...可以跑看看.. #include <iostream.h> #include <string.h> #include <stdlib.h> void main(){ char strword[]="A man,a plan,a canal;panama!"; //輸入的字或句子擺這裡 char *strnew= (char*) malloc (sizeof(strword)); //去掉非字母字元的句子擺這裡 int letters=0; //存句子中字母字元的總數 strlwr(strword); //把句子都改為小寫字母 for(int i=0;i<sizeof(strword);i++){ //這一段為除掉句中非字母字元的方 if(strword[i]<=122 && strword[i]>=97){ //法,原理為子母a-z的ASCII碼為 strnew[letters]=strword[i]; //97-122,只要檢查句中每個字元 letters++; //其ASCII碼是否在上述之範圍即可 } //得知是否為字母,如為字母則存放 } // 在strnew陣列中... for(int j=0;j<letters;j++){ //此段為比對是否為Palindrome if(j>letters-1-j){ //的方法,原理為前後字母兩兩比 cout<<"\nThis is a Palindrome.....\n"; //對..... return; } if(strnew[j]!=strnew[letters-1-j]){ cout<<"\nThis is not a Palindrome.....\n"; return; } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.216.84 ※ 編輯: mmx 來自: 140.115.216.84 (06/07 02:16)