第6章练习
  1. 写一个程序,它能够计算并输出杨辉三角形(帕斯卡三角形)前面的n行。


  2. 写程序统计输入文件中各字符出现的频率,并打印输出一个频率图,用形象的方式显示各个字符在文件中出现的数目。首先写出用横向的图显示的程序,然后考虑如何做出纵向的字符频率图。


  3. 写一个程序,它从标准输入读入字符文件,输出其中所有的字符数不超过10个的行。


  4. 修改正文中的“筛法”程序,使它在循环中确定了素数时就直接输出。将这样写出的程序与正文中的程序做一些比较(从简单,清晰等各种角度)。


  5. 1)写一个把数字字符串转换成整数的函数,它只有一个字符数组参数。2)为这个函数增加一个表示“基数”的参数。3)类似地,写一个把合乎C语言实数文字量形式的字符串转换成一个双精度数的函数。


  6. 写函数 squeeze(char s1[], char s2[]),它从字符串s1中删除串s2里包含的所有字符(而且保证剩下的字符仍然按照原来顺序连续排列,形成字符串)。


  7. 写一个函数,它判断一个整数(或浮点数)是否在一个数组中出现。如果出现,给出第一次出现位置的下标;不出现时给出值-1。


  8. 写一个函数,它统计出一个整数在一个数组(都通过参数提供)里出现的次数。


  9. 设有n个人围成一个圆圈,从编号m的人开始由1开始报数,每个正好报到数k的人退出游戏,后面的一个人重新由1开始报数。求出最后剩下的那个人的编号。


  10. 写程序读入正文文件,并统计其中各种长度的单词出现次数。设法用比较形象的方式显示统计结果。这是一项很简单的文字材料统计工作。


  11. 写一个程序,它读入一个文件,输出其中最长的词(参考前面章节对“词”的定义,你也可以自己规定,例如规定词是由字母开头的字母数字序列)。考虑用函数的局部变量或者外边变量实现程序的两个版本。


  12. 1)实现一个求由数组表示的多项式的值的函数; 2)写一个求数值数组中最大值的函数; 3)用上面的函数求出一个多项式在一系列等距点的值,利用其中的最大值将前一步得到的所有值进行规格化(这样可以防止产生的图形太长或太宽),并设法用星号在屏幕上显示多项式的近似图形。


  13. 回文是从前向后和从后向前读起来都一样的句子。例如英文中的: amanaplanacanalpanama 其原文是:A man, a plan, a canal, Panama。再比如中文的“落叶秋叶落”等。写一个函数,它能够判断一个字符串是否为一个回文。如果你的C系统能够处理中文的字符串,也为中文定义一个函数。
  14. 设法写一个程序,对于给定整数n,它能输出1到n之间的数的所有不同排列。


  15. 1)请写一个程序,它输入一个学生成绩文件,输出按照每10分一个成绩段的学生人数。2)请写一个程序,它输入一个学生成绩文件,输出其中的不及格(小于60分)、及格(60≤X<75)、良好(75≤X<85)、优秀(85≤X)的学生人数。


  16. 修改正文中有关有关求最长行程序实例,使之“总能”正确输出最长行的长度,输出的总是最长的那一行或者那一行中前面一段(如果该行超过数组容量)。


  17. 按照文中有关定义处理多维数组的函数的规定,写出求4×4的矩阵和、数乘,求其行列式值(合适的方式是采用高斯消去法)的函数。


  18. 根据需要扩展文中定义的通用的带检查的输入函数。


  19. 按照本章最后的讨论实现一个C语言关键字的统计程序。回答讨论中所提出的问题。修改你的程序,使它能够正确处理任何C程序。