1-1:
在你自己的系统中运行“hello world”程序,再有意去掉程序中的部分内容,看看会得到什么出错信息
![](http://i0.hdslb.com/bfs/article/ece704660bf9177fd4dc55dc5685affb1dcb7c1f.png)
1-2:
做个实验,当printf函数的参数字符串中包含\c(其中c是上面的转义字符序列中未曾列出的某一个字符)时,观察一下会出现什么情况
![](http://i0.hdslb.com/bfs/article/653f0d4873274a4767de261f54af3e02eb3268bc.png)
1-3:
修改温度转换程序,使之能在转换表的顶部打印一个标题
![](http://i0.hdslb.com/bfs/article/afd57b90dbc611db687d9534fdb17a2df1abbb3b.png)
1-4:
编写一个程序打印摄氏温度转换为相应华氏温度的转换表
![](http://i0.hdslb.com/bfs/article/6cea2a8a03c735633a24227f5565271dd5fd4b70.png)
1-5:
修改温度转换程序,要求以逆序(即按照从300度到0度的顺序)打印温度转换表
![](http://i0.hdslb.com/bfs/article/0018a13ec78a4420a304610ddbff35ff04f3c348.png)
1-6:
验证表达式getchar() != EOF的值是0还是1
![](http://i0.hdslb.com/bfs/article/a4d55d17b6bce6e24f1444dedb3e76aaf51892a4.png)
1-7:
编写一个打印EOF值的程序
![](http://i0.hdslb.com/bfs/article/a9e590c8906c84925a75b47af710487e9790d27e.png)
1-8:
编写一个统计空格、制表符与换行符个数的程序
![](http://i0.hdslb.com/bfs/article/9ba34854d4505c2e597c11e7e3d71df70f458828.png)
1-9:
编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替
![](http://i0.hdslb.com/bfs/article/59656640706cb7c5b0c35a5ec4b2e6da3ba9eef0.png)
1-10:
编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为\。这样就可以将制表符与回退符以可见的方式显示出来
![](http://i0.hdslb.com/bfs/article/bcf4c54d539e8f1ecc3641f229d20b9878665f6a.png)
1-11:
你准备如何测试单词计数程序?如果程序中存在某种错误,那么什么样的输入最可能发现这类错误
![](http://i0.hdslb.com/bfs/article/f03e047781e700535dad2622ae5d46f33a92a19d.png)
1-12:
编写一个程序,以每行一个单词的形式打印其输入
![](http://i0.hdslb.com/bfs/article/1c1c5baca1a20a0318f5ba2697f0be975a810aa4.png)
1-13、1-14:
编写一个程序,打印输入中单词长度以及各个字符出现的频度的直方图,水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些
![](http://i0.hdslb.com/bfs/article/5d933e5c3e13928a7839b96e4dd12f381c4b52f2.png)
1-15:
重新编写1.2节中的温度转换程序,使用函数实现温度转换计算
![](http://i0.hdslb.com/bfs/article/1b5cb2029b05eb02a67daa9c5d87180327ba6733.png)
1-16:
修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多地打印文本
![](http://i0.hdslb.com/bfs/article/1bc59f76bc6e3093ff7b20132e7454675c4a6384.png)
1-17:
编写一个程序,打印长度大于80个字符的所有输入行
![](http://i0.hdslb.com/bfs/article/1112bfc37a501dc60d855e27d8225e8de423c4e4.png)
1-18:
编写一个程序,删除每个输入行末尾的空格即制表符,并删除完全是空格的行
![](http://i0.hdslb.com/bfs/article/6eaacc1abba3243fcc4bdc298a9b9b9dde2a1573.png)
1-19:
编写函数reverse(s),将字符串s中的字符顺序颠倒过来。使用函数编写一个程序,每次颠倒一个输入行中的字符顺序
![](http://i0.hdslb.com/bfs/article/a8068eb4d535af4e39d510bdce6d2c4fa93dc048.png)
1-20:
编写程序detab,将输入中的制表符替换成适当数量的空格,使空格充满到下一制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该作为变量还是常量符号呢
![](http://i0.hdslb.com/bfs/article/0acfcd4c17205647ba671c19c1039bc22f66ff8b.png)
1-21:
编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变,假设制表符终止位的位置与练习1-20的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一制表符终止位时,选用哪一种替换字符比较好
![](http://i0.hdslb.com/bfs/article/413757a80073e37e6041ed4bdf5da0f40bb96d6b.png)
1-22:
编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后。要保证程序能够智能的处理输入行很长以及在指定位置的列前没有空格或制表符时的情况
![](http://i0.hdslb.com/bfs/article/579f809f19d40b0cc8553db56e7cbcf20a342d65.png)
1-23:
编写一个程序删除C语言程序中的所有注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套
![](http://i0.hdslb.com/bfs/article/3a44a782c57b980359c27ba0feddae7d46ed8487.png)
1-24:
编写一个程序,查找C语言程序中的基本语法错误,如圆括号、方括号、花括号不配对等。要正确处理引号(包含单引号和双引号)、转义字符序列与注释(如果读者想把程序编写成完全通用的程序,难度会比较大)
![](http://i0.hdslb.com/bfs/article/e3a233a1fabffe3fb8f8e248cd7a026bcaea5298.png)