| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 458 人关注过本帖
标题:大家帮我看一下~
只看楼主 加入收藏
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
结帖率:78.26%
收藏
已结贴  问题点数:10 回复次数:5 
大家帮我看一下~
#include<iostream>
using namespace std;
int  f1(int m)
{
    int a,b,n=0;
    if(m>=0&&m<10)
        return 1;
        a=m/10;
        b=m%10;
        if(a==b)   
            return 1;        
        else         
            return 0;   
}
int f2(int m)
{
    int i=0,b[20],j,leap;
    int *p=b,*q;
    while( m!=0)
    {
        b[i++]=m%2;
        m=m/2;
    }
    i=i-1;
    q=p+i;
    for(;p<q-i/2,q>=p+i/2;)   
    {
        if(*p==*q)
          {
          leap=1;
            p++;
            q--;
          }            
        else         
            leap=0;
    }
    if(leap==1)
        return 1;
    else
        return 0;
        
}
main()
{
    int m;
    for(m=0;m<100;m++)
    {
        if((f1(m)&&f2(m))==1)
        cout<<m<<endl;
    }
}
功能是输出100以内二进制和十进制正读和反读都一样的数 ,我的算法是不是错了,总是得不到结果的。 大家帮帮忙看一看,先谢了。
搜索更多相关主题的帖子: return 
2011-05-22 22:40
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:5 
int n,i,m;
char a[10],b[10],c[10000],d[10000];
for(n=0;n<=100;n++)
{itoa(n,a,10);
itoa(n,c,2);
m=strlen(a);
for(i=0;i<m;i++)
b[m-i-1]=a[i];
b[m]='\0';
m=strlen(c);
for(i=0;i<m;i++)
d[m-i-1]=c[i];
d[m]='\0';
if(strcmp(a,b)==0&&strcmp(c,d)==0)
printf("%5d",n);
}
2011-05-23 07:07
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
楼上的正确  直接用库函数 itoa 和 atoi

让系统帮你转

                                         
===========深入<----------------->浅出============
2011-05-24 09:44
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
收藏
得分:0 
那我上面的……是怎么错的?课可以帮看看吗?
2011-05-24 12:06
lxj2056708
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2011-3-18
收藏
得分:4 
else         
            leap=0;

改为

else
        {
            leap=0;
            break;
        }
即可
2011-05-24 21:00
棉雨
Rank: 5Rank: 5
等 级:职业侠客
帖 子:174
专家分:368
注 册:2011-4-22
收藏
得分:0 
程序改了一下:
#include<iostream>
using namespace std;
int  f1(int m)
{
    int a,b,n=0;
    if(m>=0&&m<10)
          return 1;
        a=m/10;
        b=m%10;
        if(a==b)   
            return 1;      
        else         
            return 0;   
}
int f2(int m)
{
    int i=0,b[20],leap=1,j;
    int *p=b,*q;
    while( m!=0)
    {
        b[i++]=m%2;
        m=m/2;
    }
    i=i-1;
    q=p+i;
for(j=0;j<(i+1)/2;j++)
    {
        if(*(p+j)==*(q-j))
        {
            leap=1;
        }
        else
        {
            leap=0;
            break;
        }

    }
    if(leap==1)
        return 1;
    else
        return 0;
        
}
void main()
{
    int m;
    for(m=0;m<100;m++)
    {
        if((f1(m)&&f2(m))==1)
        cout<<m<<endl;
    }
}
这样得到的答案是:0 1 3 5 7 9 33 99,这个才是正确的。
谢谢各位的帮忙。
2011-05-28 00:27
快速回复:大家帮我看一下~
数据加载中...
 
   



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

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