| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4854 人关注过本帖
标题:[讨论]第七次编程题目,大家支持一下
只看楼主 加入收藏
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
以下是引用crackerwang在2007-3-11 19:14:06的发言:

那要是我输入的是
ddd......dd(240个)@ddd...d(240个)
你觉得你的输出是什么?
我觉得你的输出应该是:
dd..d(10个)应为你读取只到@后10个d
显然答案不对

我都说,如果要处理范围和输入问题,程序不会几十行解决,但算法是没有错误的。
你输入己经超出范围,结果是有点不同。你如果继续说,就没有意义。


2007-03-11 19:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

干脆把我自己的行编译器程序贴出来,大家帮忙找不足之处.

#include<stdio.h>
#include<string.h>

int main()
{
#ifndef ONLINE_JUDGE
freopen ("hangbianyiqi.txt","r",stdin);
#endif

char c,str[300];
int i=0;
while(EOF!=(c=getchar()))//采取文件输入
{
if(c=='#')
{
if(i>0&&str[i-1]!='\n')
{
i--;//退格
}
}
else
{
if(c=='@')//可以先用一数组保存每一个换行符出现的位置,方便查找。
{

while(i>0&&str[--i]!='\n');
i++;
}
else
{
str[i++]=c;
}
}
}
str[i]='\0';
printf("%s\n",str);
return(0);
}


调式的话请在和程序同目录下建一hangbianyiqi.txt文件,里面输入你要测试的字符串.

[此贴子已经被作者于2007-3-11 20:21:34编辑过]


倚天照海花无数,流水高山心自知。
2007-03-11 19:25
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我也把我的发上来,虽然没有象斑竹那样对输入的函数没有限制,但是其他功能我还是能实现
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0,j;
char a[4][250];
for(j=0;j<4;j++)
a[j][0]='\0';
for(j=0;j<4;j++)
{
i=0;
while(i<250)
{
a[j][i]=getche();
if(int(a[j][i])==13)
{
printf("\n");
a[j][i]='\0';
break;
}
a[j][i+1]='\0';
if(a[j][i]=='@')
{
i=0;
a[j][0]='\n';
}
else if(a[j][i]=='#')
{
if(i==0)
{
a[j][i]='\0';
i=-1;
}
else
{
i-=2;
a[j][i+1]='\0';
}
}
else
;
i++;
}
}
printf("\n*************\n");
for(i=0;i<4;i++)
{
for(j=0;a[i][j]!='\0';j++)
{
printf("%c ",a[i][j]);
}
printf("\n");
}
}
希望大家多多指教

2007-03-11 19:57
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
无玩过界的一行行处理不错.
可以用一空行作为字符串结束的标志.

倚天照海花无数,流水高山心自知。
2007-03-11 20:03
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用crackerwang在2007-3-11 19:57:04的发言:
我也把我的发上来,虽然没有象斑竹那样对输入的函数没有限制,但是其他功能我还是能实现
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0,j;
char a[4][250];
for(j=0;j<4;j++)
a[j][0]='\0';
for(j=0;j<4;j++)
{
i=0;
while(i<250)
{
a[j][i]=getche();
if(int(a[j][i])==13)
{
printf("\n");
a[j][i]='\0';
break;
}
a[j][i+1]='\0';
if(a[j][i]=='@')
{
i=0;
a[j][0]='\n';
}
else if(a[j][i]=='#')
{
if(i==0)
{
a[j][i]='\0';
i=-1;
}
else
{
i-=2;
a[j][i+1]='\0';
}
}
else
;//和哪个匹配,再说空语句还不如不要.
i++;
}
}
printf("\n*************\n");
for(i=0;i<4;i++)
{
for(j=0;a[i][j]!='\0';j++)
{
printf("%c ",a[i][j]);
}
printf("\n");
}
}
希望大家多多指教


倚天照海花无数,流水高山心自知。
2007-03-11 20:20
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
好象是真的可以不要,

2007-03-11 20:33
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我倒觉得加了会编译出错.语法错误.

倚天照海花无数,流水高山心自知。
2007-03-11 20:37
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
to:crackerwang严格来说你是违反了题意,虽然你可以骗过人的感觉,但本质上没有改变。

2007-03-11 20:59
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
仔细想想确实有是有违题意,我以为是输入250个有效的字符,题目意思是未经过处理的250个字符

2007-03-11 21:10
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用crackerwang在2007-3-11 21:10:53的发言:
仔细想想确实有是有违题意,我以为是输入(不超过)250个有效的字符,题目意思是未经过处理的(不超过)250个字符


2007-03-11 21:13
快速回复:[讨论]第七次编程题目,大家支持一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027767 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved