前言:在程序设计中经常会碰到机械的重复某一个操作,如果我们可以通过某种循环语句来完成这种操作,将会极大提高程序的运算效率。基于这一出发点,我们接下来将介绍c编程中的循环语句。本节的语法不是难点,主要是灵活应用方面需要培养自己的思维。
主要包括:共goto、while、do_while、for
goto语句:其本质可以理解为跳转,跳转到某一标签下,所以goto语句在应用时,要定义标签例如:loop :然后语句goto loop;实现跳转,基于这一特性,可以使用goto实现循环,只需要在循环体的开始添加标签。
然而:goto语句在许多公司是禁用的,因为语句过于跳跃,不方便查看和理解,因此只做了解即可。
while(表达式):while语句首先会判断括号内表达式的真假,如果为真则执行下面的循环体,一般循环需要逻辑变量来达到循环结束的条件,不然会形成死循环。如为假则执行while语句之后的其他语句。
do_while语句:其在与while语句在形势上变现的不同主要体现在do while 语句其循环体放在前面,执行一次循环以后再进行判断while。在后续编程中这一逻辑判断 也是常用的。
for语句:其语法形式表现为for (初始条件;判断条件;执行条件),for语句其形式中的条件可以不描述在括号内,可以在其他地方进行说明。for(;;;)
本质的语句并不是难点,主要在灵活应用层面,接下来主要联系几个题加以提高。
使用以上三种语句分别实现水仙花数
#include<stdio.h>
int main()
{
#if 0
int Num = 100;
int one,ten,hund;
while(Num <= 999)
{
hund = Num / 100;
ten = (Num / 10) % 10;
one = Num % 10;
if(Num==one*one*one + ten*ten*ten + hund*hund*hund)
{
printf("%d\n",Num);
}
Num++;
}
#endif
int Num = 100;
int a,b,c;
#if 0
do
{
a = Num /100;
b = Num / 10 % 10;
c = Num % 10;
if (Num == a*a*a + b*b*b + c*c*c)
{
printf("%d\n",Num);
}
Num++;
}while(Num<=999);
#endif
for(Num = 100;Num<=999;++Num)
{
a = Num/ 100;
b = Num/ 10% 10;
c = Num% 10;
if (Num == a*a*a + b*b*b + c*c*c)
{
printf("%d\n",Num);
}
}
return 0;
}
2、判断两个数是否为素数
#include<stdio.h>
#if 0
int main()
{
int Num;
int i=2;
scanf("%d",&Num);
while(i<Num-1)
{
if(Num%i==0)
{
printf("No");
return 0;
}
++i;
}
printf("Yes");
return 0;
}
#endif
int main()
{
int Num=1;
int i=1;
for(Num = 2; Num <= 100; ++Num)
{
for(i=2;i<Num;++i)
{
if(Num%i==0)
{
break;
}
斐波那契数列前N项求和:
int main(void)
{
int Num1 = 1; //定义斐波那契数列的前两项
int Num2 = 1;
int Num3;
int i = 3; //让sum3从第三项开始加
int n,sum = 2;
scanf("%d",&n);
if (n == 1) //n<3的时候情况
{
sum = 1;
}
if(n == 2)
{
sum = 2;
}
for (i = 3; i <= n; ++i) //开始循环求和以及Num3的求解
{
Num3 = Num1 + Num2;
sum += Num3;
Num1 = Num2;
Num2 = Num3;
}
printf("sum = %d\n",sum);
}
问题反馈:如何找到多个数值中的最大最小值
最初思路:通过不断的if else将数字和max、min进行对比赋值
重复的对比工作考虑使用循环,但是循环执行的要有一个变化的量,而输入输出的判断条件无法选择,也就是说n1\n2\n3等之间没有联系,不能通过++i等操作,来变化。