c语言中do-while求和,C语言中的 while循环和do-while循环

初识循环

内容概要:

循环结构的基本原理

学会使用while循环和do-while循环

while循环的基本语法:

while(循环条件)

{

循环操作语句;

}

循环变量的三要素:

1.初值

2.判断

3.更新

一个实现while循环的简单案例:

将一句古诗:七月七日长生殿,夜半无人私语时。重复打印1000遍。

用我们原来打印方式1000遍显然太多。所以这里我们利用循环来编写这个程序。

int i = 1;       //循环变量的初值

while(i <= 1000)      //循环变量的判断

{

printf("七月七日长生殿,夜半无人私语时。第%d遍",i);

i++;      //循环变量的更新

}

程序解析:首先我们定义一个整型变量 i ,然后把1赋值给它。

当i <= 1000时,我们打印一次古诗词

打印一次之后我们将i的值自增一次(i++)

解析完后不难发现,i = 1时它满足小于1000,程序开始打印第一遍古诗,打印完之后i还要自增一次(i++)变成2,while会继续识别 i 是否满足条件,不难发现2也是满足 <=1000的条件,所以程序继续打印古诗,只是这次的 i 被赋的值是2,所以程序古诗的打印次数变为了第2次,这样的循环过程一直到第1000次的时候,它是最后一个满足条件的数字,打印完成之后 i 自增变为了1001不满足条件,程序结束,这句古诗刚好被成功打印了1000次。while循环是先判断条件,条件满足再去执行结果。

while循环的进阶案例:

1.使用循环计算1-1000的累加和,最后打印输出结果。

思考:根据循环的三要素写出大致框架,这里需要定义的变量有什么?

int i = 1;  //1-1000,循环变量的初值不难看出是1,最直白的由小到大,当然也可以是1000。

int sum = 0; //不难看出是要定义1-1000的累加和变量,但是为什么要给它赋值。(?)

while( i <=1000 ) //循环变量的判断,如果初值我们定为1000,那么这里就可以写成 i > 0或者i >= 1。(?)

{

i++;  //循环变量的更新,i++每次自身加上1,思考一下如果初值和判断按照上边的另一种写法,这里应该如何更新。(?)

sum = sum + i; //如何理解这里的表达式?

}

printf("1到1000的累加和为:%d\n",sum);

程序解析:定义变量,判断初值赋值给它,根据题意还需要定义一个累加总和的变量。为什么要给它赋值?

根据题意制定判断条件,这个不难看出来

循环变量的更新,i++保证了我们将1-1000之间的每个整数提取了出来,需要考虑的是怎么累加取得结果?

所以我们必须要把总和sum也参与进循环中,每经过一次循环, i 和 sum 的值都会发生变化(理解这里)由此实现1-1000的累加。

现在需要理解为什么要给 sum 赋值,它参与了循环,所以初值必不可少,并且0是不影响最终结果的初值(循环的三要素)

while循环需要注意的点:

1.while循环是入口条件循环,程序在进入循环体之前必须获取循环初值并判断书否符合循环条件,如果不满足则不会执行循环体。

2.循环体部分可以是以分号结束的简单语句,也可以是用花括号括起来的复合语句。

3.构建while循环时,必须要让测试表达的值有变化,且最终要为假,循环才会终止,如果判断条件一直为真,循环就不会终止(陷入死循环)。如下所示:

int sum = 1;

while(sum < 5)

{

printf("早上好!\n");

}

这里测试表达值没有任何变化(循环变量的更新),所以这个程序将会无限次打印“早上好!”(死循环)。

处理循环问题需要注意:

在不熟悉的条件下,背好循环变量的三要素,拿到一个题,我们首先审题确认什么可以拿来做循环变量(满足循环三要素的变量就可以拿来做循环变量)。熟悉之后再灵活运用,不需要硬套。如下题:

例:某交易网站2015年双十一的交易额为800亿,每年递增25%,问按此速度哪年的交易额能达到2000亿?用循环解决这个问题。

思考:我们在这里需要审题,题中的变量有哪些?,什么可以拿来做循环变量?

不难看出 , 我们需要声明的变量有年份和交易额。

哪个变量可以拿来做循环变量呢?套用循环变量的三要素一比对很容易看出,交易额是比较满足的,它有初值(800亿),有判断(上限2000亿),还有更新(每年递增25%),相对之下 年份就不满足三要素的条件。所以根据它的三要素我们很容易写出相应的程序。如下:

int year = 2015;  //声明年份

int num = 800;  //声明交易额

while(num < 2000)  //判断

{

num = num * 1.25 //交易额小于2000则递增25% 也可以写成num *= 1.25;也是num的更新

year++;  //每年都比之前多一年一年, 所以是year++。一直加到满足交易额到2000亿就退出循环。

}

printf("按此速度,到%d年交易额到2000亿。\n",year);

return 0;

需要多练习。一定要多练!多写!一言不合就写就对了!看都能看懂,主要是要会写!

再做一个题:用循环设计一个题,让用户输入整型数字,如果输入的数据类型正确,则重复提示输入,当用户输入的数字不是整型时。退出循环,并计算之前所输入的值的累加和。

思考:循环变量的三要素先找出来,明确初值在哪?(用户来输入),判断(不为整型),更新(如果满足条件则让用户重复输入,否则跳出循环),确认好后我们开始写:

int sum;   //定义初值

int num = 0;  //定义累加和,思考一下这里的赋值,之前有这样的例子

printf("请输入一个数字:");

int rum;              //为用户赋的初值定义一个变量,因为每次的初值都是不同的

rum = scanf("%d",&sum); //让用户赋初值(思考一下如果不给赋值会怎么样?)

while(sum == 1)  //考虑一下这里的判断条件为何要这么写(sum的值恒为真,为何恒为真?我们定义好了sum是整型,只要是整型我们就继续执行循环体)

{

printf("请输入下一个数字:");

rum = scanf("%d",&sum);  //若满足循环条件,那我们继续执行循环体,继续让用户赋值

num = num + sum;   //累加一次

}

printf("用户输入数据的累加和为:%d",num); //打印结果

return 0;

do-while循环的基本语法:

do{

循环操作

}while(循环条件);

do-while循环的特点:

先执行循环操作,然后看是否符合循环条件,符合就继续执行,否则循环退出。

它和while循环的区别就是,不管结果如何do-while都会先至少执行一次循环操作。而while会先判断条件再执行

例1:分析下面的代码:

例2:利用do-while结构打印菜单,如果你是一位君王,对于身旁的伴侣你希望?(这是个比较简单的练习,帮助我们加深理解这个循环结构。)

1.只要一个

2.两位以上的爱人

3.三千佳丽

如果输入1-3之外的整数,则提示只能选择1-3之间的数字。

如果输入1-3之间的数,则做出相应的提示

[size=14] int num; [/size]

//定义用户的选择

printf("性格测试:\n");

printf("如果你是一位君王,对于你身旁的伴侣你希望:\n");

printf("1.只要一个\n2.两位以上\n3.三千佳丽\n");

do{ //如果输入错误会一直执行循环,多理解这里的原理。

printf("请选择:");

scanf("%d",&num);

if(num < 1 || num > 3)

{

printf("只能输入1-3之间的数字,请重新输入。");

}

}while(num < 1 || num > 3); //理解为什么while取这个条件才执行循环

switch(num)

{

case 1:

printf("你真专一。\n");

break;

case 2:

printf("这样好吗?\n");

break;

case 3:

printf("死渣男,滚!\n");

break;

}

return 0;

本章小结:

循环的三要素:初值,判断和更新。while循环和do-while循环的使用:前者先判断条件真假再执行循环体,后者不管条件真假至少会先执行一次循环体。

循环的经典案例:重复打印,累加求和等要熟悉掌握。

问题总结:

本章对逻辑思维有一定要求,理论语法比较简单。但是循环的用途很广,所以还是要多做练习熟悉它的各种用法。 一串数字如何用循环把每个数单独提出来?

多写,多写,多写。一定要多写。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值