获得C中的“最高”字符

时间:2015-09-15 14:39:16

标签: c for-loop printf

我试过写一个程序,它获得了一个人输入的最高性格。我制作了一个程序,它可以获得最高数量的工作,没有任何问题但是字符不起作用。这是我的代码:

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

int main(int argc, const char * argv[]) {
    char characters[5];
    char highest = "a";

    printf("Please enter five characters: \n");
    for (int i = 0; i <= 4; i+=1) {
        scanf("%c", characters[i]);
    }

    printf("These are the characters you entered: ");

    for (int i = 0; i <= 4; i+=1) {
        printf("%c  ", characters[i]);
    }

    for (int i = 0; i <= 4; i+=1) {
        if (characters[i] > highest) {
            highest = characters[i];
        }
    }

    printf("\nThe highest character is %c", highest);
}

我做错了什么?

4 个答案:

答案 0 :(得分:5)

您尝试将字符串文字"a"转换为char。你应该使用一个字符文字。

char highest = "a";
//should be
char highest = 'a';

此外,scanf需要一个指针来存储读取的结果。

scanf("%c", characters[i]);
//should be
scanf("%c", &characters[i]);

Live Demo

答案 1 :(得分:3)

char highest = "a";不正确,应该char highest = 'a';进行编译。

答案 2 :(得分:0)

两个问题:

字符文字用单引号指定,而不是双引号。所以这个:

def byteResponse = holder.getNodeValue("//*:operationStatus//*:messageText")

// since there is only one tag named "messageText" in the entire response, you could use this also

def byteResponse = holder.getNodeValue("//*:messageText")

应该是:

char highest = "a";

此外,char highest = 'a'; %c格式说明符需要指向scanf的指针,但您需要将char传递给它。

所以这个:

char

应该是:

scanf("%c", characters[i]);

这应该解决你的问题。

答案 3 :(得分:-1)

还有一个潜在的问题尚未得到解决。在C中,保证代表数字的字符(&#39; 0&#39;,&#39; 1&#39;,...,&#39; 9&#39;)是有序的,但没有这样的保证字母(&#39; a&#39;,&#39; b&#39;,...)按任何特定的顺序。< / p>