| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1536 人关注过本帖
标题:(要求指针-未解决)求出所有这样的三位整数,它的2倍3倍仍然是三位整数
取消只看楼主 加入收藏
austral
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2011-3-30
结帖率:100%
收藏
 问题点数:0 回复次数:1 
(要求指针-未解决)求出所有这样的三位整数,它的2倍3倍仍然是三位整数

题目:
求出所有 这样的三位整数,它的 2 倍,3 倍仍 然是三位整数,
这三 个三 位 数使 用 1 到 9 之 间不 同 的数 字。 如 m=192 , 2m=384 ,
3m=576

#include<stdio.h>
int main()
{

int a[20],num[20][3],b[10]; /*a:存放满足条件的三位数*/
/*若不是10 的倍数,则分解三位数*/
/*分解该三位数中的每一个数字*/
int i,j,k,m,n,t,flag;
printf("The 3 squares with 3 different digits each are:\n");
for(j=0,i=11;i<=31;i++) /*求出是平方数的三位数*/
if(i%10!=0) /*若不是10的倍数,则分解三位数*/
{
k=i*i; /*分解该三位数中的每一个数字*/
num[j+1][0]=k/100; /*百位*/
num[j+1][1]=k/10%10; /*十位*/
num[j+1][2]=k%10; /*个位*/
if(!(num[j+1][0]==num[j+1][1]||num[j+1][0]==num[j+1][2]||
num[j+1][1]==num[j+1][2])) /*若分解的三位数字均不相等*/
a[++j]=k; /*j:计数器,统计已找到的满足要求的三位数*/
}
for(i=1;i<=j-2;++i) /*从满足条件的三位数中选出三个进行组合*/
{
b[1]=num[i][0];
b[2]=num[i][1];
b[3]=num[i][2];
for(t=i+1;t<=j-1;++t)
{
b[4]=num[t][0]; /*取第t个数的三位数字*/
b[5]=num[t][1];
b[6]=num[t][2];
for(flag=0,m=1;!flag&&m<=3;m++) /*flag:出现数字重复的标记*/
for(n=4;!flag&&n<=6;n++) /*判断两个数的数字是否有重复*/
if(b[m]==b[n])flag=1; /*flag=1:数字有重复*/
if(!flag)
for(k=t+1;k<=j;k++)
{
b[7]=num[k][0]; /*取第k个数的三位数字*/
b[8]=num[k][1];
b[9]=num[k][2];
for(flag=0,m=1;!flag&&m<=6;m++) /*判断前两个数字是否*/
for(n=7;!flag&&n<=9;n++) /*与第三个数的数字重复*/
if(b[m]==b[n])flag=1;
if(!flag) /*若均不重复则打印结果*/
printf("%d,%d,%d\n",a[i],a[t],a[k]);
}
}
}
}
  表示上面这种方法极度麻烦! 大家又什么优化的方法。求思路或者展示代码。
 

[ 本帖最后由 austral 于 2011-4-25 01:00 编辑 ]
搜索更多相关主题的帖子: different include 
2011-04-23 21:30
austral
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2011-3-30
收藏
得分:0 
回复 15楼 kwxx
你好。你的代码是正确的。但是我要的是指针的方法。我的提问是如何优化指针。因为本帖的0楼的C代码看不懂。
2011-04-24 19:54
快速回复:(要求指针-未解决)求出所有这样的三位整数,它的2倍3倍仍然是三位整数
数据加载中...
 
   



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

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