| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 923 人关注过本帖, 1 人收藏
标题:请帮忙看看,谢谢
只看楼主 加入收藏
xyx
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-9
收藏(1)
 问题点数:0 回复次数:8 
请帮忙看看,谢谢

题目

用1-9组成三个3位的平方数 将1,2,3,4,5,6,7,8,9,九个数字分成三组,每个数字只能用一次,既每组三个数,不允许有重复数字,也不许同其它组的三个数字重复,要求每组中的三位数都组成一个平方数.

解答:

main() { int flag[10]={0},i,i1,i2,t=0,c,a,j;

for(i=10;i<32;i++) for(i1=10;i1<32;i1++) if(i1>i) for(i2=10;i2<32;i2++) if(i2>i1&&i2>i) { c=i*i; while(c){a=c%10;c/=10;flag[a]=a;} c=i1*i1; while(c){a=c%10;c/=10;flag[a]=a;} c=i2*i2; while(c){a=c%10;c/=10;flag[a]=a;} for(j=1;j<10;j++) {if (flag[j]!=0)t++; flag[j]=0; } if (t==9)printf("%d %d %d %d %d %d\n",i,i1,i2,i*i,i1*i1,i2*i2); t=0; } }

嗯,看了几天还是不明白~~~~我高兴得太早啦~~~高手帮忙写一下注解好吗?谢谢

2004-06-14 20:14
xyx
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-9
收藏
得分:0 
嗯,大家努力~~~谢谢你们啦

我是菜鸟我要拼!!!!!
2004-06-14 23:06
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
我写的,你有什么不懂可以提出来,我会回答的。但是你什么问题都提不出来,我也就什么也不用答了。

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-06-14 23:35
xyx
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-9
收藏
得分:0 

嗯,有很多呢:

一:t=0的作用是什么?

二:c=i*i;while(c){a=c%10;c/=10;flag[a]=a;}与 while(c=i*i){a=c%10;c/=10;flag[a]=a;}有什么不同,后者好像不行呢.

三:最后的那个for语句是干什么用的???

四:大侠你好像改名了是吗?上次帮我解题时好像是中文名的呢~~~


我是菜鸟我要拼!!!!!
2004-06-15 09:23
xyx
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-9
收藏
得分:0 

第二个问题好像懂了,在<<C程序设计(第二版)>>第111页有(如果我没理解错~~),其它的还是有劳高手了,谢谢


我是菜鸟我要拼!!!!!
2004-06-15 10:29
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

main() { int flag[10]={0},i,i1,i2,t=0,c,a,j ; //i,i1,i1就是要求的三个数

for(i=10;i<32;i++) for(i1=10;i1<32;i1++) if(i1>i) for(i2=10;i2<32;i2++) if(i2>i1&&i2>i) { c=i*i ; //平方 while(c) { a=c%10 ; c/=10 ; flag[a]=a ; } //取得每位的数字,并以该数作flag[]的下标,改更旗标数组 //当然,flag[a]=任意数 也可,这里只是起了个旗标的作用 c=i1*i1 ; while(c) { a=c%10 ; c/=10 ; flag[a]=a ; } c=i2*i2 ; //这里当然不能用c=i2*i2,c=i2*i2这样表达是一个常量,是个死循环。 while(c) { a=c%10 ; c/=10 ; flag[a]=a ; } //同理,只有1~9全齐,flag[]才能“满员” for(j=1;j<10;j++) { if(flag[j]!=0)t++; //计算flag[]不为零的个数 flag[j]=0 ; //flag清零,为下一个循环做准备 } if(t==9)printf("%d %d %d %d %d %d\n",i,i1,i2,i*i,i1*i1,i2*i2); t=0 ; //当t=9时,是所求的组合。t清零,为下一个循环做准备 } } //其实,这个程序可改之处很多,比如:只定义flag[9]就行,等等,这样写比较好理解一点

[此贴子已经被作者于2004-06-15 15:23:15编辑过]


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-06-15 15:19
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
这个程序是我写的,是不是我给你的,我就不知道了。

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-06-15 15:20
xyx
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-9
收藏
得分:0 

嗯,思路明了啦,谢谢你.


我是菜鸟我要拼!!!!!
2004-06-15 19:58
xyx
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-9
收藏
得分:0 
看了一下上次的贴子,是我记错了呢,这个程序就是knocker大侠写的,在此再次道谢(原谅我的马虎与婆妈~~~)

我是菜鸟我要拼!!!!!
2004-06-16 10:39
快速回复:请帮忙看看,谢谢
数据加载中...
 
   



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

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