N01. 用途:getchar 和putchar是专门面对字符I/o设计。
No2. 注意 getchar()没有参数,其返回来着输入设备的下一个字符,用法:ch = getchar(),putchar(ch),特别注意字符是以整数被存储;
着重分析break ,continue
Break: 3种循环+ switch
Continue: 3种循环 (不包括switch语句)
为什么continue 不能和switch语句一起使用?
解:因为 对于continue 语句而言,它只能跳过本次循环中,continue之后的语句,最终必须能回到下一个循环周期的开始(至少得执行下一个循环的判断条件),而显然switch语句一旦跳出之后,不可能有下一个循环的判断条件。
Continue语句的适用对象就只能够是:for ,while ,do while 这三大循环。
Break:可以这样理解,break 跳出的是一层循环。对于 3大循环,其跳出包含它的循环,对于switch语句测跳过其剩余部分,此时整个switch语句执行完。
Continue:可以理解成为,continue跳出一次循环,关键是其必须开始下一次循环的判断。
一句话概括:
Break: 终止一层循环或结束一个switch语句;
Continue:中断一次循环 (必须能开始下一次循环判断)
// 特别注意 (ch = getchar ( ) )的外括号不/能省略,因为!=优先级比=高
while( (ch = getchar ( ) ) ! = ‘\n’ ) )
{
if( ch == ‘ ’ ) //激发中断操作 continue; //这两个是一个整体 //continue执行一次,跳过一次下面的两条语句,回到 while的判断条件处。 |
putchar(ch);
chcount++;
}
详解: 这是回显并统计非空格字符。 我们每遇到一个空格,就continue中断一次计数操作,简而言之,用continue 中断空格
While大循环的结束于 continue无直接关系,只由 (ch = getchar ( ) ) ! = ‘\n’ ) 这个判断语句决定,即只要不遇到因回车引起的换行符,程序一直执行。 |
Switch 起:定位到 switch 关键字后的判断整数与某标签值匹配。
止:直到遇到下一个break 语句或者到switch语句结束
switch (ch) { case 'a' ://这个冒号必不可少 case 'A': a_ct++; break; default : break; } |
NO1. if( ch != ‘ “ ’ && ch ! = ‘ \ ‘ ’) P165
字符不是双引号并且它不是单引号 ,注意单引号要用转义符号,单引号不用。
NO2. !运算符优先级很高,高于乘法,和增量运算符优先级相同,仅次于圆括号。 P166
逻辑运算符(处理语句与语句之间)优先级: !(非) > && > ||
优先级: != == > =