ID非公開

2023/12/4 12:57

44回答

プログラミングのC言語です。 どこが間違っているでしょうか。プログラムが動作してくれません。ご回答よろしくお願いします。 # include <stdio.h>

C言語関連67閲覧

ベストアンサー

NEW! この回答はいかがでしたか? リアクションしてみよう

ID非公開

質問者2023/12/4 13:46

なぜかstray/343とかがでて動作できないんですよね

その他の回答(3件)

修正箇所を最小限に抑えるとこうなります。 # include <stdio.h> int isPalindrome(char s[]){ int i,j,p; int count=0; for(i=0;s[i]!='\0';i++); // ←ここ p=i; // ←ここ for(j=0;j<p;j++){ if(s[j]==s[p-j-1]){ count++; } } if(count==p){ return 1; }else{ return 0; } } //メイン関数は書き換えなくてよいです int main(){ char s[100]; scanf("%s",s); printf("%s -> %d\n",s,isPalindrome(s)); return 0; }

回文かどうかってことですよね? 文字数の半分が同じなら、という条件になるので 割る2してあげる必要があるかなと # include <stdio.h> int isPalindrome(char s[]){ int i,j,p; int count=0; for(i=0;s[i]!='\0';i++){ p=i; } for(j=0;j < p / 2;j++){ if(s[j]==s[p-j]){ count++; } } if(count==p / 2){ return 1; }else{ return 0; } } //メイン関数は書き換えなくてよいです int main(){ char s[100]; scanf("%s",s); printf("%s -> %d\n",s,isPalindrome(s)); return 0; }

(ID非公開) 参考: int isPalindrome(char s[]) { int i, j, p; int count=0; for(i=0; s[i]!='\0'; i++) { p=i; } for(j=0; j<(p+1)/2; j++,p--) { if(s[j]!=s[p]) { return 0; } } return 1; }