ID非公開

2022/7/5 22:35

22回答

C言語で回文を判定するプログラムが分かりません。 配列を使うのは分かりますが、どう書けば良いでしょうか?問題の概要は画像を参照お願いします。

画像
補足

やはり画質悪いので書いときます。 :20 文字以内で文字列を キーボードで入力し、 回文を判定するプログラムを作成せよ • 回文とは キーボードより文字列を入力します 半角英数字のみを入力するものとする 入力は 20 文字以内で す 例外は考慮しなくて良 い 用意する変数(宣言する変 数は必要があれば任意に増 減させてよい) char inputText[ ]: 文字列を格納する変数 int isPalindrome:回文かどうか palindrome : 回 文 出力する文字↓ input (20文字以下): : 入力する前に表示する 回文の場合: 回文OK 回文の場合: 回文NG それぞれ記号は半角文字です。 ーーーーー期待される出力例ーーーーーー input (20文字以下): godog 回文OK input (20文字以下): programming 回文NG

ベストアンサー

0

すいません、isPalindrome を使っていなかったので、使うように修正しました。 -- #include <stdio.h> #include <string.h> int main(void) {     (省略)     int isPalindrome = 1;     while(p1 < p2) {         if(*p1 != *p2) {             isPalindrome = 0;             break;         }         p1++; p2--;     }     if(isPalindrome)         printf("回文OK");     else         printf("回文NG");     return 0; }

その他の回答(1件)

0

#include <stdio.h> int isPalindrome(char[]); int main(void) {     char inputText[21];     printf("input (20文字以下): ");     fgets(inputText, 20, stdin);     if (isPalindrome(inputText)) {         printf("回文OK\n");     } else {         printf("回文NG\n");     }     return 0; } int isPalindrome(char a[]) {     int s, i;     for (s = 0; a[s] != '\0'; s++);     s--;     for (i = 0; i < s / 2; i++) {         if (a[i] != a[s - i - 1]) {             return 0;         }     }     return 1; }