2.9 疑难解惑

疑问1:如果在输入输出格式说明符中再插入转义字符会有什么不同?

答:通过对输入及输出的比较,可以发现以下结论:

(1)在输入说明符中插入转义字符时,相当于插入分隔符,所以在输入数据时,必须以相应的转义字符作为分隔符。

例如:

    scanf("%d\n%c\t%c",&a,&b,&c);

在输入abc时,先输入a,然后输入回车换行,输入b,再输入分隔符Tab,最后输入c。

(2)在输出说明符中插入转义字符时,直接输出转义字符所对应的含义。

疑问2:C语言中,输入一个字符串使用scanf(“%s”)和gets()有什么区别?

答:使用scanf()函数时不能够接收空格、制表符Tab以及回车等,在输入的时候遇见空格、回车等会认为输入结束,而gets()函数却能够接收空格、制表符Tab以及回车。

疑问3:getch()和putch()有什么共同点?

答:都不需要加入格式控制符,并且这两个函数都可以让用户按下任意键而不需要回车就可以接受用户的输入。

疑问4:复合语句为什么不能加“;”?

答:编译器规定C语言中的复合语句使用一对大括号“{}”界定的语句块,如果加上分号,编译器就会报错。

疑问5:使用scanf()函数进行输入时,需要注意哪些问题?

答:使用时应注意的问题:

(1)要求在程序运行中输入数据,输入的数据个数和类型必须与格式说明符一一对应。

(2)地址参数形式:&变量名(除数组或指针变量)。

(3)格式控制中有普通字符时,必须照原样输入。

(4)格式控制中无普通字符时,输入的数值型数据和字符串用空白符分隔,字符型数据不必分隔。

(5)double型数据输入时,必须用%lf或%le格式。

(6)实型数输入时域宽不能用m、n形式的附加说明。

(7)为了减少不必要的输入量,除了逗号、分号、空格符以外,格式控制中尽量不要出现普通字符,也不要使用'\n'、'\t'等转义字符。