跳转至

复习题

第八章 字符输入/输出和输入验证

  1. putchar(getchar()) 是一个有效的表达式,它实现什么功能?getchar(putchar()) 是否也是有效表达式?

    1) putchar(getchar()) 功能:将程序读取的下一个字符并打印,getchar()的返回值是putchar() 的参数。

    2) getchar(putchar()) 无效表达式,原因:getchar()无需参数,而putchar则需要一个参数。

  2. 下面的语句分别完成什么任务?

    1
    2
    3
    4
    a. putchar('H');            // 打印H
    b. putchar('\007');         // 发出一下警报声
    c. putchar('\n');           // 自带换行,所以会再进行一次换行
    d. putchar('\b');           // 退后一格
    

  3. 假设有一个名为count的可执行程序,用于统计输入的字符数。设计一个使用count程序统计essay文件字符数的命令行,并把统计结果保存在essayct文件中。

    count <essay > essayct #将essay作为输入然后通过重定向降结果放在essayct文件中
    

  4. 给定复习题3中的程序和文件,下面哪一条是有效的命令?

    1
    2
    3
    a. essayct <essay   // 不是,essay不是可执行文件 
    b. count essay      // 不是,不是shell一样,可读取参数
    c. essay > count    // 不是,essay是输入文件,不是可执行文件
    

  5. EOF是什么?✅

    一个返回信号(一个特殊值,一般是-1),表明监测到文件结尾处。主要是getchar() 和scanf() 函数来使用。

  6. 对于给定的输入(ch是int类型,而且是缓冲输入),下面各个程序的输出分别是什么?

    a. 输入如下
    If you quit, i will.[enter]
    程序段如下
    while ((ch == getchar())!='i') // 输入读取中,如果=i就直接输出前面的内容
        putchar(ch);                // 输出内容:If you qu
    
    b. 输入如下
    Harbor[enter]
    程序段如下
    while((ch = getchar()) != '\n') // 从第一个进行读取,读到最后是空行时结束
    {
        // 最后的输出是:HJacrthjacrt
        putchar(ch++);      // 注意H+1是I
        putchar(++ch);      // 上一个是I,再次++,就变成了J
    }
    

  7. C如何处理不同计算机系统中的不同文件和换行约定?

    将文件的不同属性和种类统一映射为流来处理。

  8. 在使用缓冲输入的系统汇总,把数值和字符串混合输入会遇到什么潜在的问题?

    a. 读取到数值类型时:会直接跳过空格和换行符

    b. 读取到字符串类型时:字符串则不会。

所以如果存在混合情况,则需要在处理字符输入之前就把换行符直接优先处理掉。