问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VC#2005快速入门之使用do语句

发布网友 发布时间:2024-10-06 10:16

我来回答

1个回答

热心网友 时间:2024-10-06 10:32

  while和for语句都在循环开始的时候测试它们的布尔表达式 这意味着假如在首次测试时 布尔表达式就求值为false 那么循环主体一次都不会运行 do语句则不同 它的布尔表达式是在每次重复之后求值的 所以主体至少会执行一次

  do语句的语法如下(不要忘记最后的分号)

  do  statement  while (booleanExpression);

  如果循环主体由多个语句构成 请使用一个语句块 下面是在控制台上输出 ~ 的那个例子的do语句版本

  int i = ;  do  {   Console WriteLine(i);   i++;  }  while (i != );

  break和continue语句

  在前文我们曾用break语句来跳出switch语句 除此之外 还可以使用break语句来跳出一个循环 执行break之后 系统会立即终止循环 并从循环之后的第一个语句继续执行 在这种情况下 循环的 更新 和 继续 条件都不会重新判断

  与此相反 continue语句会造成当前循环结束 并立即开始下一次循环(在对布尔表达式进行重新求值之后) 下面是在控制台上输出 ~ 的那个例子的另一个版本 这一次将使用break和continue语句

  int i = ;

  while (true)  {   Console WriteLine( continue + i);   i++;   if (i != )    continue;   else    break;  }

  这段代码看起来让人非常难受 许多编程指南都建议小心使用continue 或者根本不要使用它 否则很容易造成难以理解的代码 continue的行为也令人捉摸不定 例如 假如在一个for语句中执行continue 那么会在运行了for语句的 更新 部分之后 才开始下一次循环

  在下面的例子中 我们将写一个do语句来将一个数字转换成字符串形式

  ·使用do语句

   在Visual Studio 中打开DoStatement项目 它位于My Documents文件夹下的\Microsoft Press\Visual CSharp Step by Step\Chapter \DoStatement子文件夹中

  选择 调试 | 开始执行(不调试)

  Visual Studio 将开始生成并运行Windows应用程序

  应用程序将显示一个窗体 其中包含两个文本框和一个Show Steps(显示步骤)按钮 在上方的文本框中输入一个正数(我们使用的算法还不支持负数) 然后单击Show Steps按钮 下方的文本框就会显示创建这个数字的字符串形式所需的步骤

  注意 这个简单的例子展示了如何使用do循环将数字转换成字符串 但要注意一点 Framework提供了Convert ToString方法来做同样的事情 在自己的应用程序中执行类似任务时 应该使用该方法

   作为一个例子 请在上方的文本框中输入 然后单击Show Steps按钮

  在下方的文本框中 将显示创建 的字符串形式所经历的步骤 如图 所示

  图 单击Show Steps按钮之后将显示具体步骤

   关闭窗口 返回Visual Studio 编程环境

   在 代码和文本编辑器 窗口中显示Form cs的代码

  找到showSteps_Click方法 该方法会在用户单击了Show Steps按钮之后开始运行

   该方法包含以下语句

  int amount = System Int Parse(number Text);

  steps Text = ;

  string current = ;

  do

  {

  int digitCode = + amount % ;

  char digit = Convert ToChar(digitCode);

  current = digit + current;

  steps Text += current + \r\n ;

  amount /= ;

  }

  while (amount != );

  注意 \r代表一个回车符 在多行文本框控件中输出文本时 需要同时输出一个回车符和一个换行符 才能跳到下一行 并使光标定位到行首 否则 以后输出的文本将出现在同一行上

  第一个语句使用System Int 类的Parse方法 将number文本框的Text属性中存储的字符串值转换成int值

  int amount = System Int Parse(number Text);

  第二个语句清除下方的文本框(称为steps)中显示的文本 这一次的做法是将Text属性设为一个空字符串

  steps Text = ;

  第三个语句声明一个名为current的字符串变量 并把它初始化为空字符串

  string current = ;       这个方法真正的工作是由do语句来执行的 它从第 个语句开始

  do  {      }  while (amount != );

  我们将利用整数算术操作符和取模操作符 使用 来反复除amount变量 每次获得的余数都是正在构造的字符串的下一个数位 最终 amount将缩减为 值 循环将结束 注意 循环主体至少会执行一次 假如用户输入的就是数字 这个 至少执行一次 的行为就正是我们所需要的

  do循环中的第 个语句是

  int digitCode = + amount % ;

  该语句声明一个名为digitCode的int变量 并把它初始化为以下表达式的结果

   + amount %

  这个表达式需要稍微解释一下! 的值是指字符 的值 在Windows使用的字符集中 该字符等于整数值 (每个字符都有它自己的惟一的字符代码 这是一个整数值) 类似地 的字符代码是 的字符代码是 以此类推

  amount % 的值是用 来除amount之后得到的余数 例如 假如amount包含的值是 那么 % 的结果是 ( 除以 的结果是商 余 ) 因此 假如amount等于 那么表达式 + amount % 就等同于 + 结果是 这是字符 的字符代码 要注意的是 +操作符在这里执行了一次隐式强制类型转换 它将 转换成整数值 使整个表达式能够求值

  do循环中的第 个语句是

  char digit = Convert ToChar(digitCode);

  该语句声明了一个名为digit的char变量 并把它初始化成Convert ToChar(digitCode)这个方法调用的结果 调用该方法 将返回与参数指定的字符代码对应的一个字符 换言之 Convert ToChar( + )的求值结果就是

  do循环中的第 个语句是

  current = digit + current;

  该语句将刚才计算出来的字符变量digit附加到字符串current之前 注意 该语句不能替换为current += digit 否则就会将digit附加到current之后

  do循环中的第 个语句是

  steps Text += current + \r\n ;

  该语句的作用是在Steps文本框的Text属性中附加另一个要显示的步骤

  do循环中的最后一个语句是

  amount /= ;

  该语句等同于amount = amount / ; 如果amount的值是 那么在运行上述语句之后 amount的值将变成 注意 每一次重复do语句 都会从amount中移除最后一个数位 并将那个数位附加到current字符串之前

  在最后一个练习中 将使用Visual Studio 调试器来逐步执行上述do语句 以帮助你理解它的工作过程

  ·逐步执行do语句

   在 代码和文本编辑器 窗口中找到showSteps_Click方法

   将鼠标移至showSteps_Click方法的第一个语句

  第一个语句是

  int amount = System Int Parse(number Text);

   右击第一个语句的任何地方 从弹出菜单中选择 运行到光标处

  Visual Studio 将生成并运行应用程序

   窗体出现后 在上方的文本框中输入 然后单击Show Steps按钮

  程序将暂停运行 Visual Studio 将进入调试模式 代码和文本编辑器 窗口左侧将出现一个黄箭头 标记出当前语句

   如果 调试 工具栏不可见 请显示它(选择 视图 | 工具栏 | 调试 ) 在 调试 工具栏上 请单击 断点 按钮旁边的下拉列表箭头

  随后会打开如图 所示菜单

  图 单击 断点 按钮旁边的下拉列表箭头

   从这个菜单中选择 局部变量

  随后会打开 局部变量 窗口 其中显示了当前方法中的局部变量的名称 值和类型 其中的amount是局部变量 注意 amount的值目前是 如图 所示

   单击 调试 工具栏上的 逐语句 按钮

  调试器将运行当前语句

  int amount = System Int Parse(number Text);

  在 局部变量 窗口中 amount的值将变成 黄箭头会指向下一个语句

   继续单击 逐语句 按钮

  调试器将运行以下语句

  steps Text = ;

  该语句不影响 局部变量 窗口的显示 因为steps是窗体的一个字段 而不是一个局部变量 黄箭头继续指向下一个语句

  图 局部变量 窗口

   继续单击 逐语句 按钮

  调试器将运行以下语句

  string current = ;

  黄箭头将指向do循环的起始大括号

   继续单击 逐语句 按钮

  黄箭头将指向do循环中的第一个语句 do循环包含它自己的两个局部变量 即digitCode和digit 注意 这些局部变量已经在 局部变量 窗口中显示 而且digitCode的值为

   继续单击 逐语句 按钮

  调试器将运行以下语句

  int digitCode = + amount % ;

  在 局部变量 窗口中 digitCode的值将变成 这是由于表达式amount % 的结果为 (amount的值为 ) 而 的字符代码是 ( + )

   继续单击 逐语句 按钮

  调试器将运行以下语句

  char digit = Convert ToChar(digitCode);

  在 局部变量 窗口中 digit的值将变成 注意在 局部变量 窗口中 char值是同时使用字符代码值(本例是 )和对应的字符形式(本例是 )来显示的 黄箭头将指向do循环的下一个语句

  注意 在 局部变量 窗口中 current变量的值是 (即为空)

   继续单击 逐语句 按钮

  调试器将运行以下语句

  current = current + digit;

  在 局部变量 窗口中 current变量的值将变成

   继续单击 逐语句 按钮

  调试器将运行以下语句

  steps Text += current + \r\n ;

  该语句将在steps文本框中显示文本 并后跟一个回车符和一个换行符 确保以后的输出将从文本框的下一行开始

  在 局部变量 窗口中 amount的值仍然为

   继续单击 逐语句 按钮

  调试器将运行以下语句

  amount /= ;

  在 局部变量 窗口中 amount的值将变成 黄箭头指向do循环的结束大括号

   继续单击 逐语句 按钮

  黄箭头将指向while语句

   继续单击 逐语句 按钮

  调试器将运行以下语句

  while (amount != );

  amount的值是 表达式 != 将求值为true 所以将进行下一次循环 黄箭头将跳回do循环的起始大括号

   继续单击 逐语句 按钮

  黄箭头将指向do循环中的第一个语句

   再单击 逐语句 按钮 次 观察 局部变量 窗口中的局部变量的值发生的变化 在 局部变量 窗口中 amount的值最终将变成 而current的值变成

  黄箭头将指向do循环的循环继续条件

  while (amount != );

  amount的值目前为 所以表达式amount != 求值为false do循环应该终止

   继续单击 逐语句 按钮

  调试器将运行以下语句

  while (amount != );

  如同我们预期的那样 dot循环终止 黄箭头移至showSteps_Click方法的结束大括号

   单击 调试 工具栏上的 继续 按钮

  窗体将出现 并显示为了创建 的字符串形式所经历的 个步骤 和

   关闭窗体 返回Visual Studio 编程环境

lishixinzhi/Article/program/net/201311/11749

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑显示器优泒,AOC,飞利浦哪个显示色彩较好 想买超薄的显示器,优派好还是飞利浦好? 优派和飞利浦哪一个更好用 我和我女友热恋两个月了,但是她总是嫌弃我。而且她专插本考上了本科... ...岁我喜欢一个女孩但不知道改制面和他说谁能帮帮我啊求求大家了 我... 我该怎么追她 谁能帮帮我 ...有能理解我的话的么,谁能帮我分析下我和他的现状, 头大,头发少,头顶尖适合发型? 大脸头发少的适合什么发型 头大脸圆,头发比较少柔软,剪什么发型会好看 在c#中,为什么定义部分方法时有的有分号,有的没有 快播播放器下了之后,怎么在搜索栏里打上电影的名字,按搜索按钮,一点反 ... 阳字成语有哪些 电信的无线上网卡包年的是不是一次性到账 ...朋友也买了一个电信无线上网卡,在他的笔记本上不管用,要在..._百... 我办的电信无线上网卡,目前卡里没钱停机了,这个月不想再用,可是今天次... 我的无线上网卡是电信包月80个小时不记流量的,在笔记本上会显示CDMA... 龙年赵姓男宝宝起名 龙年宝宝赵姓名字大全 投资分成协议书范本 in the “林” years,crop failures are common中的“林”是什 光纤接入网光接入网系统总体要求 一句话同学聚会感言(精选50句) 一建报名考试有哪些内容 我有灰色黄色黑色等各种颜色我的颗粒比较细我是我一般是薄片状,较... 滴滴滴吼什么歌曲 歌曲《找个朋友》歌词找个朋友,找个朋友,我们手拉手; 朋友你好,朋友你好... 有一首歌、歌词是这样的、中间部分。 倒数开始 滴答滴滴答滴滴答滴答滴... 陆小凤之金鹏皇朝游戏攻略 海子街镇历史沿革 沙地镇历史沿革 C#中如何解决"索引超出了数组界限"这个异常 谁能发份机械加工工艺过程卡和工序卡(cad版本的)啊,急用,谢谢了! 邮 ... 砂锅炖鸡怎样做好吃 骑马与砍杀套装找不到啊请教具体位置 荔枝怎么保存时间久?教你一招,轻松保存一周 在2000年冬买了一处独院,当时有房产证没过户,有买卖协议? 明日之后NPC甜品怎么送礼比较好_明日之后NPC甜品送礼指南 招行信用卡固定额度30000,临时额度4万!逾期3个月,银行说要依法诉讼 招商银行信用卡带临时额度欠款5万,逾期60天,银行打电话说一天最低还款... 招商银行信用卡固定额度一万,临时额度五千!逾期了,一个月多吧!中间还款... 8月份适合装修开工的黄道吉日有哪些 2023年8月1日安入户门好不好-2023年8月适合安门的日子有几天 ...频道放的一部日本儿童电影,两个小男孩收养一只流浪小狗,喂它鸵鸟... 关于滇红茶,你知道多少? 其实我爱你的各种语言写法,越多越好 在真人版 网球王子 最后一集中 龙马倒下的时候有一首关于朋友的插曲 跪 ... 网球王子真人版第2集最后的插曲是什么歌的求大神帮助 考研 高考哪个难 原厂正品NIKE AIR FORCE AF1情人节高帮情侣复古鞋多少钱?高分悬赏 nike2020情人节限定大概到手多少钱