34-编程练习
11.13 编程练习
1.设计并测试一个函数,从输入中获取 n 个字符(包括空白、制表符、换行符),把结果存储在一个数组里,它的地址被传递作为一个参数。
2.修改并编程练习 1 的函数,在 n 个字符后停止,或在读到第1个空白、制表符或换行符时停止,哪个先遇到哪个停止。不能只使用 scanf() 。
3.设计并测试一个函数,从一行输入中把一个单词读入一个数组中,并丢弃输入行中的其余字符。该函数应该跳过第 1 个非空白字符前面的所有空白。将一个单词定义为没有空白、制表符或换行符的字符序列。
4.设计并测试一个函数,它类似编程练习 3 的描述,只不过它接受第 2 个参数指明可读取的最大字符数。
5.设计并测试一个函数,搜索第1个函数形参指定的字符串,在其中查找第2个函数形参指定的字符首次出现的位置。如果成功,该函数返指向该字符的指针,如果在字符串中未找到指定字符,则返回空指针(该函数的功能与 strchr() 函数相同)。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
6.编写一个名为 is_within() 的函数,接受一个字符和一个指向字符串的指针作为两个函数形参。如果指定字符在字符串中,该函数返回一个非零值(即为真)。否则,返回 0 (即为假)。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
7. strncpy(s1, s2, n) 函数把 s2 中的 n 个字符拷贝至 s1 中,截断 s2 ,或者有必要的话在末尾添加空字符。如果 s2 的长度是 n 或多于 n ,目标字符串不能以空字符结尾。该函数返回 s1 。自己编写一个这样的函数,名为 mystrncpy() 。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
8.编写一个名为 string_in() 的函数,接受两个指向字符串的指针作为参数。如果第 2 个字符串包含在第 1 个字符串中,该函数将返回第 1 个字符串开始的地址。例如, string_in("hats", "at") 将返回 hats 中 a 的地址。否则,该函数返回空指针。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
9.编写一个函数,把字符串中的内容用其反序字符串代替。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
10.编写一个函数接受一个字符串作为参数,并删除字符串中的空格。在一个程序中测试该函数,使用循环读取输入行,直到用户输入一行空行。该程序应该应用该函数读取每个输入的字符串,并显示处理后的结果。
11.编写一个程序,读入 10 个字符串或者读到 EOF 时停止。该程序为用户提供一个有 5 个选项的菜单:打印源字符串列表、以 ASCII 中的顺序打印字符串、按长度递增顺序打印字符串、按字符串中第 1 个单词的长度打印字符串、退出。菜单可以循环显示,除非用户选择退出选项。当然,该程序要能真正完成菜单中各选项的功能。
12.编写一个程序,读取输入,直至读到 EOF ,报告读入的单词数、大写字母数、小写字母数、标点符号数和数字字符数。使用 ctype.h 头文件中的函数。
13.编写一个程序,反序显示命令行参数的单词。例如,命令行参数是 see you later ,该程序应打印 later you see 。
14.编写一个通过命令行运行的程序计算幂。第1个命令行参数是 double 类型的数,作为幂的底数,第 2 个参数是整数,作为幂的指数。
15.使用字符分类函数实现 atoi() 函数。如果输入的字符串不是纯数字,该函数返回0。
16.编写一个程序读取输入,直至读到文件结尾,然后把字符串打印出来。该程序识别和实现下面的命令行参数:
-p 按原样打印
-u 把输入全部转换成大写
-l 把输入全部转换成小写
如果没有命令行参数,则让程序像是使用了 -p 参数那样运行。
