-5
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{    
    char *v= "a";
    char *o='e';
    char * w='i';
    char  *e='o';
    char  *l='u'; 
    char *u[1];

    printf  ("please enter your character\n");
    scanf  ("%c",& u); 

    if  (u == v){
        puts("the character is it a vowel\n");
    }
    if  (u == o) {
        puts("the character is it a vowel\n"); 
    }  
    else 
        puts("the character is  a constant\n");      
    system("PAUSE");    
    return 0;
}

我需要帮助才能从用户输入中找到元音的正确答案。

4

1 回答 1

4

首先,因为忽略了您肯定收到的所有编译器警告而感到羞耻。他们在那里帮助防止你做“愚蠢的事情”。

为什么这些废话?这是编译器试图告诉你的第一件“愚蠢的事情”。

char *v= "a";
char *o='e';     // invalid - Initializing a pointer to a constant 'e' (101).
char * w='i';    // invalid 
char  *e='o';    // invalid
char  *l='u';    // invalid

你熟悉指针的工作原理吗?如果没有,我建议您阅读并理解它们。

第一行是有道理的——你正在制作一个字符串并指向char* v那个字符串。

但是对这些字符使用指针 - 甚至根本没有变量是没有意义的。直接比较一下:

char my_character;
if (my_character == 'a') {
  // do something
}

至于阅读角色,再次,当它没有意义时,你正在使用指针:

char *u[1];   // why?

相反,只需定义一个char变量。现在,去查看scanf. 给它一个格式字符串"%c"意味着“我只想读取一个字符”。然后,你需要告诉scanf它放在哪里。您可以通过将要存储它的变量的“地址”传递给它来做到这一点。您使用(毫不奇怪!)操作符的地址来&做到这一点。

char input_character;
scanf("%c", &input_character);

有了这些信息,您应该能够完成您的工作。接下来,我建议您查看switch 语句

最后,如果您希望作为程序员被认真对待,您必须使用一致的格式(缩进、间距)并使用有意义的变量名。为无意义的变量拼出“元音”可能很“可爱”,但完全是胡说八道。

最重要的是,你永远不应该写一行代码,除非你完全理解它的作用。如果你这样做了,那么不要去向任何人寻求帮助(尤其是 StackOverflow)。如果你不能解释你的代码在做什么(或者至少你认为它应该做什么),那么你不应该让你的程序工作。

于 2013-09-01T20:00:47.383 回答