0
char * piglatin(const char s[], int len) {
    char * result[len+3] = s[];
    char * current[len+3] = s[];
    if(s[0]=="o"||"u"||"e"||"a"||"i"){
        result[len-1] = "y";
        result[len-2] = "a";
        result[len-3] = "-";
    }
    else{
        for(int i = 0; i<len-1; i++){
            result[i] = current[i+1];
            result[len-1] = "-";
            result[len] = current[0];
            result[len+1] = "a";
            result[len+2] = "y";
        }
    }


    }

コンピューター サイエンスのクラスのプログラムの宿題をしていたときに、ある問題に遭遇しました。教授は、s の最初の文字が母音の場合、文字列 s の後に「-ay」を追加するように求めています。そうでない場合は、s の最初の文字を削除して「-?ay」を追加します。私のエラーは "if(s[o]=="o"||"u"||"e"||"a"||"i")" に表示され、"ポインタと整数の比較 (' int' および 'const char *')". s はポインターではなく、右辺も整数ではないため、混乱しています。

4

3 に答える 3

2

cmon brother ...他のすべての人には「o」ではなく「o」を使用します。ifステートメントでは、次のようにすべてをs[0]と比較する必要があります。s[0]=='o' || s [0] = ='u' || s [0] =='e' || s [0]=='a'など。ただし、それでもエラーが発生するため、ポインタの値を返すことを忘れないでください:)および(const char s [])sは定数であり、どのように変更しますか!!!!!! constを削除します

于 2013-02-09T01:00:55.413 に答える
0

以下でs[0]は、 は char です - つまり整数の形式で、"o"は文字列です - const char *文字 'a' (またはそのようなもの) を文字列 `"o" のアドレスと比較しています。

if(s[0]=="o"||"u"||"e"||"a"||"i"){

やったほうがいい:

if(s[0]=='o' ... )

ただし、|| 「u」は、あなたが思っているような意味ではありません。どの文字 (またはコード内の文字列) もゼロ/NULL ではないため、それらは になりtrue、if ステートメントは常に true になります。

比較ステートメントが必要です。

if(s[0] == 'o'|| s[0] == 'u' ... )
于 2013-02-09T00:52:53.917 に答える
0

ここには 2 つの問題があります。and (およびその他) は (基本的に) char 配列へのポインターでs[0]あるため、コンパイラーは不平を言っています。これを修正するには、 に置き換えます。char"o""o"'o'

ただし、より大きな問題があります。s[0] を 'o' と比較しているだけです。テストのその他の項目はすべて true と評価されます。

    if(s[0]=='o'||s[0]=='u'||s[0]=='e'||s[0]=='a'||s[0]=='i'){
于 2013-02-09T00:46:26.453 に答える