| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 401 人关注过本帖
标题:请看一下这个程序的问题出在哪里了
只看楼主 加入收藏
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
收藏
已结贴  问题点数:10 回复次数:6 
请看一下这个程序的问题出在哪里了
某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。
#include"stdio.h"
#include"math.h"
int main()
{
    int a,b,n=0,i,j;
    double f,g;
    for(a=10;a<=99;a++)
    {
        for(b=10;b<=99;b++)
        {
            i=a/10;
            j=b%10;
            if((j!=0)&&(a!=b))
            
            {
            f=a*(1.0/b);
            g=i*(1.0/j);
            if(f==g)
            n++;
            }
        }
        
    }
        printf("%d",n);
    getchar();
    }
以上程序哪里有问题,为是么结果总是47,而答案是48,请指教!
搜索更多相关主题的帖子: include double 真分数 正整数 
2014-02-25 12:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
浮点数比较f==g是不对的

DO IT YOURSELF !
2014-02-25 12:39
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
收藏
得分:0 
帮忙改动一下
2014-02-25 13:01
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
收藏
得分:0 
找满足以下条件:  X^2+Y^2+Z^2=41^2 且X+Y+Z之值最大的三个正整数X,Y,Z, 求X+Y+Z之值.
#include"stdio.h"
#include"math.h"
int main()
{
    int x,y,z,max=0,sum[40],i=0,j;
    for(x=1;x<41;x++)
    for(y=1;y<41;y++)
    for(z=1;z<41;z++)
    {
        if(pow(x,2)+pow(y,2)+pow(z,2)==pow(41,2))
        {
            if((x!=y)&&(x!=z)&&(y!=z))
            {
                sum[i]=x+y+z;
                i++;
            }
        }
    }
    for(j=0;j<i-1;j++)
    {
        if(sum[j]<sum[j+1])
        max=sum[j+1];
        
    }
    printf("%d",max);
    getchar();
   
    }
运行结果是67,而答案是71,问问题出在了哪里了?
2014-02-25 13:14
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用huaheshang在2014-2-25 13:14:01的发言:

找满足以下条件:  X^2+Y^2+Z^2=41^2 且X+Y+Z之值最大的三个正整数X,Y,Z, 求X+Y+Z之值.
#include"stdio.h"
#include"math.h"
int main()
{
    int x,y,z,max=0,sum[40],i=0,j;
    for(x=1;x<41;x++)
    for(y=1;y<41;y++)
    for(z=1;z<41;z++)
    {
        if(pow(x,2)+pow(y,2)+pow(z,2)==pow(41,2))
        {
            if((x!=y)&&(x!=z)&&(y!=z))
            {
                sum=x+y+z;
                i++;
            }
        }
    }
    for(j=0;j
程序代码:
#include <stdio.h>

int main()
{
    int x,y,z,max=0,sum;
    for(x=1;x<41;x++)
        for(y=1;y<41;y++)
            for(z=1;z<41;z++)
            {
                if(x*x+z*z+y*y==1681)
                {
                    sum=x+y+z;
                    if(max<=sum) max=sum;

                }
            }
    printf("(max)x+y+z=%d\n",max);
    return 0;

}




DO IT YOURSELF !
2014-02-25 14:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
含重复 71   不含重复 67

DO IT YOURSELF !
2014-02-25 14:40
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用huaheshang在2014-2-25 12:13:16的发言:

某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。
#include"stdio.h"
#include"math.h"
int main()
{
    int a,b,n=0,i,j;
    double f,g;
    for(a=10;a<=99;a++)
    {
        for(b=10;b<=99;b++)
        {
            i=a/10;
            j=b%10;
            if((j!=0)&&(a!=b))
            
            {
            f=a*(1.0/b);
            g=i*(1.0/j);
            if(f==g)
            n++;
            }
        }
         
    }
        printf("%d",n);
    getchar();
    }
以上程序哪里有问题,为是么结果总是47,而答案是48,请指教!
48不对   应该是36  下面代码给出的是48的代码  36的代码被我屏蔽了
程序代码:
#include <stdio.h>

int gcd(int x,int y)  
//欧几里得辗转相除法求两数的最大的公约数
{
    if(x<y)    return gcd(y,x);
    if(x%y!=0) return gcd(y,x%y);
    else return y;
}


int main()
{
    int a,b,cnt=0,i,j;
    int f=0;
    for(a=10;a<100;a++)
    {
        for(b=10;b<100;b++)
        {
            i=a/10;
            j=b%10;
            if(a*j==b*i /*&& gcd(i,j)==1*/ && a<b)
            {
                printf("%d/%d===%d/%d      ",a,b,i,j);
                f++;
                if(f%3==0) printf("\n");
                cnt++;
            }

        }

    }
    printf("\n\n共%d对数字符合要求\n",cnt);
    return 0;
}


[ 本帖最后由 wp231957 于 2014-2-25 15:29 编辑 ]

DO IT YOURSELF !
2014-02-25 15:26
快速回复:请看一下这个程序的问题出在哪里了
数据加载中...
 
   



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

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