循环语句
《一》循环语句
一、while循环
1.流程图及循环说明
while(exp) //格式
{
exp2; //exp:循环判断语句
} //exp2:循环执行语句
由图及示例格式可知,当遇循环语句,则判断语句exp是否为真,如果exp成立,则执行语句exp2,循环往复,当某次exp判断为假时,则跳出循环;如果exp开始即不成立,则不执行循环语句。
2.简单使用
既然是简单使用,那我们就从最开始的打印来看,循环体判断初始时 i 被赋值为0,由调试可见,循环判断为 i < 10 ,当 i == 10时跳出循环,i从0开始至9,打印10次字符串"Hello world!"后跳转至程序结尾。
二、for循环
1.流程图及循环说明
for(exp1; exp2; exp4) //格式
{ //exp1:初始化部分,用于初始化循环变量
exp3; //exp2:条件判断部分,用于判断循环是否终止
} //exp4:调整部分,用于循环条件的调整
//exp3:循环语句
由图及示例格式可知,当进入循环时,首先执行exp1(初始化部分);初始化完成,其次执行exp2(条件判断部分),判断条件是否成立,<1>若成立,则执行exp3(循环内语句),循环执行完后执行exp4(调整部分),当变量调整完成后,继续执行exp2,<2>若不成立,则直接跳出循环,不执行循环语句。
2.简单使用
for循环的使用我们就从以下程序来了解了解,代码如以下代码和调试截图所示:
//打印 1 + 2 + 3 + ...... + n 结果
#include<stdio.h>
int main()
{
int n = 0;
int sum = 0;
if (scanf("%d", &n) && n > 0) //检查scanf是否输入正确
{
for (int i = 1; i <= n; i++) //循环体
{
sum += i;
}
printf("%d\n", sum);
}
return 0;
}
三、do while循环
1.流程图及循环说明
do
{
exp1; //exp1:循环语句
} while(exp2); //exp2:条件判断
有流程图及示例可知,当程序遇到do while循环体时,先执行语句exp2(循环语句),执行往后再执行exp2(条件判断),若条件成立,则继续执行exp1;若不成立则跳出循环体。
2.简单使用
同样,也利用do while 循环来答应上述 for 循环中示例的结果:
#include<stdio.h>
int main()
{
int n = 0;
int sum = 0;
if (scanf("%d", &n) && n > 0)
{
int i = 1;
do
{
sum += i;
i++;
} while (i <= n);
printf("%d\n", sum);
}
return 0;
}
四、循环中的continue与break
1.continue
continue作用:continue是用于终止本次循环(在本次循环中continue后边的代码不会再执行,而是直接跳转至循环体的判断部分)。由以下示例及截图可看见,当 5 == i 这个条件成立时,执行continue语句,跳过本次循环。在截图中可见,属于 i 为5这次字符串"Hello world!"并没有打印。
#include<stdio.h>
int main()
{
int count = 0;
if (scanf("%d", &count) && count > 0)
{
for (int i = 1; i <= count; i++)
{
if (5 == i)
continue;
printf("%d: Hello world!\n", i);
}
}
return 0;
}
2.break
break作用:直接终止break所在的循环。由下面的示例及其截图可看见,当 5 == i 这个条件成立时,执行break语句,终止循环。在截图中可见,当 i 为5及其后续属于 i 的字符串"Hello world!"并没有打印。
#include<stdio.h>
int main()
{
int count = 0;
if (scanf("%d", &count) && count > 0)
{
for (int i = 1; i <= count; i++)
{
if (5 == i)
break;
printf("%d: Hello world!\n", i);
}
}
return 0;
}
《二》n阶乘的计算
一、n阶乘与while循环
#include<stdio.h>
int main()
{
int n = 0;
int sum = 1;
if (scanf("%d", &n) && n >= 0)
{
int i = 1;
while (i <= n)
{
sum *= i++;//sum = sumn * i;
} //i++;
printf("%d! = %d\n", n, sum);
}
return 0;
}
二、n阶乘与for循环
#include<stdio.h>
int main()
{
int n = 0;
int sum = 1;
if (scanf("%d", &n) && n >= 0)
{
for (int i = 1; i <= n; i++)
sum *= i;
printf("%d! = %d\n", n, sum);
}
return 0;
}
三、n阶乘与do while循环
#include<stdio.h>
int main()
{
int n = 0;
int sum = 1;
if (scanf("%d", &n) && n >= 0)
{
int i = 1;
do
{
sum *= i++;
} while (i <= n);
printf("%d! = %d\n", n, sum);
}
return 0;
}