首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
函数ReadDat()的功能是实现从文件IN2.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数SUOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组
函数ReadDat()的功能是实现从文件IN2.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数SUOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组
admin
2011-10-31
40
问题
函数ReadDat()的功能是实现从文件IN2.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数SUOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT2.DAT中。
例如,原文:You He Me
I am a student.
结果:Me He You
student a am I
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
char xx[50] [80];
int maxline = 0;/*文章的总行数*/
int ReadDat (void);
void WriteDat(void);
void StrOL(void)
{
}
main()
{
clrscr();
if (ReadDat ())
{
printf("数据文件 IN2..DAT不能打开! \n\007");
return;
}
StrOL();
WriteDat ( );
}
int ReadDat (void)
{
FILE *fp;
int i = 0;
char *p;
if((fp = fopen("IN2.DAT", "r")) == NULL) return 1;
while(fgets(xx
, 80, fp) != NULL)
{
p = strchr(xx
, ’\n’);
if(p) *p = 0;
i++;
}
maxline = i;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE*fp;
int i;
clrscr();
fp = fopen("OUT2.DAT", "w");
for(i = 0; i < maxline; i++)
{
printf("%s\n", xx
);
fprintf(fp, "%s\n", xx
);
}
fclose(fp);
}
选项
答案
void StrOL (void) { int i,j,k,str1,l; char c; for (i=0; i<maxline; i++) /*把各行中多余的标点符号去掉*/ for(j=0;j<strlen(xx[i]) ;j++) { c=xx[i] [j]; if ((c>=’A’ && c<=’Z’) || (c>=’a’ && c<=’z’) || c==’ ’||(c>=’0’ && c<=’9’)); else xx[i] [j]=’ ’; } for (l=0; l<maxline; l++) { char ch[80]={0}; char pp[80]={0}; str1=strlen(xx[1]); i=str1-1; k=1; while (1) { while (((xx[1] [i]>=’a’ &&xx[1] [i]<=’z’) || (xx[1] [i]>=’A’ &&xx[1] [i]<=’Z’) || (xx[1] [i]>=’0’ && xx[1] [i]<=’9’)) && i>=0) /*处理字母和数字*/ { for (j=k; j>=0; j-- ) /*从当前行的最后一个字符开始,直到遇到空格*/ pp[j+1]=pp[j]; pp[0]=xx[1] [i]; k++;i--; } strcat ( ch, pp ); /*把该单词存放到数组ch中*/ strcpy(pp, " "); /*清空数组pp*/ k=1; if (i==-1) break; /*如果处理完了一行,则退出循环*/ while((xx[l] [i]<’0’|| (xx[1] [i]>’9’&&xx[1] [i]<’A’) || xx[l] [i]>’z’) && i>=0) /*处理空格*/ { for (j=k; j>=0; j--) pp[j+1] =pp[j]; pp[0]=xx[l] [i]; k++; i--; } strcat (ch, pp); /*把空格加到数组ch中/ strcpy (pp, " "); /*清空数组pp*/ k=0; if (i==-1)break; /*如果处理完了一行,则退出循环*/ } strcpy (xx [l], ch); /*把已处理的字符串仍按行重新存入字符数组xx中/ } }
解析
本题是有关字符串的处理问题。首先利用二重循环来按照先行后列的顺序取得xx数组中的各个字符元素,这里用到了strlen()函数,用来求字符串长度。对依次取得的字符做一些处理,即把多余的标点符号去掉,使新的字符数组中只含有字母和空格。准备工作做完后,从当前行的最后一个字符开始取,不断的取每一个字符前面的字符,直到取得一个完整的单词后(即遇到空格分隔时),就把该单词存放到数组ch中(用到了strcat()函数来连接两个字符串,用strlen()函数来对字符串求取串长度),还要把分隔符也放到ch中去。接着去取该行中其他的字符组成的单词,重复上面的操作,对其他行同样处理。这样最终得到的字符串就是各行中单词出现的顺序的逆序了,但单词本身的字符顺序没有发生变化。
转载请注明原文地址:https://kaotiyun.com/show/UCwZ777K
本试题收录于:
三级信息管理技术题库NCRE全国计算机三级分类
0
三级信息管理技术
NCRE全国计算机三级
相关试题推荐
当前数据库技术的发展已形成各种类型的数据库应用技术,下述:Ⅰ.应用的驱动Ⅱ.多种技术与数据库技术的结合Ⅲ.关系数据库的研究基础______是这种发展的推动力
过程定义是企业资源管理所需要的逻辑相关的一组活动和【】。
在下列条目中,哪些是数据库管理员的职责?Ⅰ.负责管理企业组织的数据库资源Ⅱ.收集和确定有关用户的需求Ⅲ.设计和实现数据库并按需要修改和转换数据Ⅳ.为用户提供资料和培训方面的帮助
下列是关于信息系统开发策略的假设:Ⅰ.所有的需求能被预先定义Ⅱ.有快速的系统建造工具Ⅲ.项目参加者之间通常能够清晰地进行通信Ⅳ.需要实际的、可供用户参与的系统模型Ⅴ.大量的反复是不可避免的,应该加以鼓励以上假设中,属于原型化方法
主题数据库是一类重要的数据环境,以下是关于数据环境特点的描述。Ⅰ.简单、容易实现Ⅱ.具有较低的维护成本Ⅲ.提高了应用开发效率Ⅳ.与应用项目对应Ⅴ.独立于应用项目其中属于主题数据库优点的是
DSS中的数据系统的特点之一是
在JamesMartin的企业信息工程技术模型中,位于底层的三个模块要求保持相对的稳定性。以下是该模型中的一些模块Ⅰ.物理数据库的设计Ⅱ.建立主题数据库Ⅲ.分布式分析Ⅳ.建立企业模型Ⅴ.信息资源战略规划
可行性分析报告为【】的结果。
J.Martin认为,完成自顶向下的规划设计,需建立一个核心设计小组,应由下列哪些成员组成?Ⅰ.最高管理者Ⅱ.最终用户Ⅲ.系统分析员Ⅳ.资源管理者Ⅴ.财务总管Ⅵ.业务经理
随机试题
梁启超指出:“吾国四千余年大梦之唤醒,实自甲午战败割台湾偿二百兆以后始也。”意指甲午战争后
异步电动机过载时造成电动机()增加并发热。
国家实行医师资格考试制度,目的是检验评价申请医师资格者是否具备
在罗某放火案中,钱某、孙某和吴某3家房屋均被烧毁。一审时,钱某和孙某提起要求罗某赔偿损失的附带民事诉讼,吴某未主张。一审判决宣告后,吴某欲让罗某赔偿财产损失。下列哪一说法是正确的?(卷二真题试卷第28题)
()除由两个电源供电外,尚应增设应急电源。
建筑材料,按其使用功能,有建筑装修装饰材料、保温隔声材料、管道材料以及施工材料等。建筑材料的防火性能一般用建筑材料的()来表述。
债券基金的主要投资风险包括()。
英国斯特林大学等机构的研究人员最近在《精神健康与身体运动》杂志上报告说,他们对过去有关抑郁和散步的大量研究进行综合整理和分析,从中挑选出300多名适合对比分析的抑郁患者的数据,最终得出的结论是散步在帮助治疗抑郁方面的确有效。以下各项如果为真,最能支持研究结
(2006年试题,一)设矩阵E为二阶单位矩阵,矩阵B满足BA=B+2E,则|B|=____________.
ofrisk.Forexample,someshouldberelativelyimmunetotheeffectsofrecession,
最新回复
(
0
)