| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1905 人关注过本帖
标题:菜鸟请教一个问题:关于XXXX*X=XXXX,这9个数字都不相同
取消只看楼主 加入收藏
ljstranger
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-3-2
收藏
 问题点数:0 回复次数:2 
菜鸟请教一个问题:关于XXXX*X=XXXX,这9个数字都不相同
刚开始学C语言,偶然有个猜数字的题目,一个四位数*一个数=一个四位数,这9个数字都不相同。
我当时的想法是先算出等号后面的四位数,再除以一个不重复的一个数字,得到等号前的数。
结果也实现了,只是觉得好像比较冗长,不知道各位高手有什么意见,新手发问,不要鄙视我。。
源代码如下:
#include <stdio.h>
main()
{
 int a,b,c,d,e,f,g,h,i,j,k;
//a为等号后面的四位数,b,c,d,e为千百十个位,g位等号后的数,h,i,j,k为g的千百十个位,f为乘  
 for(a=1000;a<10000;a++)
 {
  b=a/1000;
  c=(a-1000*b)/100;
  d=(a-b*1000-c*100)/10;
  e=a-b*1000-c*100-d*10;
  if((b!=c)&&(b!=d)&&(b!=e)&&(c!=d)&&(c!=e)&&(d!=e))
  {
   
  for(f=1;f<10;f++)
   {
    if((f!=b)&&(f!=c)&&(f!=d)&&(f!=e))
    {
         g=a/f;
      h=g/1000;
      i=(g-1000*h)/100;
      j=(g-1000*h-100*i)/10;
      k=g-1000*h-100*i-10*j;
      if((1000<g)&&(g<9999)&&(g!=a))
      {
     
       if((b!=h)&&(b!=i)&&(b!=j)&&(b!=k)&&(c!=h)&&(c!=i)&&(c!=j)&&(c!=k)&&(d!=h)&&(d!=i)&&(d!=j)&&(d!=k)&&(e!=h)&&(e!=i)&&(e!=j)&&(e!=k)&&(f!=h)&&(f!=i)&&(f!=j)&&(f!=k)&&(h!=i)&&(h!=j)&&(h!=k)&&(i!=j)&&(i!=k)&&(j!=k))
                       
       {
        if((g*f)==a)
        {
        printf("%d*%d=%d\n",g,f,a);
        };
       };
      };
    };
   };
  };
 };
 return 0;
}
搜索更多相关主题的帖子: XXXX 数字 源代码 等号 
2005-03-03 16:03
ljstranger
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-3-2
收藏
得分:0 
当少了if((g*f)==a)这句时,每几个输出数字中只有一个是正确的,加了这一句,就好了,但是我总感觉到好像思考问题时出了问题,
PS:还是a/f的时候产生了小数位(比如:g=a/f=1043.7),int格式去掉了小数(g=1043),得到一个g(1043),然后当输出这个g的时候数字就不对了(1043*7=9826)???
2005-03-03 16:12
ljstranger
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-3-2
收藏
得分:0 
谢谢楼上几位达人了。
2005-03-04 10:06
快速回复:菜鸟请教一个问题:关于XXXX*X=XXXX,这9个数字都不相同
数据加载中...
 
   



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

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