当前位置: 首页 > news >正文

【零基础C语言】第三节 控制结构

【零基础C语言系列】

【零基础C语言】第一节 C语言概述+【数制进制码制】-CSDN博客

【零基础C语言】第二节 数据类型、运算符、表达式-CSDN博客

目录

1.三大基本结构的共同特点

2.多分支选择结构

一、顺序结构 

1.1 输入输出

(1)标准/格式化输入

(2)标准/格式化输出

(3)字符的输入/输出

1.2 算法

(1)一个程序应包括内容

(2)计算机科学家沃思:

(3)完整的程序设计

(4)计算机算法两大类别

☆ 代码练习题

二、选择结构

2.1 关系表达式

2.2 逻辑表达式

2.3 条件表达式

☆ 代码练习题

 2.4 if语句

2.5 switch语句

三、循环结构

        Bohra 和 Jacopini 提出了以下三种基本结构作为表示一个良好算法的基本单元:顺序结构、选择结构、循环结构。

算法的四种表示方式:自然语言,伪代码、流程图、N-S图

流程图

流程图

1.三大基本结构的共同特点

  • 只有一个入口和一个出口
  • 结构内的每一部分都有机会被执行到
  • 结构内不存在死循环(无终止的循环)
  • 由三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。
  • 由基本结构所构成的算法属于结构化的算法,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。
  • 只要具有上述四个特点的都可以作为基本结构。
  • 可以自己定义基本结构,并由这些基本结构组成结构化程序。

2.多分支选择结构

虚线框内的结构是一个入口一个出口,并且有上述全部的四个特点。由此构成的算法结构也是结构化的算法, 可以认为这是由三种基本结构所派生出来的。
根据表达式的值决定执行路线

一、顺序结构 

1.1 输入输出

第一节提到过

(1)标准/格式化输入

scanf("格式控制字符串",变量地址);

格式符数据类型说明
%d 
%i
十进制整数带符号(正数不输出符号)
%c一个字符单个字符
%s字符串以 null 结尾的字符数组
%u十进制整数无符号
%o八进制整数无符号,不输出前导符0

%x  %X

十六进制整数

小写字母      大写字母

%f单精度浮点数浮点数(固定小数点格式)
%lf双精度浮点数输出双精度浮点数 (与 %f 类似)
%e %E单精度浮点数以科学计数法输出浮点数(小写e或大写E)
%g %G单精度浮点数自动选择 %e 或 %f 中输出宽度较短的一种格式,不输出无意义的0
scanf("a=%d,b=%c,c=%c",&a,&b,&c);
int float 数据输入可用空格、换行、 Tab 键作分隔。
对于字符数据来说,空格、转移字符、换行均为有效字符。

(2)标准/格式化输出

printf("格式控制",输出列表)

附加格式说明符描述
%m数据输出的最小宽度。如果变量长度小于这个宽度,会在左侧填充空格
%-m数据向左对齐,即字符向左靠齐,右侧填充空格
%n对于浮点数,输出 n 位小数实数(如 %.2f 表示保留两位小数),截取 n 个字符
%.*s输出字符串时,截取前 n 个字符(如 %.5s 输出前 5 个字符)
注: %o %x 不能输出负数
visual6.0 C++ 编译器中 int 数据分配四个字节。

(3)字符的输入/输出

  • 字符输入 getchar(); /*只能用键盘输入一个字符*/
  • 字符输出 putchar(ch);
#include<stdio.h>
void main(){
    int c;
    c = getchar();
    while(c != EOF)  //EOF是一个字符常量 ,值为-1
    putchar(c);      //得到的字符通过putchar()输出到屏幕上
    c = getchar();   //读入下一个字符
}

1.2 算法

1)一个程序应包括内容

  • 对数据的描述:数据结构(data structure)
  • 对操作的描述:算法(algorithm)

2)计算机科学家沃思:

        数据结构 + 算法 = 程序

(3)完整的程序设计

数据结构+算法+程序设计方法+语言工具

       广义地说,为解决一个问题而采取的方法和步骤,就称为 算法 。对同一个问题, 可有不同的解题方法和步骤

(4)计算机算法两大类别

  • 数值运算算法:求数值解,例如求方程的根、求函数的定积分等。
  • 非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、 人事管理、行车调度管理等。

☆ 代码练习题

#include <stdio.h>
# define PI 3.14;
int main(){
    float r,C,S,V;
    int h;
    scanf("r=%f,h=%d",&r,&h);
    C = 2  * r * PI;
    S = r * r * PI;
    V = S * h;
    //输出保留两位有效数字
    printf("圆周长:C=%.2f \n圆面积:S=%.2f \n圆柱体积:V=%.2f",C,S,V);
    return 0;
}

#include <stdio.h>
#include "math.h"
int main(){
    int a,b,c;
    scanf("%d,%d,%d",&a,&b,&c);

    int check = b * b - 4 * a * c; 
    double x1,x2;
    if(check > 0){
        x1 = (-b + sqrt(check)) / (2 * a);
        x2 = (-b - sqrt(check)) / (2 * a);
        printf("x1=%.2f\n", x1);
        printf("x2=%.2f", x2);
    } else{
        printf("输入不合法,方程无意义");
    }
    return 0;
}

二、选择结构

2.1 关系表达式

自左向右  ;0为假,非0为真 

2.2 逻辑表达式

2.3 条件表达式

☆ 代码练习题

#include <stdio.h>

int main() {
    char c;
    scanf("%c", &c);

    //条件表达式 三目
    c = (c >= 'A' && c <= 'Z') ? (c + 32) : c;
    printf("%c", c);

}

 2.4 if语句

2.5 switch语句

三、循环结构

相关文章:

  • 012 rocketmq事务消息
  • 安当全栈式PostgreSQL数据库安全解决方案:透明加密、动态凭据与勒索防护一体化实践
  • 梯度下降法(Gradient Descent) -- 现代机器学习的血液
  • MySQL零基础教程12—聚合查询(聚合函数)
  • Go 语言环境安装
  • [预订酒店]
  • AI编程界的集大成者——通义灵码AI程序员
  • Linux与UDP应用2:简易聊天室
  • 利用出书策略结合定制开发开源AI智能名片S2B2C商城小程序获取私域流量的探索
  • 基于redis的位图实现签到功能
  • 委托者模式(掌握设计模式的核心之一)
  • 《操作系统 - 清华大学》 9 -1:进程调度:背景
  • 高频面试题(含笔试高频算法整理)基本总结回顾3
  • 零知识证明与 ZK Rollups 详解
  • 基于单片机的智能宿舍管理系统(论文+源码)
  • 如何让vllm使用modelscope而不是huggingface来下载模型?
  • C#光速入门的指南
  • XXL-JOB深度解析:新一代分布式任务调度解决方案
  • 分布式架构篇——分库分表与数据一致性保障
  • Educational Codeforces Round 175 (Rated for Div. 2)
  • 企业国际网站建设/2021年网络热点舆论
  • 深圳企业网站建设方案/百度小说排行榜前十名
  • 有谁做彩票网站吗/网站seo站群软件
  • 英文响应式网站建设/seo最新教程
  • 慈溪建设银行支行网站/优化二十条
  • Editplus做网站/百度搜索引擎关键词