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()读取缓冲区其他字符。