望麓自卑—湖南大学最具潜力的校园传媒

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2236|回复: 10

这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有好

[复制链接]
发表于 2009-9-9 22:55:17 | 显示全部楼层 |阅读模式
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序存放在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrOR(void)
{int i,righto,j,s,k;
char tem[80];
for(i=0;i<maxline;i++)
for(j=strlen(xx
)-1;j>=0;j--)
{ k=0;
memset(tem,0,80);
if(xx
[j]==&#39;o&#39;)
{righto=j;
for(s=righto+1;s<strlen(xx
);s++)
tem[k++]=xx
;
for(s=0;s<righto;s++)
if(xx
!=&#39;o&#39;)
tem[k++]=xx
;
strcpy(xx
,tem);
}
else continue;
}
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf(\"数据文件IN.DAT不能打开!\\n\\007\") ;
return ;
}
StrOR() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p ;
if((fp = fopen(\"IN.DAT\", \"r\")) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, &#39;\\n&#39;) ;
if(p) *p = 0 ;
i++ ;
}
maxline = i ;
fclose(fp) ;
return 0 ;
}
void WriteDat(void)
{
FILE *fp ;
int i ;
clrscr() ;
fp = fopen(\"OUT5.DAT\", \"w\") ;
for(i = 0 ; i < maxline ; i++) {
printf(\"%s\\n\", xx) ;
fprintf(fp, \"%s\\n\", xx) ;
}
fclose(fp) ;
}
 楼主| 发表于 2009-9-10 01:32:35 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

就是下面这段函数看不懂 望高手指点呵
void StrOR(void)
{int i,righto,j,s,k;
char tem[80];
for(i=0;i<maxline;i++)
for(j=strlen(xx)-1;j>=0;j--)
{ k=0;
memset(tem,0,80);
if(xx[j]==&#39;o&#39;)
{righto=j;
for(s=righto+1;s<strlen(xx);s++)
tem[k++]=xx;
for(s=0;s<righto;s++)
if(xx!=&#39;o&#39;)
tem[k++]=xx;
strcpy(xx,tem);
}
else continue;
}
}
发表于 2009-9-10 08:56:47 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

你确定这程序对了?
谁写的程序这么飘逸,二维数组一直当做一维再用...
我的gcc,g++都编译不了
 楼主| 发表于 2009-9-10 22:18:14 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

原版题目答案copy应该不会错吧 这是道c语言题
发表于 2009-9-11 00:14:43 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

发个地址我去膜拜下
 楼主| 发表于 2009-9-11 18:44:34 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

诶 竟然不让我发链接!!看我变变变~~~http 哇哈哈www哇哈哈examz哇哈哈com哇哈哈cn/net/shangji/200906/109哇哈哈html第四题~~
 楼主| 发表于 2009-9-11 18:49:47 | 显示全部楼层

回 4楼(xnby) 的帖子

咿呀 竟然不让我发链接!!看我变变变~~~http 哇哈哈www哇哈哈examz哇哈哈com哇哈哈cn/net/shangji/200906/109哇哈哈html第四题~~哇哈哈的意思你知道哈替换一下啦 哇哈哈 [s:326]
发表于 2009-9-11 23:30:55 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

链接上的程序对了,
这种程序最好用string之类的处理方便一点。
另外,题目没有半点算法,只是一点编程复杂度。所以
最好的方法是自己按照自己的思路实现。
自己程序写通了,他的程序也就多半能看懂了
void StrOL(void)
{
int i,j,k,s,m,strl;
char str[80];
for(i=0;i<maxline;i++)
{
strl=strlen(xx);
memset(str,0,80);
s=k=0;
for(j=strl-1;j>=0;j--)
{
if(isalpha(xx[j])) k++;
else { for(m=1;m<=k;m++)
str[s++]=xx[j+m];
k=0;
}
if(!isalpha(xx[j]))
str[s++]=&#39; &#39;;
}
for(m=1;m<=k;m++)
str[s++]=xx[j+m];
str=&#39;\0&#39;;
strcpy(xx,str);}
}
 楼主| 发表于 2009-9-12 00:10:27 | 显示全部楼层

回 7楼(xnby) 的帖子

不好意思 我主要是题目看不懂 那个什么什么“以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。”太搞了我头都大了 不知道什么意思~ [s:330]
 楼主| 发表于 2009-9-12 00:14:54 | 显示全部楼层

回 7楼(xnby) 的帖子

你能帮我解说一下吗~谢谢啦
发表于 2009-10-5 23:18:28 | 显示全部楼层

Re:这题编程题实在不会做 希望大虾指点 题目和内容如下(黑体为所求的函数) 希望有

提醒下楼主。发代码的时候点击代码图标。或者用[code][/code]标签。这样就能保持代码原样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

每日推荐上一条 /1 下一条

小黑屋|手机版|湖南大学望麓自卑校园传媒 ( 湘ICP备14014987号 )

GMT+8, 2024-11-23 21:42 , Processed in 0.070975 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表