| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:算这个程序到底要花多长时间
只看楼主 加入收藏
boris250
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-11
收藏
 问题点数:0 回复次数:5 
算这个程序到底要花多长时间

上午编了一个算数对称数的程序(对称数:是指从左向右与从右向左读数完全一样的数,如59895)
可是算了很长时间都没反应,并没有提示错误,如下:
#include<iostream>
#include<cmath>
using namespace std;
int duchenshu(int a)
{
int i,n,flag=0,flags=0;
double yushu;
for(i=1;;i++)
{
yushu=double(a)/pow(10,i);
if(yushu>1&&yushu<10) break;
}
n=i;
if((a/int(pow(10,n)))==(a%10)) flag=1;
else
{
flag=0;
}
i=n-1;
do
{
int s1,s2;
s1=a/int(pow(10,i));
s1=s1%10;
s2=a%int(pow(10,n-i+1));
s2=s2/int(pow(10,n-i));
if(s1!=s2)
{
flag=0;
}
else
i=i-1;
}
while(i>=n/2);
if(i=n/2 && flag==1) flags=1;
return flags;
}
int main()
{
int i;
for(i=96559;;++i)
{
if(duchenshu(i))
{
cout<<i;
break;
}
}
return 0;
}
如果把主函数改为:
int main()
{
int i;
for(i=96560;;++i)
{
if(duchenshu(i))
{
cout<<i;
break;
}
}
return 0;
}
则很快就能算完出来,郁闷的,请高手解答。

[此贴子已经被作者于2007-10-18 15:31:27编辑过]

搜索更多相关主题的帖子: 时间 
2007-10-18 15:29
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

可能进入了死循环


Fight  to win  or  die...
2007-10-18 15:43
boris250
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-11
收藏
得分:0 

应该不会,因为在for语句中已经有 ++i语名,而且i=96560时是可以运行的。

2007-10-18 16:05
o0花生0o
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-10-13
收藏
得分:0 
我试过,可以运行啊,而且速度不慢,只是没有返回值
2007-10-18 23:05
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
死循环了
if(s1!=s2)
{
flag=0;
break;//加上这句
}

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-19 13:27
coding
Rank: 1
等 级:新手上路
威 望:1
帖 子:60
专家分:0
注 册:2007-9-30
收藏
得分:0 

告诉楼主,其实如果用VC的CString 类做的话,就是非常简单了:
#include <afxwin.h> 要包函这个东东
#include <iostream.h>
BOOL symm(int nda)
{
CString str;
int flag=1;
str.Format("%d",nda); 把数字换成了字符串,再用字符串来依次检索就可以了
int nend=str.GetLength();
for(int i=0;i<=(nend-1)/2;i++)
if(str.GetAt(i)!=str.GetAt(nend-1-i)
{ flag=0;
break;
}
return flag;
}

void main()
{
for(int nterm=10;nterm<=nend;nterm++)
if (symm(nterm))
{
CString str;
str.Format("nterm=%d",nterm);

MessageBox(NULL,str,str,0,0); 其实命令行方式下同样可以用这个界面,只要包括相应的库就行了
}

}

return


2007-10-19 18:02
快速回复:算这个程序到底要花多长时间
数据加载中...
 
   



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

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