草庐IT

C语言 —— do while循环语句用法与例题

liao-xin 2023-04-05 原文

do while 用法与例题


在c语言中出了经常使用的while循环,还有一种 do while 循环,下面会有do while循环的使用情况。

do while循环表达式:

do
	{
    语句块
	}
	
while(表达式);


注意!!! 
while();,的 英文分号 ;。
必须要加!!!

do...while 循环 是 while 循环的变体。在检查 while( ) 条件是否为真之前,该循环首先会执行一次 do { } 之内的语句,然后在 while ( ) 内检查条件是否为真,如果条件为真的话,就会重复do while这个循环直到 while( ) 语句为假,退出循环,输出结果。

例题1:用do-while输出1到10的值:

代码:

#include <stdio.h>
int main (void)
{ 
	int i = 1;	// 设置初始值,i为1。
	do			
	{
		printf("数值为:%d\n",i);
		i++;
	}
	while(i<=10);   //先执行语句,在判断结果。
	return 0;
}

解释:
首先是设置初始值为1。
1、输出数值为1,然后i++结算 结果 i 为2;
2、接着运行至while语句这里,进行判断,条件为真时,继续循环,输出 i = 2;再计算 i ++;
3、直到 i = 11 时,条件为假,跳出循环输出结果。

结果:

例题2:用do-while计算1加到100的值:

代码:

#include <stdio.h>
int main (void)
{
	int i;
	int sum;    //定义i 和 sum;
	i=1;
	sum=0;		//给 i 和 sum 一个初始值。
	do
	{
		//sum += i;
		sum = sum+i;   // 求和
		i++;
	}
	while(i<=100);     //判断条件 
	printf("1加到100的值为:%d\n",sum);
	return 0;
}

解释:
首先是设置初始值为i = 1;sum = 0 。
1、输出数值为1,sum等于0+1等于 1;然后i++结算 结果 i 为2;
2、接着运行至while语句这里,进行判断,条件为真时,继续循环;
3、当 i = 2;sum等于 之前计算的sum值 加 新的 i 的值,再计算 i ++;
4、直到 i = 100 时,条件为假,跳出循环输出结果。

结果:

例题3:用do-while计算水仙花(100到999之间各个位数的立方和等于本身数成为水仙花数):

代码:

#include <stdio.h>
int main (void)
{
	int i = 100;
	int a,b,c;
	do
	{	// 拆解百位十位各位
		a = i/100;		//百位
		b = i/10%10;	//十位
		c = i%10;		//各位
		if(a*a*a+b*b*b+c*c*c == i)
		{
			printf("水仙花数:%d\n",i);
		}
		i++;
	}
	while (i<=999);
	return 0;
}

解释:
首先是设置初始值为i = 100;
1、开始执行 i = 100;条件成立,执行语句块内容,拆解i的个位十位百位数,在用 if语句 判断是否成立,成立就输出 i;
2、判断 i 的值,拆分个位十位百位;a = i/100; //百位; b = i/10%10; //十位;c = i%10; //个位
3、重复上面的操作,直到 i>999 时,条件不成立,直接跳出do while循环,输出结果。

结果

有关C语言 —— do while循环语句用法与例题的更多相关文章

  1. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  2. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  3. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  4. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  5. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  6. ruby - 如何在 Ruby 中向现有方法定义添加语句 - 2

    我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca

  7. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  8. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  9. ruby - ruby 乘法语句中星号中断语法前的空格 - 2

    在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl

  10. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

随机推荐