王朝知道
分享
 
 
 

200分又是C语言问题

王朝知道·作者佚名  2009-07-06  
宽屏版  字体: |||超大  
 
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
 
问题描述:

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。

例如:原文:You He Me

I am a student.

结果:Me He You

student a am I

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

部分源程序存在文件prog1.c中。

请勿改动主函数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){这段为答案(1)

}

void main()

{

clrscr();

if(ReadDat()){

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

return;

}

StrOL();

WriteDat();

}

int ReadDat(void)

{

FILE *fp;

int i=0;

char *p;

if((fp=fopen("IN.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;

clrscr();

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

for(i=0;i<maxline;i++){

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

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

}

fclose(fp);

}

答案(1)为{int I,j,k,strl,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==' ') ;

else xx[I][j]=' '; }

for(l=0;l<maxline;l++)

{char ch[80]={0}; char pp[80]={0};

strl=strlen(xx[l]);

I=strl-1; k=1;

while(1)

{while (((xx[l][I]>='a'&&xx[l][I]<='z')||(xx[l][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);strcpy(pp, """");k=1;

if(I==-1)break;

while((xx[l][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); strcpy(pp,"""");

k=0;

if(I==-1)break;}

strcpy(xx[l],ch);

}

}

我的提问是答案中的语句

第一个问题:第二个和第三个while 为什么换不成if!

第二问题为什么少了k++:

输出会变成an ren hae Yoa

ma a in arn

st wht

de Ece

ge ine win

wh wah ina

tur inu

po cao wia

en lin thi toh

a an prn Ecr

ca ena cln

co noo

a ma toa hao Yoa

tw thw beh che

le noe wro shr Yoh

Wr 25r th5

on arn yor

2 SH ANH

原来输出答案an read have You

magazine a in article

states which

development Economic

generate inevitably will

which waste industrial

turn in

pollution cause will

environment living the to

a and prosperity Economic

can environment clean

coexist not

a make to have You

two the between choice

less no write should You

Write 250words than

on article your

2 SHEET ANSWER

请各位高手指教!

参考答案:

1.很简单,程序是一个一个字符的读取,需要每次都判断读取的是否是字母或是行首,用if一次判断就没了,不符合程序的算法,第一个while读取整个单词,第二个while跳过空格,循环操作

2.看这段程序

for(j=k;j>=0;j--)

pp[j+1]=pp[j];

pp[0]=xx[l][I]; k++;I--;

程序的算法是从行尾不断读取字符到pp中,但是为了维持单个单词的正向拼写,采用了头插法,即不断向pp开头插入字符的方法获取单词,比如单词four,先是"r",k的值为字符长度+1,k=2,通过循环将现有的字符后移留出空位待插入,循环后变为"rr",插入变为"ur",然后依次变化"uur"->"our"->"oour"->"four",k的作用就是维护当前已获取字符长度的变量,应该是在不断变化的,你把它删了,自然就会出现不可预知的结果了啊

\

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有