1

文字列を反転しているので、たとえば「try」という単語を入力すると、y が母音として読み取られ、その単語が有効であることが出力されます。

逆関数は機能しますが、switch ステートメントの値には渡されません。

#include //#include

void rev(char *);
void legal(char string);

int main()
{

     char string[50];
     char temp;
     printf("Enter any string:");
     scanf(" %s",&string);
     //printf("Before reversing the string %s\t",string);

     rev(string);
     printf("\nReverse String is %s",string);
     temp = legal(string);
     printf("\nReverse String is %s",temp);

return 0;
}

void legal(char string)

{   


      switch(string)
    {
    case 'A':
    case 'E':
    case 'I':
    case 'O':
    case 'U':
    case 'Y':
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
    case 'y':
    printf("\nWord is legal");
    break;
    default:    
    printf("\nWord is not legal");  
    break;
    }

return 0;    

}


//reversing string using pointers
void rev(char *str)

{
     char *str1,temp;
     str1=str;
     while(*str1!='\0')
     str1++;                  
     str1--;                                  
     while(str<str1)
     {
        temp=*str;                  
        *str=*str1;                  
        *str1=temp;                  
        str++;
        str1--;
     }
}
4

4 に答える 4

1

C++ では、switch 命令で文字列または配列を使用できないため、問題が発生する可能性があります。

さらに、tempt を 0 に割り当てています。

于 2013-11-06T01:58:55.877 に答える
1

char *aと aを間違えたようですねchar

代わりに、文字列を 1 文字ずつループして、単語が有効かどうかをフラグで判断する必要があります。

これが私がそれを行う方法であり、事前にテストされたコードではありません:

void rev(char *);
void legal(char *string);

int main()
{

     char string[50];
     int temp;
     printf("Enter any string:");
     scanf(" %s",&string);
     //printf("Before reversing the string %s\t",string);

     rev(string);
     printf("\nReverse String is %s",string);
     temp = legal(string);

     printf("\nLegal? %d",temp);

return 0;
}

int legal(char *string)
{   
    char *ch = string;
    int flag = 0;
    while(*ch != '\0'){
     switch(*ch)
     {
    case 'A':
    case 'E':
    case 'I':
    case 'O':
    case 'U':
    case 'Y':
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
    case 'y':
      flag = 1;
    break;
    default:    
      //nothing  
    break;
    }
   }
   if(flag == 1){
      printf("word is legal!");
   }else{
      printf("word is illegal!");
   }
    return flag;    
}
于 2013-11-06T02:02:30.427 に答える
0

コードにいくつかのエラーがあります。

void legal(char string);void を返しますが、ここで割り当てようとします。

temp = legal(string);

legalchar を取りますが、それに a を渡そうとしchar []ます。

return 0;法律上のあなた。

于 2013-11-06T01:59:03.307 に答える