首页 > 试题广场 >

请编写一个程序,该程序的功能是首先将用户通过键盘输入的若干字

[问答题]

请编写一个程序,该程序的功能是首先将用户通过键盘输入的若干字符(用EOF结束输入)存入一维数组s中,然后找出数组中具有最大ASCII码值的字符,并且输出该字符以及该字符对应的ASCII码。

要求:

程序中有关输入、输出以及查找等操作必须通过指针完成。

仅供参考!有问题请指出
 int main() {
    char *p; 
    char max;
    char s[100]; // 100只是个数字,因为定义一个数组需要指定长度

    int i = 1;

    scanf("%s", s); 
    max = s[0];
    p = s;
    while (*p++) {
        if (*p > max) {
            max = *p; 
        }   
    }   

    printf("%c\n", max);
    printf("%d\n", max);
    return 0;
}

发表于 2017-10-13 21:37:36 回复(3)

注意:输入字符串后要按一下回车,再ctrl+D
另外:cLion中ctrl+D为EOF的办法

发表于 2022-03-25 16:55:13 回复(0)
/**
 * 从标准输入读取字符串到字符串数组中,终止符为EOF
 */
char* read_stdin_to_char_array() {
    int malloc_size = 5;
    char* buffer = (char*)malloc(malloc_size * sizeof(char));
    char ch = getchar();
    int offset = 0;
    while (ch != EOF) {
        if (offset == malloc_size) {
            // 输入字符超出buffer size
            malloc_size *= 2;
            char* new_buffer = (char*)malloc(malloc_size * sizeof(char));
            strcpy(new_buffer, buffer);
            free(buffer);
            buffer = new_buffer;
        }
        *(buffer + offset++) = ch;
        ch = getchar();
    }
    return buffer;
}

/**
 请编写一个程序,该程序的功能是首先将用户通过键盘输入的若干字符(用EOF结束输入)存入一维数组s中,然后找出数组中具有最大ASCII码值的字符,
 并且输出该字符以及该字符对应的ASCII码。
   要求:程序中有关输入、输出以及查找等操作必须通过指针完成。 **/
char find_biggest_ascii_char() {
    char* char_array = read_stdin_to_char_array();
    char res = '\0';
    if (strlen(char_array) == 0) {
        res = '\0';
    } else {
        for (int i = 0; i < strlen(char_array); i++) {
            if (res < *(char_array + i)) {
                res = *(char_array + i);
            }
        }
    }
    return res;
}
mac上测试的话 ctrl+d是退出的 但是直接输入helloworld^D貌似会把^D前的缓冲数据都给清掉 可以试试hellworld\n^D
发表于 2020-12-18 16:27:04 回复(0)