C|do while的作用域和应用场景

do while语句是一个循环构造,其工作方式与while循环类似,只是该语句总是至少执行一次。执行语句后,do while循环检查条件。如果条件的计算结果为true,则执行路径跳回do-while循环的顶部并再次执行。

实际上,do while循环并不常用。将条件放在循环的底部会模糊循环条件,这可能会导致错误。因此,许多开发人员建议避免do-while循环。

do while的使用频率虽然比while循环和for循环要低,但也有其适用场景,可以让代码更简洁。

1 变量作用

do…while在条件表达式中的作用域需要在do while的大括号{}外(C语言使用{}定义语句块),也就是说,while()中使用的变量不能在do{}内定义,由此,其代码块的封装性比while循环要弱。

#include int main(){ int x = 0; // while()中使用的x 需在do while前声明 do { printf( “Hello, world!” ); } while ( x != 0 ); getchar();}

2 应用场景

2.1 用户交互

#include /* printf, scanf, puts, NULL */#include /* srand, rand */#include /* time */int main (){ int iSecret, iGuess; /* initialize random seed: */ srand (time(NULL)); /* generate secret number between 1 and 10: */ iSecret = rand() % 10 + 1; do { printf (“Guess the number (1 to 10): “); scanf (“%d”,&iGuess); // 如果不使用while(),此行代码要写两次 if(iSecretiGuess) puts (“The secret number is higher”); } while(iSecret!=iGuess); puts (“Congratulations!”); return 0;}

以下是类似的用户交互情形

#include int main (){ int c; puts (“Enter text. Include a dot (‘.’) in a sentence to exit:”); do { c=getchar(); // 如果不使用do while,则此行代码要写在while()内或写两次 putchar (c); } while(c != ‘.’); return 0;}

2.2 读取文件

#include int main (){ FILE *fp; int c; int n = 0; fp = fopen(“file.txt”,”r”); if(fp == NULL) { perror(“打开文件时发生错误”); return(-1); } do { c = fgetc(fp); // 也是一种交互的方式,上面实例也是键盘输入,这里是从磁盘获取数据 if( feof(fp) ) break ; printf(“%c”, c); }while(1); fclose(fp); return(0);}

do while控制结构常用于输入一个字符做判断的情形:

char c;do{ // do while控制结构常用于输入一个字符做判断的情形int number;printf(“input number to look for:”);scanf(“%d”,&number);//search(number,num,name);printf(“continue ot not(Y/N)?”);fflush(stdin);scanf(“%c”,&c );}while(!(c==’N’||c==’n’));

按条件输入时,do while用起来更自然:

do{ printf(“Enter n(1–15):”);//要求阶数为1~15 之间的奇数 scanf(“%d”,&n);}while( ! ( (n>=1) && ( n <= 15 ) && ( n % 2 != 0 ) ) );

做菜单设计与用户交互时,通常也使用do while。

-End-

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月13日
下一篇 2022年6月13日

相关推荐

  • 你们遇到过的什么惊悚场面?

    人活一辈子,每个年龄段都有烦脑。一,儿童时期,父母管着,不自由。二,青少年时期,读书学习,伤精废神,为完全消费人群,经济来源全靠父母供给,又苦又烦,读书考试也不轻松。三,参加工作,…

    2022年7月22日
  • 5G扬帆 激活百变新消费

    来源:国际商报 原标题:5G扬帆 激活百变新消费 今年,中国5G商用发牌迎来3周年。3年来,中国在网络覆盖、终端、用户规模等方面发展迅速,为新业态新模式发展提供了强大的技术支撑,带…

    2022年7月14日
  • 当牛皮吹到不可收拾,新造车该如何收场?

    车东西(公众号:chedongxi) 作者| 昊晗 编辑| 晓寒 上汽和阿里一起造的智能电动汽车——智己L7,还没交付就陷入了用户风波。 就在最近,智己L7的百余位首批预定车主发布…

    2022年6月16日
  • 618卖得最火爆的安卓手机,我打赌你猜不到

    要说618卖的最好的手机肯定是苹果,年年如此,如果华为麒麟还正常的话,可能就是华为了,能打败苹果的只有华为了,但是我相信在以后我们国产迟早还会崛起的。 那么618卖的最好的安卓手机…

    2022年6月23日
  • 腾讯解套新东方:感谢抖音

    新东方教师董宇辉在抖音卖货,大概没想到会突然爆火; 俞敏洪布局直播电商刚打开局面,大概也没想到新东方股价翻盘后,抢先出货的是腾讯。 据港交所披露文件,腾讯控股在6月15-16日出售…

    2022年6月22日
  • 用EXCEL自动测算股票交易佣金

    前几天有人在问我要EXCEL自动测算股票交易佣金,因为每个人的佣金是不一样的,真的没法一个个私聊回复了,想着授人以鱼不如授人以渔,干脆整个教程吧。反正其实也不难搞,基本上大家一看就…

    2022年8月14日
  • 「中山医“声”」秋季怎样防晒与护肤,4点知识要记牢

    目前正值夏秋交替季节,气温却反升不降,持续的高温预警提示炎热感还会进一步升级,“秋老虎”有再度“出山”的趋势,“秋季防晒”又成了大家关注的话题。说到“秋季防晒及护肤”,具体有哪些需…

    2022年8月27日
  • 有小额贷款记录能贷款买房吗 这些内容要看完!

    在如今,有的人会经常在网上申请小额贷款,一般来说,如果有产生逾期记录,或者贷款记录太多,会影响到个人的信用,那么有小额贷款记录能贷款买房吗?下文就来带大家了解一下。 用户名下有银行…

    2022年10月17日
  • 数字人民币APP上线新功能 可随用随充

    【记者 于晗】8月23日,数字人民币(试点版)APP更新了版本,主要内容为“数字人民币支付服务升级,钱包添加银行卡,随用随充更便捷”。 根据数字人民币(试点版)APP文字介绍,“随…

    2022年8月29日
  • web开发之-前端css(6)

    css除了用来设置样式外,还可以设置各种特效,我们常用到的特效有两种:过渡和动画,过渡需要响应事件更改样式属性来触发,而动画,不需要响应事件就可以执行,下面我们看下,这两种实现的方…

    2022年6月14日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息