题目3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.
例如:原文:You can create an index on any field.
you have the correct record.
结果: n any field.You can create an index
rd.yu have the crrect rec
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.
-------------------
类型:字符串(单词)的倒置和删除。
答案:
void StrOR(void) /*标准答案*/
{int I,j,k,index,strl;
char ch;
for(I=0;I<maxline;I++)
{strl=strlen(xx[I]);
index=strl;
for(j=0;j<strl;j++)
if(xx[I][j]=='o')
{for(k=j;k<strl-1;k++)
xx[I][k]=xx[I][k+1];
xx[I][strl-1]= ' ';
index=j;}
for(j=strl-1;j>=index;j--)
{ch=xx[I][strl-1];
for(k=strl-1;k>0;k--)
xx[I][k]=xx[I][k-1];
xx[I][0]=ch;}
}
}
或者:
void StrOR(void)
{ int i;
char a[80],*p;
for(i=0;i<maxline;i++)
{ p=strchr(xx[i],'o');
while(p)
{ memset(a,0,80);
memcpy(a,xx[i],p-xx[i]);
strcpy(xx[i],p+1);
strcat(xx[i],a);
p=strchr(xx[i],'o'); } }
}
或者:
void StrOR(void) /*我的非指针解法*/
{int i,righto,j,k;
char tem[80];
for(i=0;i<maxline;i++)
{k=0;righto=0;memset(tem,0,80);
for(j=strlen(xx[i])-1;j>=0;j--)
{if(xx[i][j]=='o') {righto=j;break;} }
for(j=righto+1;j<strlen(xx[i]);j++) tem[k++]=xx[i][j];
for(j=0;j<righto;j++)
{if(xx[i][j]!='o') tem[k++]=xx[i][j];}
strcpy(xx[i],tem);
}}
或者:
注:题目要求的字符串中所有小写字母o左边的字符串内容移到该串的右边存放,即
将串中“最后”一个字母o左右两侧的内容互换。题中第一个while()特环的作用是让p1
指向最后一个字母'o'。第一个ctrcat()函数的作用是将p1以后的字符都放到新串t中
,第二个strcat()函数的作用是将p1以前的字符连接到新串t的后面(注意:在些之前要
让p1所指的单元成为p1前面字符串的结束位置*p1='\0')。这时完成左右互换。最后
一个while()循环的作用是删除新串中的所有小写字母'o',采用的删除方法是不是'
o'的字母一律留下,否则不留(即相当于删除。)
void StrOR(void)
{int i;
char *p1,*p2,t[80];
for(i=0;i<maxline;i++)
{t[0]='\0';p2=xx[i];
while(*p2)
{if(*p2=='o') p1=p2;
p2++;}
strcat(t,p1+1);
*p1='\0';strcat(t,xx[i]);
p1=xx[i];p2=t;
while(*p2)
{if(*p2!='o') *p1++=*p2;
p2++;
}
*p1='\0';
}}
或者:
注:该题的主要算法是先让两字符指针都指向串尾,然后使一指针(p1)往前移动,当
出现不是字母时则表示在p1+1与p2之间是一个单词,并将该单词存入一变量(t1),最后
将t1连接到新串中(t);接着再往前找第二个单词,依次类推直到字符串头。由此可知
新串就是原串中各单词的倒排。
void Str0L(void)
{
int i,k;
char *p1,*p2;
char t[80],t1[80];
for(i=0;i<maxline;i++)
{p2=p1=strchr(xx[i],'\0')-'\0';
t[0]=t1[0]='\0';
k=1;
while(k)
{
while(isalpha(*p1)==0&&p1!=xx[i]) {p1--;p2=p1;}
while(isalpha(*p1)&&p1>=xx[i]) p1--;
memcpy(t1,p1+1,p2-p1);
t1[p2-p1]=0;
strcat(t,t1);
strcat(t," ");
if(p1<xx[i]) k=0;
}
strcpy(xx[i],t);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
计算机等级考试三级网络南开百题 (100个子文件)
题目03.txt 3KB
题目04.txt 2KB
题目39.txt 1KB
题目33.txt 1KB
题目84.txt 1KB
题目83.txt 1KB
题目58.txt 1KB
题目54.txt 1KB
题目93.txt 1KB
题目71左右排序和比较.txt 1KB
题目50左右排序和比较.txt 1KB
题目76.txt 1KB
题目66素数.txt 1KB
题目59.txt 1KB
题目52.txt 1KB
题目86.txt 1KB
题目29.txt 1KB
题目28.txt 1KB
题目72.txt 1KB
题目17.txt 1KB
题目51.txt 1KB
题目95.txt 1KB
题目98.txt 1KB
题目100.txt 1KB
题目44左右排序和比较.txt 1KB
题目57出圈问题.txt 1KB
题目73.txt 1KB
题目80.txt 1KB
题目40四位数字的正整数.txt 1KB
题目90序列重排.txt 1KB
题目36.txt 1KB
题目65四位数字的正整数.txt 1KB
题目56.txt 1KB
题目18.txt 1KB
题目62.txt 1KB
题目96.txt 1023B
题目97.txt 1022B
题目37.txt 1021B
题目74.txt 1007B
题目75200组数据.txt 1003B
题目41SIXNINE.txt 1002B
题目08.txt 988B
题目14.txt 985B
题目02.txt 980B
题目15.txt 973B
题目78.txt 972B
题目46.txt 971B
题目30.txt 967B
题目45.txt 966B
题目35级数.txt 964B
题目85.txt 948B
题目53.txt 932B
题目27.txt 926B
题目60200组数据.txt 924B
题目34素数.txt 917B
题目48.txt 917B
题目69.txt 916B
题目01素数.txt 914B
题目26四位数字的正整数.txt 913B
题目77.txt 912B
题目89.txt 912B
题目70四位数字的正整数.txt 908B
题目38.txt 907B
题目32.txt 907B
题目13.txt 906B
题目42.txt 905B
题目07.txt 901B
题目12.txt 900B
题目31.txt 895B
题目68.txt 894B
题目99.txt 894B
题目47.txt 891B
题目61.txt 891B
题目67自然数位操作.txt 890B
题目16.txt 881B
题目49.txt 874B
题目09.txt 864B
题目87.txt 863B
题目10.txt 857B
题目06200个正整数.txt 856B
题目81.txt 856B
题目05200个正整数.txt 855B
题目43左右排序和比较.txt 840B
题目88.txt 839B
题目21迭代求方程.txt 804B
题目11字符串改写.txt 804B
题目55素.txt 794B
题目25回文数.txt 761B
题目64素数.txt 756B
题目82素.txt 744B
题目92从文件in.dat中读取200个整数.txt 696B
题目19字符串查找.txt 681B
题目23四位数字的正整数.txt 635B
题目63字符串移动.txt 630B
题目24完全平方.txt 624B
题目22平方根.txt 603B
题目94从文件in.dat中读取200个整数.txt 556B
题目91从文件in.dat中读取200个整数.txt 534B
题目20 fibonacci.txt 523B
题目79整除.txt 412B
共 100 条
- 1
孤风侠尘
- 粉丝: 20
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0