标题:前天下载的100题C经典,有些不懂...大家讨论下...
只看楼主
旭日潜龙
Rank: 1
等 级:新手上路
帖 子:798
专家分:0
注 册:2007-3-29
 问题点数:0 回复次数:10 
前天下载的100题C经典,有些不懂...大家讨论下...

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 20
#define LOOP 1

void main(void)
{
char digit[MAXSIZE];
int i, j;
int n;
char line[100];

printf("\nDirect Generation of All Subsets of a Set");
printf("\n=========================================");
printf("\n\nNumber of Elements in the Given Set --> ");
gets(line);
n = atoi(line); //将字符串转换成一个整数值

/* ---You'd better check to see if n is too large--- */

for (i = 0; i < n; i++) /* clear all digits to 0 */
digit[i] = '0';

printf("\n{}"); /* outpout empty set {} */
while (LOOP) {
for (i = 0; i < n && digit[i] == '1'; digit[i] = '0', i++)//红色的有甚么用啊??为什么要这样哦??
; /* find first 0 position */
if (i == n) /* if none, all pos. are 1 */
break; /* thus all elem. are in set*/
else
digit[i] = '1';/* now add one to this pos */

for (i = 0; i < n && digit[i] == '0'; i++)
; /* find first 1 position */
printf("\n{%d", i+1); /* show its numner and */
for (j = i + 1; j < n; j++) /* others */
if (digit[j] == '1')
printf(",%d", j + 1);
printf("}");
getch();
}
}

谁能说说上面的思想啊????
附上结果:


搜索更多相关主题的帖子: 经典 Set printf void 
2007-04-07 19:32
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-07 20:06
旭日潜龙
Rank: 1
等 级:新手上路
帖 子:798
专家分:0
注 册:2007-3-29
得分:0 
有点不同吧............

灌水只发表情!
2007-04-07 20:34
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 

哦,我没看仔细,看了结果显示就以为是那个利用2进制的题目了


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-07 20:44
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
虽然第一次没用,但第二次就有用了

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-07 21:06
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
000000
while 循环里第一次for没起什么作用
第二个foe统计0的个数在第一次循环里也没起啥作用
第三个也没起啥作用

应该还是根据2进制在输出

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-07 21:19
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
回复:(旭日潜龙)前天下载的100题C经典,有些不懂......

我看这个题目就写的不错,
要不你干脆把你的100算法给大家发出来吧.
先先谢谢你了
嘿嘿


2007-04-07 21:53
tvkl
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-4-7
得分:0 
确实是在根据二进制在输出。
while循环中的几个控制语句的作用:
第一个for循环判断是否需要进位
再下来if语句判断是否退出循环或者值加1
再下来的if定位到第一个1;
接下来的if语句从上面定位的1开始搜索所有的1,并输出对应的位置!

没有解决不了的问题,时间而已!
2007-04-07 23:15
tvkl
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-4-7
得分:0 
我也想要!
说实在的。这个二进制算法我也是第一次见,蛮有感触的!

没有解决不了的问题,时间而已!
2007-04-07 23:18
KJFY
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-3-26
得分:0 

在经典C语言有..
谢谢楼上各位的答复.....
其实这代码是1989年就写好了...才刚看到..惭愧啊...

2007-04-08 08:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-130018-1-1.html




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

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