0

単語が回文かどうかを判断できるプログラムを作成する必要がありました。それに対する私の解決策はこれでした:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define maxLen 100

int main() {
    char string[maxLen];
    char stringCopy[maxLen];

    printf("Please enter a string between 2 and 100 characters\n");
    gets(string);
    strcpy(stringCopy,string);
    strrev(stringCopy);

    if(strcmp(string,stringCopy) == 0){
        printf("%s is a palindrome\n\n",string);
    }
    else{
        printf("%s is not a palindrome\n\n",string);
    }
    return 0;
}

現在、関数のみを使用してプログラムを書き直さなければなりません。私は今このようにコードを書こうとしていますが、関数の戻り値の使い方がわからないという問題に遭遇し続けています。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define maxLen 100

int pallindrome(char);

int main(){
    int rValue; // return value
    char pString[maxLen];

    printf("Please enter a string between 2 and 100 characters\n");
    gets(pString);
    int palindrome(char pString);

    rValue = palindrome(char pString);

    if(rValue == 0){
        printf("%s is a palindrome\n",pString);
    }
    else{
        printf("%s is not a palindrome\n",pString);
    }
    return 0;
}

int palindrome(char pString){
    char string;
    string = pString;
    char stringCopy;

    strcpy(stringCopy,string);
    strrev(stringCopy);

    if(strcmp(string,stringCopy) == 0){
        return 0;
    }
    else{
        return 1;
    }
}

ご覧のとおり、palindrome() の戻り値を使用して、何かが回文であるかどうかをユーザーに知らせようとしています。

要約すると、関数からの戻り値をメイン関数内の変数として格納できる方法があるかどうかを知りたいので、そこで作業できます。

4

2 に答える 2

1

この問題を解決するにはもっと良い方法がありますが、コードを関数に入れるには...

int palindrome(char* string)
{
    char stringCopy[maxLen];
    strcpy(stringCopy,string);
    strrev(stringCopy);
    return strcmp(string,stringCopy) == 0;
}
int main() 
 {
    char string[maxLen];
    printf("Please enter a string between 2 and 100 characters\n");
    gets(string);

    if(palindrome(string)){
       printf("%s is a palindrome\n\n",string);
    }
    else{
       printf("%s is not a palindrome\n\n",string);
    }
    return 0;
}

それを変数に入れたい場合は、行うことができます

int main() 
 {
    char string[maxLen];
    int result;
    printf("Please enter a string between 2 and 100 characters\n");
    gets(string);

    result = palindrome(string);
    if(result){
       printf("%s is a palindrome\n\n",string);
    }
    else{
       printf("%s is not a palindrome\n\n",string);
    }
    return 0;
}
于 2013-03-20T03:14:28.857 に答える
0

回文関数が間違っています。文字列ではなく文字を渡すだけです。文字列を渡すには、関数の引数をchar *pStringまたはのようにする必要がありますchar pString[]。言語の基礎をブラッシュアップし、コーディングを開始します。

于 2013-03-20T03:37:31.207 に答える