第十次课作业:
习题10-1:
81题码: 章节:数组 考查点:一维字符数组的使用,字符串结束标志的掌握 难度:2
编写一程序P7-726.C实现以下功能
从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。
注意:
(1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
(2)若用户输入时输入了很多字符,则仅读入前100个字符。
(3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
(4)编程可用素材:printf(\"input a string: \")...、printf(\"\\nThe string lenth is: ...、printf(\"\\nThe string is: ...。
程序的运行效果应类似地如图1所示,图1中input a string: 123456 vdget 7u84,y37f部分之123456 vdget 7u84,y37f是从键盘输入的内容。
1 / 10
图1 程序运行效果示例
提示:
1、 由于先输出字符长度,后输出内容,所以应将输入字符存入内存中的字符数组str[101](因最多读入100个字符
2、 由于不能使用gets、fgets、strlen函数,只能一个一个字符输入,即ch=(char)getchar();或ch=(char)fgetc(stdin)
3、 遇到回车和文件结束都表示行输入结束,所以循环输入时的条件为
while((ch=(char)fgetc(stdin)) != ‘\\n’ && !feof(stdin))
{
将ch赋给str[i];
i自增;
若输入字符个数已经100,则终止循环;
}
2 / 10
习题10-2:
88题码:1 章节:文件操作 考查点: 难度:2 编写一程序P3-317.C实现以下功能
根据输入的源文件名(含路径, <100字节)和目标文件名(含路径, <100字节),实现将源文件复制到目标文件。注意事项:
(1)源文件可能是文本文件,也可能是二进制文件。
(2)程序的返回值(即由main函数return的值和程序使用exit终止运行时返回的值,也称退出代码)规定为:
①复制成功返回0 ②源文件打开失败返回2 ③目标文件创建失败返回3 ④向目标文件写数据的过程中出错返回4
(3)向目标文件写数据的过程中出错的情况很少发生,考生根据图例中的输入数据进行测试时,很可能不会出错,但程序应考虑出错的情况。
(4)编程可用素材:printf(\"Please input sourceFilename: \")...、
printf(\"Please input destinationFilename: \")...、 printf(\"\\ncopy %s to %s successed!\\n\、printf(\" \\nsource File (%s) Open Error!\\n\、printf(\" \\ndestination File (%s) Create Error!\\n\、printf(\" \\nwriting destination File (%s) Error!\\n\。
程序的运行效果应类似地如图1、图2、图3和图4所示,图1中的C:\\Temp\\Test.dat和D:\\CpOk.doc、图2中的C:\\Temp \\TestN.dat和D:\\Dsm.dat、图3中的C:\\Temp\\Test.dat和D:\\noDir\\Dsm.dat、图4中的C:\\Temp \\Test.dat和D:\\Wer.dat是从键盘输入的内容。
3 / 10
图1 源文件存在,目标文件创建成功,复制正常完成 图2 源文件打开失败
图3 目标文件创建失败 图4 向目标文件写数据的过程中出错
提示:
程序设计思路如下:
打开源文件,判断失败否,失败,return 2;
打开目标文件,判断失败否,若失败,关闭源文件,return3;
while(源文件没有结束)
{
从源文件读一个字符到内存变量ch;
if(ch不是结束符)
4 / 10
{
if(写入目标文件失败)
{
关闭源文件和目标文件,retutn4
}
}
}
正常复制完毕
关闭源文件
关闭目标文件
上述程序可参见课件中的文件复制程序,但注意区别:本题源文件可能是文本文件,也可能是二进制文件
习题10-3:
91题码: 章节:数组 考查点:一维字符数组的使用,字符串结束标志的掌握 难度:2
根据要求编写程序P7-780.C的指定部分:
5 / 10
程序P7-780.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
程序的功能为从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容),具体要求有:
(1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
(2)若用户输入时输入了很多字符,则仅读入前100个字符。
(3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
程序的运行效果应类似地如图1所示,图1中input a string: 123456 vdget 7u84,y37f部分之123456 vdget 7u84,y37f是从键盘输入的内容。
图1 程序运行效果示例
提示:
此题参见81题,只是通过函数完成相应部分功能
习题10-4:
6 / 10
101题码: 章节:文件操作 考查点:文件读入(文本制文件),字符串的处理,文件结束的控制 难度:4
编写一程序P3-315.C实现以下功能
程序运行时,先从键盘输入一个文本文件的文件名(约定:字符数≤127字节,可含路径)和一个字符串(约定:字符数≤20字节,其中不含空格、TAB 等,后面称之为Str),再在屏幕上显示该文件的内容。要求显示完内容后,在屏幕上输出文件的行数(行之间以’\\n’为分隔、每行的长度不定但均≤200 个字节)、字符串Str在文件中第1次出现的行号和最后一次出现的行号(查找时不区分大小写、不跨行查找,若未找到,则行号显示为-1)。注意,程序中不 能使用库函数fgets或使用同名的变量、函数、单词,行的编号从1开始计。
单击此处下载程序运行时测试用的文件315.txt。 编程可用素材:
printf(\"input the file's name and the string: \")...、 printf(\"\\nfile open error!\")...、 printf(\"------------------------File content:----------------------\\n\")...、 printf(\"\\n------------------------File summary:---------------------- \\n\")...、printf(\"... lines, first line: ..., last line: ...\\n\"...。
程序的运行效果应类似地如图1所示,图1中的“input the file's name and the string: C:\\Temp \\315.txt Value”中的“C:\\Temp\\315.txt Value”是从键盘输入的内容“(C:\\Temp\\315.txt”是文件 名,“Value”是需查找的字符串)。图1中的“11 lines, first line: 6, last line: 11”表示文件一共有11 行,字符串“Value”在文件中第一次出现的行号为6、最后一次出现的行号为11。
7 / 10
图1 程序运行效果示例
提示:
1、 请先下载315.txt文件,注意观察,文件中的每一行除最后一行外都是以‘\\n’结束,最后一行以EOF结束
2、 既然文本要求原样输出,可以从文件中每读一个字符就向屏幕输出(即写入标准输出文件——屏幕),也可以先读一行到内存中的字符数组中,形成一个字符串(字符串可定义为:temp[201]),然后输出,
3、 要求在每行中查找字符串str(如图Value,str[21]),查找时不区分大小写、不跨行查找,则可以使用
strstr(temp,str)函数完成查找功能,该函数原型为char *strstr(char *str1, char *str2),功能为查找字符串str2在字符串str1中出现的第一个位置 ,返回该位置的指针。由于不区分大小写,可以使用strlwr(temp)、strlwr(str)将各字符串中的大写字母全部转为小写字母
4、 中心段程序设计思路
如果(文件没有结束)(循环)
{
读一个字符到内存的ch
如果(ch既不是换行符也不是结束符)(选择)
{
8 / 10
将ch赋给temp[i];
i自增;
}
否则
{
每行字符串结束
行数自增
向屏幕输出每行字符串
用strlwr将str和temp所存放的字符串转为小写字符;
如果 (strstr(temp, str) != NULL)
{
如果 (first == -1)
{
记录str字符串第一次出现的行号
9 / 10
}
记录str字符串最后一次出现的行号
}
}
}
10 / 10
因篇幅问题不能全部显示,请点此查看更多更全内容