【C primer plus】复习题

本文详细解释了C语言中的putchar和getchar函数的用法,包括它们在读取和打印字符时的功能,以及如何处理文件末尾。还讨论了文件操作中的重定向和EOF标志,以及混合输入时可能遇到的问题。此外,举例说明了字符处理的循环和条件判断,以及不同系统中文件和换行处理的标准化。
摘要由CSDN通过智能技术生成

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

答: putchar(getchar())打印 getchar()读取的字符;

getchar(putchar())不是一个有效表达式

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

  a.putchar('H');

  b.putchar('\007');

  c.putchar('\n');

  d.putchar('\b');

答:

a

打印字符H

b

打印ASC码 007上对应的指令,为 响铃

c

打印换行符

d

打印退格

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

答: 使用 重定向符号,如下:

count < essay > esssaycrt

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

  a.essayct <essay

  b.count essay

  c.essay >count

答: a.为有效命令; a. 只有两个数据文件,缺少可执行文件

b.选项 两个文件之间没有重定向符号连接

c. 符号错误,或者说文件位置颠倒,系统会认为essay为可执行文件,

而count为数据文件

5.EOF是什么?

EOF 为C语言 getchar( ) 和 scanf( )读取到文件末尾时返回的特殊数值, EOF在 stdio.h文件中已经预定义。

EOF 的值 为-1 , 不对应 ASCⅡ码中的任何数值。

EOF在使用过程中不表示为任何数值, 只表示读取到文件末尾 (end of file)。

实际运用中常用循环语句, getchar() 和 scanf() 的返回值 来与 EOF进来比较 来保证文件读取的内容。

while ( (ch = getchar()) != EOF )

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

  a.输入如下:

If you quit, I will.[enter]

  程序段如下:

while ((ch = getchar()) != 'i')
   putchar(ch);

 答: 入口判断,当读到字符‘i’时退出循环,输出读取到的字符

// a的输出为
If you qu

b.输入如下:

Harhar[enter]

  程序段如下:

while ((ch = getchar()) != '\n')
{
   putchar(ch++);
   putchar(++ch);
}

答: 对于每个输入的字符,有两个输出字符与之对应。关键在于两个 ++函数,

第一个putchar(ch++)是先使用ch的值再递增,

第二个putchar(++ch)是先自增,再打印ch的值,因而输出为

HJacrthjacrt

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

答:不同的文件有不同的标准和属性。

c语言使用标准的I/O库,把不同属性的文件当成统一的文件流进行处理,

标准I/O库隐藏了不同文件的差异,利于程序员处理。

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

答:scanf()会自动略过空格、制表符、换行符等。

而getchar()函数会读取每一个字符。

因此通常用 scanf()读取数值,getchar()读取缓冲区其他字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值