| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1938 人关注过本帖
标题:这是一个实习作业,帮帮忙,谢谢!
只看楼主 加入收藏
若风千万人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-11-28
结帖率:33.33%
收藏
已结贴  问题点数:15 回复次数:6 
这是一个实习作业,帮帮忙,谢谢!
一个奇异的三位数(穷举算法)
功能要求:
一个三位自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。
搜索更多相关主题的帖子: 自然数 表达式 
2016-11-30 08:58
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
程序代码:
#include<stdio.h>
#include<string.h>
void fun(int a,char b[],int n)
{
    int i;
    for (i=0;a;i++)
    {
        b[i]=(char)(a%n+48);
        a/=n;
    }
    b[i]='\0';
}
int main ()
{
    char b[20];
    char c[20];
    int i;
    for (i=100;i<1000;i++)
    {
        fun(i,b,7);
        fun(i,c,9);
        if (b[2]==c[0]&&b[1]==c[1]&&b[0]==c[2]&&strlen(b)==3&&strlen(c)==3)
        {
            printf("原三位数:%d\n",i);
            printf("七进制:%s\n",c);  //因为用函数所求的进制值的位数是反过来的,故由函数赋值所得的七进制和九进制位置互换后就是实际的七进制和九进制~
            printf("九进制:%s\n",b);
        }
    }
   
    return 0;
} 

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-30 09:47
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:4 
#include<stdio.h>
#include<math.h>
int jin(int n)
{
    int nn =n;
    int a = 0, b = 0;
 
    while(n&&nn)
    {
       a = (n%9) *(pow(10,c1)) +a;   //九进制数
       n = n/9;
      
       b = b* 10+ nn%7;
       nn = nn/7;
    }
   
    if(a == b)
    return 1;
    else
    return 0;
}

main()
{
    int i;
    for(i = 100; i < 1000; i++)
    {
        if(jin(i) == 1)
        {
            printf("三位数为:%4d", i);
        }
    }
   
    return 0;
}

[此贴子已经被作者于2016-11-30 13:40编辑过]


早知做人那么辛苦!  当初不应该下凡
2016-11-30 13:20
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:4 
#include <stdio.h>
#include <stdlib.h>
main()
{
    char s7[5], s9[5];
    int i;
    for (i=100; i<1000; i++)
    {
        itoa(i, s7, 7);
        itoa(i, s9, 9);
        if (s7[0]==s9[2] && s7[1]==s9[1] && s7[2]==s9[0] && s7[3]==0 && s9[3]==0)
        {
            printf("十进制: %d\n", i);
            printf("七进制: %s\n", s7);
            printf("九进制: %s\n", s9);
        }
    }
}

[此贴子已经被作者于2016-11-30 16:04编辑过]

2016-11-30 16:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:4 
a*49 + b*7 + c == c*81 + b*9 + a
(a*3 - c*5)*8 = b
因为 b 必须大于等于0且小于等于7,所以 a*3 - c*5 == 0
因为 a、c 必须大于等于1且小于等于7,所以 a=5, c=3

程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned abc=0; abc<6*7*6; ++abc )
    {
        unsigned a = abc/42 + 1;
        unsigned b = abc/6%7;
        unsigned c = abc%6 + 1;

        if( a*49 + b*7 + c == c*81 + b*9 + a )
        {
            printf( "十进制: %u\n", a*49+b*7+c );
            printf( "七进制: %u%u%u\n", a,b,c );
            printf( "九进制: %u%u%u\n", c,b,a );
        }
    }
    return 0;
}

2016-11-30 16:25
若风千万人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-11-28
收藏
得分:0 
谢谢大家,已改正!
2016-11-30 18:31
若风千万人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-11-28
收藏
得分:0 
#include<stdio.h>
int main()
{
int i,j,k; //i,j,k开始时默认是十进制。
for(i=1;i<7;i++)//因为能用七进制表示,所以这自然数的每一位一定小于7,不会大于等于7。i不能等于0是因为,i作为九进制的首位时不能为0。
    for(j=0;j<7;j++)//因为能用七进制表示,所以这自然数的每一位一定小于7,不会大于等于7。
        for(k=1;k<7;k++)//因为能用七进制表示,所以这自然数的每一位一定小于7,不会大于等于7。k不能等于0是因为,k作为七进制的首位时不能为0。
            if(i*9*9+j*9+k==i+j*7+k*7*7)//i*9*9+j*9+k表示九进制的三位数;i+j*7+k*7*7表示七进制的三位数。用循环给i,j,k一个一个赋值,
                                        //然后用穷举法一个一个试,直到找到结果为止。
{
    printf("这个三位自然数是:%d\n",i*9*9+j*9+k);//%d%d%d(7)=%d%d%d(9)    k,j,i,i,j,k,
}
return 0;
}
2016-11-30 18:31
快速回复:这是一个实习作业,帮帮忙,谢谢!
数据加载中...
 
   



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

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