您的位置:首页 > 编程语言

关于do{}while()的代码讨论

2010-05-17 09:18 253 查看
呵呵,自从前一篇博文《我为什么不用do{}while() 》出来以后,果不其然,有网友开始PK,访问量是越来越高。呵呵,意料之外啊。
嗯,这中间说啥的都有。
不过,有位tq朋友(http://hi.csdn.net/WvW),应该说比较认真的,由于我文中说过,有谁有do{}while()无法改写为while的,可以发给我,我试着帮忙看看,看能不能改写。因为我这么多年,确实没有见过哪个代码只能用do{}while()无法用为while(){}的。
tq朋友就真的找段代码来,让我帮忙翻译成while()版。
这位tq朋友的问题是从CSDN的短消息发过来的,问题如下:

Code:

既然你回复了, 请你写出这个伪代码, 用你的while.

微软电源管理 PowerEnumerate(NULL, 要枚举类型, 子组, 子组设置, 索引号) 函数,

大致意思是, 你提供要枚举的内容<子组> 和 子组的<设置项目>, 都靠这个函数去枚举,

看起来就是个 2级目录结构.

NO_SUBGROUP_GUID

1.1 设置1

1.2 设置2

1.子组1

1.1 设置1

1.2 设置2

2.子组

2.1设置1

2.2设置2

现在有个"特殊设置集合", 他的子组名是: NO_SUBGROUP_GUID. 这个子组无法通过 PowerEnumerate 枚举到这个子组.

但是你指定 PowerEnumerate 的子组参数 为 NO_SUBGROUP_GUID, 你却可以枚举到他的设置集合.

/// 请你把下列伪代码用 while() {} 表示吧.

void printf_power_sheme()

{

GUID uuid_subgroup= NO_SUBGROUP_GUID;

int nIndex= -1;

do

{

/// 输出子组的名称 和 一些参数

/// ... 省略20行代码

/// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.

int nIndex_settings=0;

while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)

{

// 输出子组的设置项目名称. 和一些参数

/// ... 省略20行代码

nIndex_settings++

}

nIndex++;

}

while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS)

//枚举第nIndex个子组.

/// 你试试用你的 while () 结构写出来试试.

}

嗯,这是个问题,看起来结构蛮复杂的。我就试着给看看。嗯,我的修改方案如下:

Code:

void TONY_printf_power_sheme()

{

GUID uuid_subgroup= NO_SUBGROUP_GUID;

int nIndex= -1;

//do //by:Tony:注意,do没用了

while(1) //by:Tony:注意:改成while了。

{

/// 输出子组的名称 和 一些参数

/// ... 省略20行代码

/// 枚举 <当前子组> 的第 nIndex_settings个 设置项目.

int nIndex_settings=0;

while(PowerEnumerate(NULL, 枚举子组的设置, 子组uuid, &子组的设置uuid, nIndex_settings) == ERROR_SUCCESS)

{

// 输出子组的设置项目名称. 和一些参数

/// ... 省略20行代码

nIndex_settings++

}

nIndex++;

//by:Tony:注意:在这个点做判断跳出,没错吧?

//by:Tony:请注意,我判断语句取反了,原来是判断==继续,现在是判断!=跳出

if(PowerEnumerate(, 读取子组, ...., nIndex) != ERROR_SUCCESS) break;

}

//by:Tony:注意,这里被隐掉了

//while (PowerEnumerate(, 读取子组, ...., nIndex) == ERROR_SUCCESS) //枚举第nIndex个子组. /// 你试试用你的 while () 结构写出来试试.

/// by:Tony:我写出来了,呵呵。

}

喏,我的改版方案就这样,大家看看,是不是成功把do{}while()改成while(){}了?
欢迎继续讨论啊。
=======================================================

肖舸
QQ:712123
Email:tonyxiaohome@hotmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 do while