●试题四
阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。
例如:原文:You He Me
I am a student.
结果:Me He You
student a am I
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
【函数】
#include
#include
#include
#include
char xx[50][80];
int maxline=0;/*文章的总行数*/
int ReaaDat(void);
void WriteDat(void);
void StrOL(void)
{
char*pl,*p2,t[80];
int i;
for(i=0;i {p1=xx[i];t[0]=0; while(*p1)p1++; while(p1>=xx[i]) {while(!isalpha(*p1)&&p1!=xx[i])p1--; p2=p1; while( (1) )p1--; if(p1==xx[i]) if(isalpha(*p1))p1--; else if(!isalpha(*(p1+1)))break; p2++; (2) ; strcat(t,p1+1); strcat(t," "); } strcpy(xx[i],t); } } void main() { if( (3) ){ printf("数据文件in.dat不能打开!\n\007"); return; } StrOL(); writeDat(); getch(); } int ReadDat(void) { FILE*fp; int i=0; char*p; if((fp=fopen("e:\\a\\in.dat","r"))==NULL)return 1; while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],′\n′); if(p)*p=0; i++; } maxline= (4) fclose(fp); return 0; } void WriteDat(void) { FILE*fp; int i; fp=fopen("e:\\a\\out6.dat","w"); for(i=0;i< (5) ;i++){ printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); } fclose(fp); }
订单号:
遇到问题请联系在线客服
订单号:
遇到问题请联系在线客服