一、循环的用途
使用到循环的应用场景:生活中,常常遇到需要重复处理的问题:如求30个整数的和,检查50个学生的成绩是否及格等,解决这些问题需要重复执行n个程序段才可以完成,而循环结构正可以解决这些问题。
循环语句:用于重复执行某条语句(循环体)的语句,
循环语句的三大特点:
①循环变量的初始化;
②循环终止条件;
③循环变量的变化。
C语言中的循环语句,共有四种:while 、do…while、for、goto。
二、while循环概述
while语句的一般形式:
while(表达式){
循环体语句;
}
while语句的运行工程:先判断表达式的值,表达式的值只有“真”和“假”两种值,若为真,则执行循环体语句;若为假,则不执行循环体语句。
可以这么简单地理解:只要当循环条件为真(即给定的条件成立),就执行循环体语句。
三、while的经典例子
理解知识就从最经典的例子开始学习,开始解剖式的学习吧!
【经典】求1+2+3+…+100 = ?
解决思路:这是一个累加的问题,分析累加的规律,每次累加的数都是前一个数加1,所以只需要上一个数i加1,便可得到下一个数,用while语句进行累加即可完成。
大致思路清晰,开干!
#include <stdio.h>
int main()
{
int i = 1, sum = 0;
while(i <= 100){
sum = sum + i;
i ++;
}
printf("sum=%d\n", sum);
return 0;
}
运行结果:
注意事项:
①不要忽视给循环变量i,sum赋初值,否则i,sum的初始值会被随机赋值,
②不能缺少了循环的结束条件,即i<=100;
③不能缺少了循环变量的变化,即循环变量i自增(i++)。
这三点也正好对应了文章开头所讲的循环三大特点。
四、while语句的例题
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
辗转相除法
举个具体的例子,输入49,35;
49 % 35 = 1……14
35 % 14 = 2……7
14 % 7 = 0
而7正是49和35的最大公约数;
##include <stdio.h>
int main()
{
int n, m, r, p, temp;
printf("Please input n,m:\n");
scanf("%d%d", &n, &m);
if(m > n)
{
temp = n;
n = m;
m = temp;
}
p = m * n;
while(m != 0){
r = n % m;
n = m;
m = r;
}
printf("最大公约数%d\n",n);
printf("最小公倍数%d\n",p/n);
return 0;
}
运行结果:
分析:先把n作为大数,m作为小数,若m大于n,这=则对调位置;n 对 m取余,将 n % m 得到的余数作为下一次运算的小数m,而m作为n下一次运算的大数,经过循环,从而得到m=0时,停止循环。