《C Primer Plus》学习笔记(第七章到第八章)

第七章:C控制语句:分支和跳转

分支结构:让程序根据测试条件执行相应的行为
跳转语句:它将程序流转换到程序的其他部分

1.if语句
即使if语句由复合语句构成,整个if语句仍被视为一条语句。
条件为真则执行语句内的内容,为假则跳过if,继续执行程序。
如果要在if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个块。如果不括则只认为下一条指令是if或else的一部分。if只和最近的一个else配对。
else if多重选择 可以配合if使用

2.getchar()和putchar()
getchar()不带任何参数,它从输出队列中返回下一个字符。
putchar()函数打印它的参数 例如putchar(ch)
可以用getchar配合while读取一串字符,如下:

while((ch=getchar())!='\n')
{
........./*字符处理*/
}

这样就能对你输入的一串字符进行处理,getchar()读取到“\n”会停止,也可以用getchar()读取一个"\n"。

3.ctype.h

函数名如果是下列参数时,返回的值为真
isalnum字母或数字
isalpha字母
isblank标准的空白字符
iscntrl控制字符,如ctrl+b
isdigit数字
isgraph除空格以外的任意可打印字符
islower小写字母
isprint可打印字符
ispunct标点符号
isspace空白字符
isupper大写字母
isxdigit十六进制字符
tolower大写转小写否则返回原始参数
toupper小写转大写否则返回原始参数

4.条件运算符:?
x=(y<0)?-y:y;
如果y小于0x就赋值为-y否则赋值为y

5.循环辅助:continue和break
continue和break语句可以根据循环体中的测试结果来忽略一部分的循环内容,甚至结束循环
continue会跳过本次迭代的剩余部分,并开始下一轮迭代
使用continue的好处是减少主语句组中的一级缩进。
有2种方法可以避免使用continue,一是省略continue,把剩余部分放在一个else块中,还可以把if的测试条件反过来。

break语句是跳出一重循环,也就是退出离break最近的循环。

5.switch语句
程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。expression和case标签必须是整数值,标签必须是常量组成的表达式。如果没用case标签与expression的值匹配,控制则转至标有default的语句(如果有);否则,将转至执行跟紧在switch语句后面的语句。
形式:

switch(expression)
{
    case label1:statement1//可以用break跳出循环
    case label2:statement2
    default:statement3
}

6.switch和if else
如果是根据浮点类型的变量或表达式来选择,就无法使用switch。如果根据变量在某范围内决定程序流的去向,使用switch就很麻烦,这时用if就很方便。

7.goto语句
跳转到程序的某一处,不建议使用,危险性很大。

结论:合理的运用分支和跳转可以实现很多的功能,还可以提高交互性和程序的逻辑性。

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

I/O函数负责把信息传送到输出设备。
输入\输出函数不是C定义的一部分,C把开发这些函数的任务留给编译器的实现者来完成。
1.缓冲区
用户输入的字符被收集并存储在一个被称为缓冲区的临时存储区,按下enter键后,程序才可使用用户输入的字符
缓冲分为2类:完全缓冲I\O和行缓冲I\O
为什么要有缓冲区:把若干个字符作为一个块进行传输比逐个发送这些字符节约时间。其次如果输入错误可以通过键盘修正错误。当按下enter键时,传输的才是正确的输入。

2.文件 流和键盘输入
文件是存储器中存储信息的区域。通常,文件都保存在某种永久存储器中。
流是一个实际输入或者输出映射的理想化数据。
打开文件的过程就是把流与文件相关联,读写都要通过流来完成。

3.文件结尾
getchar()读取文件的结尾时将返回一个特殊值(EOF)
一般以ctrl+z结尾 或者ctrl+d

4.重定向和文件
程序可以通过两种方式使用文件 1.使用特定的函数打开文件 关闭文件 读取文件 写入文件 2.设计能与键盘和屏幕互动的程序,通过不同的渠道重定向输入至文件和从文件输出,换言之,把stdin流重新赋给文件。

echo_eof < words 将words的内容写入(<左右有空格)
echo_eof>mywords 新建一个mywords文件,并将数据写入
组合重定向
prog >file1 <file2
重定向运算符连接一个可执行程序和一个数据文件,不能用于连接数据文件和另一个数据文件,也不能用于连接一个程序和另一个程序
使用重定向运算符不能读取多个文件的输入,也不能把输出定向至多个文件
通常,文件名和运算符之间的空格不是必须的

5.使用缓冲输入
缓冲输入用起来比较方便,因为在把输入发送给程序之前,用户可以编辑输入
在编写交互式程序时,应该事先预料到用户可能会输入错误,然后设计程序处理用户的错误输入。在输入错误时通知用户再次输入

5.分析程序
程序遵循模块化的编程思想,使用独立函数来验证输入和管理显示。程序越大,使用模块化编程就越重要。

6.菜单浏览
给用户提供选项、检查并执行用户的响应、保护程序不受误操作的影响。
使用图形界面更容易通过限制选项控制输入。

要注意在处理复杂的任务时,如何让函数把任务委派给另一个函数,这样能使程序更模块化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值