C基础-分支和循环语句

这篇具有很好参考价值的文章主要介绍了C基础-分支和循环语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

c语言:结构化的程序设计语言。 包括:顺序结构,选择结构,循环结构

选择结构: 分支语句-if和switch

循环结构:循环语句while ,for, do while

c语言语句分为五类:1.表达式语句   2.函数调用语句   3.控制语句   4.复合语句  5.空语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(c语言支持三种结构:顺序结构、选择结构、循环结构),他们由特定的语句定义符组成,c语言有九种控制语句。

可分成以下三类:

    1.条件判断语句也叫分支语句:if语句、switch语句;

    2.循环执行语句:do while语句、while语句、for语句;

    3.转向语句:break语句,goto语句continue语句、return语句文章来源地址https://www.toymoban.com/news/detail-470486.html

if和else if语句:

#include <stdio.h>
// int main()
// {
//     3 + 5;
//     printf("hehe");
//     ;//空语句
//     return 0;
// }

// int main()
// {
//     int age = 0;
//     //输入
//     scanf("%d",&age);
//     if (age < 18)
//     {
//         printf("小学生\n");
//     } else
//     {
//         printf("长大了\n");
//     }

//     return 0;

// }

int main()
{
    int age = 0;
    //输入
    scanf("%d",&age);
    //<18青少年
    //18~30青年
    //31~50中年
    //51~80中老年
    //80~100老年
    //100+ 老寿星
    // if (age < 18)
    // {
    //     printf("青少年\n");
    // } else if (age>=18 && age <=30)
    // {
    //     printf("青年\n");
    // } else if(age>30 && age <=50)  
    // {
    //     printf("中年\n");
    // } else if (age>50 && age<=80)
    // {
    //     printf("中老年\n");
    // } else if (age > 80 && age <= 100)
    // {
    //     printf("老年\n");
    // } else
    // {
    //     printf("老寿星");
    // }

    // if(age>18)
    //     printf("成年\n");
    //     printf("找对象了\n");  if语句默认管理一条语句
    
    if(age>18)
    {
        printf("成年\n");
        printf("找对象了\n");  
    }
    return 0;
       
}

多层if判断陷阱:

int main()
{
    int a = 0;
    int b = 2;
    if(a==1)
    {
        if (b==2)
        {
            printf("hehe\n");
        } else
        {
            printf("haha\n");
        }
        
    }
    //打印空,都没有满足条件

    return 0;
}

switch条件判断语句:

//switch语句进行判断
int main()
{
    int day = 0;
    scanf("%d",&day);
    // switch(整型表达式)
    // {
    //     语句项
    //     //是一些case语句:
    //     case 整型常量表达式:
    //         语句
    // }
    switch(day)
    {
    case 1:
        printf("星期一\n");
        break;   //跳出分支
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    }
}
//在相同条件结果下不需要每个case都执行break
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch (day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("weekday\n");
        break;
    case 6:
    case 7:
        printf("weekend\n");
        break;
    default:
        printf("输入错误\n");
        break;
    }
}

练习题:求出m和n的值

int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:
        m++; //m=3 ,n=1
    case 2:
        n++; //m=3,n=2
    case 3:
        switch (n) //switch允许嵌套使用
        {
        case 1:
            n++;
        case 2:
            m++;//m=4,n=2
            n++;//m=4,n=3
            break;
        }
    case 4:
       m++; //m=5,n=3
       break;
    default:
        break; 
    }
    printf("m = %d, n = %d\n",m,n);
}

循环语句:for,while,do while

(1)while循环

// int main()
// {
//     //while语法结构
//     // while(表达式)
//     //     循环语句;
//     // int i =2;
//     // while(i)
//     //     printf("hehe\n");
//     int a = 0;
//     printf("%d",a);
//     return 0;
// }

//在屏幕上打印1到10
//break  终止循环,跳出循环
//continue
// int main()
// {
//     int i=1;
//     while(i <= 10)
//     {
//         if (i ==5)
//         {
//             //break; //1,2,3,4
//             continue; //1,2,3,4
//         }       
//         printf("%d\n",i);
//         i++;
//     }
//     return 0;
// }

// int main()
// {
//     int n = 1;
//     while(n <= 10)
//     {
//         if (n == 5)
//         {
//             continue;//跳过本次循环continue后边的代码,while循环的判断部分
//         }
//         printf("%d",n);      
//     }
//     return 0;
// }

int main()
{
    int ch = getchar(); //A
    printf("%c\n",ch); //A
    putchar(ch); //打印字符

    return 0;
}

int main()
{
    int ch = 0;
    //EOF - end of file  文件结束标志
    //#define EOF  (-1)
    //在函数读取失败的时候返回了EOF
    //sacanf函数读取成功,返回的是读取到的数据的个数
    //读取失败返回EOF
    //getchar读取成功返回字符的ASCII值
    //读取失败返回EOF
    // ctrl+Z  -回让sacnf 或者getchar 返回EOF
    while ((ch = getchar() != EOF))
    {
        putchar(ch);
    }
    return 0;
    
}

int main()
{
    //123456
    char password[20] = {0};
    printf("请输入密码:>");
    scanf("%s",password);
    printf("请确认密码(Y/N):");
    char input = 0;
    //scanf("%c",&input);
    //把\n处理掉
    //getchar(); //n

    //清理掉缓冲区中剩余的数据
    // while(getchar() != '\n')
    // {
    //     ;
    // }

    // 清空缓冲区
    fflush(stdin);   //stdin 清空输入缓冲区,尽量少用,达不到效果,在新版的vs上这个函数功能被取消了
    input = getchar();
    if('Y' == input)
    {
        printf("确认成功\n");
    } else 
    {
        printf("确认失败\n");
    }

    return 0;
}

//只打印数字
int main()
{
    char ch = '\0';
    while ((ch = getchar()) != EOF)
    {
        if(ch < '0' || ch > '9')
        {
            continue;
        } else
        {
            putchar(ch);
        }

        return 0;
    }
}

(2)for循环

//for循环
// int main()
// {
//     int i = 1; // 1初始化变量值

//     while(i<=10)  // 2判断
//     {
//         printf("%d",i);
//         i++; // 3调整
//     }

//     return 0;

// }

//for循环语法
//for (表达式1;表达式2;表达式3)
///    循环语句:

int main()
{
    int i = 0;
    for(i=1;i<=10;i++)
    {
        if(i ==5)
        {
            //break;
            continue;
        }
        printf("%d",i);
        printf("hehe\n");
    }
    return 0;

}
// int main()
// {
//     int arr[10] = {1,2,3,4,5,6,7,8,9,10};

//     int i =0; //[0,10)
//     //初始化和调整的省略就是啥都不做
//     //判断部分省略了,意味着判断上恒为真的
//     for(i = 0;i < 10;i++)
//     {
//         printf("%d\n",arr[i]);
//     }
//     return 0;
// }

// int main()
// {
//     int i = 0;
//     int j = 0;
//     for (i = 0; i<4;i++)
//     {
//         for(j=0;j<4;j++)
//         {
//             printf("hehe\n");
//         }
//     }
//     return 0;
// }
// int main()
// {
//     int x,y;
//     for(x = 0,y = 0;x<2 &&y<5; ++x,y++)
//     {
//         printf("hehe\n");
//     }
//     return 0;
// }

// int main()
// {
//     int i = 0;
//     int k = 0;
//     for(i = 0,k=0;k=0;i++,k++)  //判断为flase 不进行下一步
//     {
//         k++;
//     }
//     return 0;
// }

// do while()循环
//do while 循环的语法
// do
// {
//     循环语句;
// } while (表达式);

//使用do while语句打印1~10

// int main()
// {
//     int i = 1;
//     do
//     {
//         if(i ==5 ){
//             //break;
//             continue;
//         }
//         printf("%d\n",i);
//         i++;
//     } while (i<=10);
    

//     return 0;
// }

// 计算 n的阶乘
// 5! = 1*2*3*4*5
// n! = 1~n 累积相乘
//不考虑溢出的情况
// int main()
// {
//     int n = 0;
//     scanf("%d",&n);
//     int i = 0;
//     int ret = 1;
//     for(i=1;i<=n;i++)
//     {
//         ret = ret*i;
//     }
//     printf("%d\n",ret);
//     return 0;
// }

//计算 1!+2!+3!... + 10!
int main()
{

    int n = 0;
    int i = 0;
    scanf("%d",&n);
    //int n = 10;
    int sum = 0;
    int ret  = 1;
    for (int i=1;i<=n;i++)
    {
        ret = ret*i;
        sum +=  ret;
    }
    printf("%d\n",sum);
    return 0;
    
}

//在一个有序数组中查找具体的某个数字n
int main()
{
    // int arr[] = {1,2,3,4,5,6,7,8,9,10}; //升序
    // int k = 7;
    // int i = 0;
    // for (i = 0; i<10;i++)
    // {
    //     if(arr[i] == k)
    //     {
    //         printf("找到了,下标是:%d\n",i);
    //         break;
    //     }
    // }
    // if(i == 10)
    // {
    //     printf("找不到了\n");
    // }

    //折半查找算法
    //二分查找算法
    //1确定被范围的左右下标left、right
    //根据left和right,确定中间元素的下标mid
    //根据mid锁定的元素,和查找的元素比较,确定新的查找范围。left和right
    int arr[] = {1,2,3,4,5,6,7,8,9,10}; //升序
    // printf("%d\n",sizeof(arr)); //计算数组的总大小,单位是字节
    // printf("%d\n",sizeof(arr[0])); //4  求一个元素的大小
    // printf("%d\n",sizeof(arr) / sizeof(arr[0]));

    int k = 7;
    int sz = sizeof(arr) / sizeof(arr[0]);
    //1
    int left = 0;
    int right = sz-1;
    int flag = 0;
    //2
    
    while(left <= right){
        int mid = (left + right)/2;
        if(arr[mid] == k)
        {
            printf("找到了,下标是%d\n",mid);
            flag = 1;
            break;
        } else if(arr[mid] < k)
        {
            left = mid +1;
        } else
        {
            right = mid -1;
        }
        if (flag == 0)
        {
            printf("没找到\n");
        }
    }
    

    return 0;
    
}
#include <string.h>
#include <stdlib.h>
//#include <windows.h>
//Sleep需要一个windows.h的头文件
//编写代码,演示多个字符从两端移动,向中间汇聚
int main()
{
    char arr1[] = "welcome to school!";
    char arr2[] = "##################";
    int left = 0;
    int right = strlen(arr1)-1;

    while (left<=right)
    {
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s\n",arr2);
        //Sleep(1000);//单位是毫秒
        system("clear");  //system函数可以执行系统命令,cls是清理屏幕
        left++;
        right--;
    }

    return 0;
    
    
}

//编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序)
int main()
{
    int i = 0;
    char password[20] = {0};
    for(i=0;i<3;i++)
    {
        printf("请输入密码:>");
        scanf("%s",password);
        //判断密码是否真确
        //两个字符串比较相等是不拿使用==,应该使用strcmp库函数
        //if(password == "123456") 错误
        //strcmp返回0表示两个字符串相等
        //strcmp返回>0表示第一个字符串大于第二个字符串
        //strcmp返回<0表示第一个字符串小于第二个字符串
        if(strcmp(password,"123456") == 0) //strcmp函数需要string.h库
        {
            printf("登录成功\n");
            break;
        } else
        {
            printf("密码错误\n");
        }
    }

    //1 2
    if(i == 3)
    {
        printf("退出程序,登录失败\n");
    }

    return 0;
}

//goto语句

// void test()
// {
// flag;
//     printf("test\n");

// }
// int main()
// {
// again:
//     printf("hehe\n");
//     printf("hehe\n");
//     printf("hehe\n");
//     printf("hehe\n");
//     goto again;
//     //goto flag; //goto语句只能在一个函数内部跳转,不能跨函数跳转

//     return 0;
// }

//关机程序
// 1.程序运行起来后,一分钟内电脑关机
//2. 如果输入:我是猪,就取消关机
int main()
{
    char input[20] = {0};
    //程序倒计时关机
    system("shutdown -s -t 60");
again:
    printf("请注意,你的电脑在一分钟内关机,如果输入:我是猪,就取消关机\n");
    scanf("%s",input);//输入
    if(strcmp(input,"我是猪")== 0)
    {
        system("shutdown -a");
    } else
    {
        goto again;
    }


    return 0;
}

到了这里,关于C基础-分支和循环语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理 Paddle NLP - 结构化数据问答-理论

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月11日
    浏览(60)
  • 数据管理系统-week6-结构化查询语言(SQL)简介

    Structured Query Language(SQL),本节课内容比较轻松,主要介绍了SQL的结构化查询语言,简单介绍的一些SQL的特性,功能,格式化等内容 •由IBM在20世纪70年代中期开发和实施 •最初称为SEQUEL(结构化英语查询语言) •首次实施:IBM的SYSTEM R(DB/2,UDB)、Oracle SQL •1986年的第一个

    2024年01月16日
    浏览(47)
  • 三、计算机理论-关系数据库-结构化查询语言SQL

    SQL 概述 是一种介于关系代数与关系演算之间的语言,现成为关系数据库的标准语言 特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(直接使用或者嵌入高级语言使用)、语言简洁,易学易用。 四大功能如下: SQL功能 动词 数据查

    2024年01月24日
    浏览(55)
  • 基于自然语言处理的结构化数据库问答机器人系统

      完整代码下载:https://download.csdn.net/download/andrew_extra/88614388         知识库,就是人们总结出的一些历史知识的集合,存储、索引以后,可以被方便的检索出来供后人查询/学习。QnA Maker是用于建立知识库的工具,使用 QnA Maker,可以根据 FAQ(常见问题解答)文档或者 U

    2024年02月04日
    浏览(52)
  • Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)

    大语言模型 (Large Language Models, LLMs) 在不同领域都表现出了优异的性能。然而,对于非AI专家来说,制定高质量的提示来引导 LLMs 是目前AI应用领域的一项重要挑战。现有的提示工程研究已经提出了一些零散的优化原则,也有些研究设计了基于经验的提示优化器。然而,这些研

    2024年03月11日
    浏览(114)
  • 结构化数据、非结构化数据、半结构化数据

    结构化的数据一般是指可以使用关系型数据库表示和存储,可以用二维表来逻辑表达实现的数据。例如:需要多少个属性,每个属性什么类型,每个属性的取值范围等等,类似下图所示, 提前定义好了一个二维矩阵的元数据 ,包含有列名称、列的类型、列的约束等:   可见

    2024年02月09日
    浏览(62)
  • 考研C语言刷题基础篇之分支循环结构基础(二)

    目录 第一题分数求和  第二题:求10 个整数中最大值 第三题:在屏幕上输出9*9乘法口诀表 第四题:写一个代码:打印100~200之间的素数  第五题:求斐波那契数的第N个数 斐波那契数的概念:前两个数相加等于第三个数 斐波那契数的公式: 第六题:汉诺塔游戏  思路:  1

    2024年01月22日
    浏览(51)
  • 第五章 结构化设计

    一种软件开发活动,定义实现需求规约所需的软件结构。 结构化设计分为: (1)总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。 (2)详细设计:详细描述模块。 体系结构设计(MSD) 接口设计 数据设计 实现软件设计的目标对结

    2024年02月08日
    浏览(57)
  • elasticsearch结构化查询

    在上一篇中我们介绍了DSL相关的知识,接下来我们将会学习elasticsearch的结构化查询,同时也实践一下上一篇的DSL的查询用法 从《Elasticsearch权威指南》上摘取部分解释如下: 从上面的定义我们可以看出来结构化查询最重要的就是是否匹配么人并不是很关心相关性和分值计算。

    2024年02月01日
    浏览(45)
  • WPF 界面结构化处理

    WPF 框架是开源的,但是不能跨平台,可以使用MAUI,这个框架可以跨平台,WPF源码可以在github上下载,下载地址:https://gitbub.com/dotnet/wpf。 框架结构 如图 XAML:eXtensible Application Markup Language的英文缩写,相应的中文名称为:可扩展应用程序标记语言。 命名空间 默认 映射:x/

    2024年02月13日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包