【零基础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);
}