| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1387 人关注过本帖
标题:[求助]一道简单的题!
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
可能要考虑这样的情况
12.123000 和12.12300000,他们也是相等的.但我的处理就是错误的.
看看先把后面的0取消掉,如果小数点的位置,长度相同再换成数组比较,能不能过...

倚天照海花无数,流水高山心自知。
2006-12-14 20:28
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
是啊!输入的数据的长度不一定相同!好像很复杂!

该学习了。。。
2006-12-14 20:40
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
1.消除后置0,一次循环找到最前的0while(str[i]=='0'){i--;}str[i+1]='\0';便于比较长度
2.比较字符串长度.strlen();
3.比较小数点的位置,一次循环找出小数点,这步可以并到比较各位时进行,以免有这样的情况123.456和12.3456
4.比较各个位数.

暂时只想到这些.

倚天照海花无数,流水高山心自知。
2006-12-14 20:49
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 

我过了,除了要想到方法解决LZ说的问题,还要注意开的数组要大,要1000000,
下面是我的程序:
注释不写了,应该好理解,就是先找".",有的话再字符串尾到"."之间,不为0就跳出,加"\0",否则就把"."的位子用"\0"覆盖,
最后再用strcmp比较就可以了,
#include<stdio.h>
#include<string.h>

void modify(char *a)
{long i,j;
for(i=0;i<strlen(a);i++)
if(a[i]=='.') break;
if(i<strlen(a))
{
if(i==strlen(a)-1) a[i]='\0';
else
{
for(j=strlen(a)-1;j>i;j--)
if(a[j]!='0') break;
if(j==i) a[j]='\0';
else a[j+1]='\0';
}
}
}


main()
{char a[1000000],b[1000000];
while(scanf("%s %s",a,b)!=EOF)
{
modify(a);
modify(b);
if(strcmp(a,b)==0) printf("YES\n");
else printf("NO\n");
}
}


很高兴能和大家一起学习程序! QQ:114109098
2006-12-14 21:19
zyl8316176
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-12-16
收藏
得分:0 

好厉害大家!

2006-12-16 10:44
快速回复:[求助]一道简单的题!
数据加载中...
 
   



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

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