C语言实验12
国脉信息学院C语言实验报告
2012级 软件1201班2013年5月25日
姓名*** 学号
(一)
P319-2
1、实验题目
修改并测试练习1中的函数,使得可以在n个字符后,或第一个空格、制表符、换行符后停止读取输入,由上述情况中最先被满足的那个终止读取(不能用scanf()函数)。
2、设计思路
需要跳过输入n之后的换行符。
利用getchar函数的特性遇到换行符结束添加判断是否为空格
如果为空格则跳出输入,字符串数组尾端添加空字符
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
P319-3
1、实验题目
设计并测试一个函数,其功能是读取输入行里的第一个单词到数组,并丢掉该行中其他的字符。一个单词的定义是一串字符,其中不含空格、制表符和换行符。
2、设计思路
利用scanf()的特性遇到空格符,制表符,换行符时结束输入。
%10s中的10可有可无只是一般单词不超过10个字符
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
P319-5
1、实验题目
编写一个函数is_witlun()。它接受两个参数,一个是字符,另一个是字符串指针。其功能是如果字符在字符串中,就返回一个非O值(真);如果字符不在字符串中,就返回O值(假)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
2、设计思路
当指针内的字符不为空字符且与查找字符不同时
指针移动到下一位置,再次进行比较。
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
P319-6
1、实验题目
strncpy (sl,s2,n)函数从s2复制n个字符给sl,并在必要时截断s2或为其填充额外的空字符。如果s2的长度等于或大于n,目标字符串就没有标志结束的空字符。函数返回sl。自己编写这个函数,并在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
2、设计思路
函数内设置一个指针指s3向目标字符串数组的首元素
将s2首元素赋给(*s3)s1
如果(*s3)s1不为空字符,指针s2移动一位。
否则指针s3移动到s1的下一个元素
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
P319-7
1、实验题目
编写一个函数string_in(),它接受两个字符串指针参数。如果第二个字符串被包含在第一个字符串中,函数就返回被包含的字符开始的地址。例如,string_in("hats","at")返回hats中a的地址,则,函数返回空指针。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
2、设计思路
函数内设置一个指针s指向s1的首元素。
设置循环利用strchr判断s(s1)与s2是否相同,如果不相同并移动s指针,这样的话,s就变成了首元素与s2相同的字符串数组 与此同时利用strncmp()判断字符串s里的前n个字符内是否与s2相同。
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
P319-8
1、实验题目
编写一个函数,其功能是使输入字符串反序。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
2、设计思路
函数先统计字符串数组内有多少个字符
然后利用中间变量前后字符对调。
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
P319-9
1、实验题目
编写一个函数。其参数为一个字符串,函数删除字符串中的空格。在一个可以循环读取的程序中进行测试,直到用户输入空行。对于任何输入字符串,函数都应该适用并可以显示结果。
2、设计思路
函数内设置嵌套循环,当字符元素为空格符时,将后面的元素全部向前移动一位。
3、最终程序截图
4、错误调试分析
无
5、运行结果截图
分割线
阅读与提高
(一)
1、实验题目
编写程序:显示一个月的每日提醒列表。用户输入一系列提醒,每条提醒都要有一个前缀来说明是一个月中的哪一天,当用户输入的是0而不是有效的日期时,程序会显示录入的全部提醒的列表,按日期排序的。scanf()读入到整型变量中,然后调用sprintf函数把日期转换成字符串格式,存到一个日期的一维字符数组里。
读取提醒(有长度限制)时,可以另外写一个读一行字符串的函数,函数原型为:int read_line(char str[],int n),先把提醒存放到一条提醒的一维字符数组中。
另需一个二维字符数组,用来集中存放日期和提醒(此时日期和提醒没有分开存放,都存在二维字符数组的某一行)。具体实现:边比较日期(因为日期已转成字符串,所以用strcmp函数),边把该日期和对应的提醒存到一个二维字符数组的某一行(用strcpy函数把日期复制到二维数组某一行,再用strcat函数把提醒“连接”到该行后面)
。