C语言之循环结构

前言:在程序设计中经常会碰到机械的重复某一个操作,如果我们可以通过某种循环语句来完成这种操作,将会极大提高程序的运算效率。基于这一出发点,我们接下来将介绍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等操作,来变化。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值