计算机三级网络技术2013年真题,2013年计算机三级网络技术上机模拟题十六及答案解析...

2013年计算机二级、一级、三级等更多考试考前培训请进入教育联展网-中国教育培训第一门户,助您顺利通过计算机等级考试!

函数ReadDat( )的功能是实现从文件IN66.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrOR( ),该函数的功能是:以行为单位把字符串中所有小写字母o左边的字符串内容移至该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组xx中。最后调用函数WriteDat( )把结果输出到文件OUT66.DAT中。

例如,原文:

You can create an index on any field

you have the correct record

结果:

n any field Yu can create an index

rd yu have the crrect rec

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

注意:部分源程序已给出。

请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。

试题程序:

#include

#include

#include

char xx[50][80];

int maxline=0;

int ReadDat(void);

void WriteDat(void);

void StrOR(void)

{

}

void main()

{

system("CLS");

if(ReadDat())

{

printf("数据文件IN66.DAT不能打开!\n\007");

return;

}

StrOR();

WriteDat();

}

int ReadDat(void)

{

FILE *fp;

int i=0;

char *p;

if((fp=fopen("IN66.DAT","r"))==NULL) return 1;

while(fgets(xx[i],80,fp)!=NULL)

{

p=strchr(xx[i],'\n');

if (p) *p=0;

i++;

}

maxline=i;

fclose(fp);

return 0;

}

void WriteDat(void)

{

FILE *fp;

int i;

system("CLS");

fp=fopen("OUT66.DAT","w");

for (i=0;i

{

printf("%s\n",xx[i]);

fprintf(fp,"%s\n",xx[i]);

}

fclose(fp);

}

2013年计算机二级、一级、三级等更多考试考前培训请进入教育联展网-中国教育培训第一门户,助您顺利通过计算机等级考试!

【答案】

void StrOR(void)

{

int i,j,k; /*定义循环控制变量*/

int index,str; /*定义变量*/

char ch; /*定义暂存变量*/

for(i=0;i

{

str=strlen(xx[i]); /*求各行的长度*/

index=str;

for(j=0;j

/*将一行中所有小写字母o右边的字符依次向左移一位,并删除字母o*/

if(xx[i][j]=='o')

{

for(k=j;k

xx[i][k]=xx[i][k+1];

xx[i][str-1]=' ';

index=j; /*记录下最后一个o所在的位置*/

}

for(j=str-1;j>=index;j--) /*最后一个o右侧的所有字符都移到已处理字符串的左边*/

{

ch=xx[i][str-1];

for(k=str-1;k>0;k--)

xx[i][k]=xx[i][k-1];

xx[i][0]=ch;

}

}

}

【解析】在本题中,以行作为字符串处理的基本单位。首先,确定该行字符串的长度。然后使用循环结构依次对字符进行处理。先找到字符o,将o右侧的字符依次向左移,这个操作同时能够删除字符o。记录下最后一个o所在的位置,在这个o右侧的所有字符都要移到已处理字符串的左边,这个过程也是使用循环来完成的。最后,对文章中的每一行都进行这一操作即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值