C语言的三大基本结构
引言
C语言中的三大结构分别是顺序结构、选择结构和分支结构。
1、顺序结构,指按照程序顺序执行;
2、选择结构,指根据判断结果选择分支方向;
3、循环结构,指有一个循环体,可以根据判断条件决定循环多少次。
目录
一、顺序结构
二、选择结构
1、用if语句实现选择结构
2、用switch语句实现多分支选择结构
三、循环结构
1、用while语句实现循环
2、用do···while语句实现循环
3、用for语句实现循环
一、顺序结构
顺序结构就是从头到尾一句接着一句的执行下来,执行完上一个语句就会自动执行下一个语句,是无条件的,不必做任何判断,直到执行完最后一句程序结束。
例:从键盘输入一个大写字母,要求改用小写字母输出。
#include<stdio.h> int main() {char x, y;scanf("%c", &x);if (x >= 'A' && x <= 'Z'){y = x + 32;printf("%c\n", y);}else{printf("this is a erro\n");}return 0; }
运行结果:
这段代码属于典型的顺序结构,定义一个字符型变量x和y,从键盘中读取x,如果x的值为大写字母,则根据大写字母和小写字母的ASCLL码相差32,将大写字母+32得到小写字母(存入字符变量y中),并输出y的值,程序结束;如果输入x的值不是大写字母而是其他值,则会进入else语句,输出:this is a erro,程序结束。
二、选择结构
选择结构就是到某个节点后,会根据一次判断的结果来决定之后程序向哪一个分支方向执行。
1、用if语句实现选择结构
if语句是指编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if语句的实现过程如下图所示。
if语句的一般形式: (1) if (表达式) 语句1 (没有else子句部分) (2) if (表达式) (有else子句部分)语句1else语句2 (3) if(表达式1) 语句1 (在else部分又嵌套了多层的if语句)else if(表达式2) 语句2... ...else if(表达式m) 语句melse 语句m+1
例:输入三个数a,b,c,要求按有小到大的顺序输出。
#include<stdio.h> int main() {float a, b, c, tmp;scanf("%f %f %f", &a, &b, &c);if (a > b) //判断a和b的大小{tmp = b; //借助变量tmp,实现变量a和变量b互换值b = a;a = tmp;} //互换后,a小于或等于bif (a > c) //判断a和c的大小{tmp = c; //借助变量tmp,实现变量a和变量c互换值c = a;a = tmp;} //互换后,a小于或等于cif (b > c) //判断b和c的大小{tmp = c; //借助变量tmp,实现变量b和变量c互换值c = b;b = tmp;} //互换后,b小于或等于cprintf("%5.2f %5.2f %5.2f\n", a, b, c); //顺序输出a,b,c的值return 0; }
运行结果:
在经过第1次互换值后,a<=b,经过第2次互换值后a<=c,这样a己是三者中最小的(或最小者之一),但是b和c谁大还未解决,还需要进行比较和互换。经过第3次互换值后,a<=b<=c,此时,a,b,c3个变量已按由小到大顾序排列。顺序输出a,b,c的值即实现了由小到大输出 3个数。
2、用switch语句实现多分支选择结构
switch语句是多分支选择结构,用来实现如下图所表示的多分支选择结构。
switch语句的一般形式如下:switch (表达式) {case 常量1 : 语句1case 常量2 : 语句2... ... ...case 常量n : 语句ndefault : 语句n+1 }
例:要求按照考试成绩的等级输出百分制分数段,A等为85-100分,B等为70-85分,C等为60-69分,D等为60分以下。成绩由键盘输入。
#include<stdio.h> int main() {char grade;scanf("%c", &grade);printf("Your score:");switch (grade){case 'A':printf("85-100\n"); break;case 'B':printf("70-84\n"); break;case 'C':printf("60-69\n"); break;case 'D':printf("<60\n"); break;default: printf("enter data error!\n");}return 0; }
运行结果:
等级grade 定义为字符变量,从键盘输入一个大写字母,赋给变量grade,switch 得到 grade 的值并把它和各case 中给定的值(A',B',’C,'D'之一)相比较,如果和其中之一相同(称为匹配),则执行该case 后面的语句(即 printf 语句)。输出相应的信息。如果输入的字符与'A',B',’C,‘D'都不相同,就执行 default 后面的语句,输出“enter data error!'的信息。注意每个case后面的语句中,最后都有一个break语句,它的作用是使流程转到switch语句的末尾,即结束switch语句。
三、循环结构
循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次,如下图所示。
1、用while语句实现循环
while语句可以简单记为:只要当循环条件表达式为真(即给定的条件成立),就执行循环语句。
while语句的一般表达形式:while(循环条件表达式) 语句
例:求1+2+3+···+100。
#include<stdio.h> int main() {int i = 1;int sum = 0;while (i <= 100){sum = sum + i;i++;}printf("sum=%d", sum);return 0; }
运行结果:
定义变量i的初值为1,sum的初值为0,进入循环体,第一次累加后,sum的值为1,加完后,i的值加1,为下次累加做准备,直至当i>100,条件表达式i<=100的值为假,循环体结束,输出1+2+3+···+100的累加和。
2、用do···while语句实现循环
除了while语句以外,c语言还提供了do···while语句来实现循环结构。如:
#include<stdio.h> int main() {int i = 1; //设定变量i的初值为1do //循环结构开始{printf("%d ", i++); //循环体 ,输出i的值,然后使i加1} while (i <= 100); //当i小于或等于100时,继续执行循环体return 0; }
它的作用是:执行(用do表示“做”)printf 语句,然后在 while 后面的括号内的表达式中检查i的值,当i小于或等于 100 时,就返回再执行一次循环体(prinff 语句),直到i>100 为止。执行此do…while 语句的结果是输出 1~100,共 100个数。
do···while语句的一般形式:
do语句 //循环体 while(表达式);
do···while语句的特点:先无条件低执行一次循环体,然后判断循环条件是否成立,也就是说do···while循环至少执行一次。
例:用do···while语句求1+2+3+···+100.
#include<stdio.h> int main() {int i = 1; //设定变量i的初值为1int sum = 0;do //循环结构开始{ sum = sum + i; //累加i++;} while (i <= 100); //当i小于或等于100时,继续执行循环体printf("%d\n", sum);return 0; }
运行结果:
3、用for语句实现循环
除了可以用 while 语句和do.while 语句实现循环外,C语言还提供了 for语句实现循环,而且 for 语向更为灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替 while 语句。其中,for循环的执行过程如下图所示。
for语句的一般形式:
for(表达式1;表达式2;表达式3)语句
括号中三个表达式的主要作用:
表达式1:设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值(如 i=1)。
表达式2:是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。
表达式3:作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。
例:用for循环语句求1+2+3+···+100.
#include <stdio.h> int main(void){int i = 0, sum = 0;for (i = 0, sum = 0; i <= 100; i++){sum += i;}printf("sum = %d.\n", sum);return 0; }
运行结果:
注意:通过上文不难发现,for循环语句、while循环语句和do···while循环语句之间是可以相互转换的,在选择使用什么循环语句时要根据实际情况选择让自己代码更加简洁易懂的,而且各个循环语句之间还可以进行嵌套使用。
C语言的三大基本结构相关推荐
- C语言程序设计三大基本结构之循环结构
目录 前言 ●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教! 文章目录 正文 1,while语句 2,do-while语句 3,for语句 for语句的特殊格式 : 三种循 ...
- C语言笔记第02章:三大基本结构
文章目录 :star: 第02章:三大基本结构 0.什么是语句 1.顺序结构 2.选择结构(分支语句) 2.1 if 语句 2.1.1 单分支 2.1.2 多分支 2.1.3 两个经典问题的思考 2. ...
- c语言cythe头文件,第5章 C语言序的基本结构.doc
第5章 C语言序的基本结构 第5章 C语言程序的基本结构 C语言程序是由若干个函数单元组成的,每个函数都是完成某个特殊任务的子程序段.组成一个程序的若干个函数可以保存在一个源程序文件中,也可以保存在几 ...
- ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...
Presentation on theme: "EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构:并用操作语义的方法描述对应的语义规则"- Pre ...
- Go 语言编程 — 高级数据类型 — 结构体
目录 文章目录 目录 结构体 访问结构体成员 向函数传递结构体 结构体指针 结构体标签(Struct Tag) 结构体 Golang 中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.与 ...
- c语言循环设计思想结构,C语言程序设计_05循环结构程序设计讲述.pptx
C语言程序设计_05循环结构程序设计讲述 第5章 循环结构程序设计5.1 while循环结构5.2 do-while循环结构5.3 for循环结构5.4 与循环有关的控制语句5.5 3种循环语句的比较 ...
- 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...
C语言练习题2(分支结构循环结构数组函数2009-2012二级真题). C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(" ...
- OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...
OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题? 问题1:结构体指针最开始怎么分配内存?用sizeof()是不能确定大小的. 问题2:给结构体变量分配之后,是否还要 ...
最新文章
- 是把计算机分析和恢复力实测,土木工程测试试题.docx
- FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析
- 遍历矩阵每一行穷举_[LeetCode] 566. 重塑矩阵
- c++可视化_数据可视化——如何让你的信息图被记住
- 高中上不上分数低学计算机,为什么到了高中,你的学习越来越差,越补越差?终于找到原因了...
- Xcode中C、C++、Object-C3种语言的混编
- 选择什么技术,才能不被淘汰?180 所高校在增设这个专业!
- IEC,ASTM,ISO,DIN,JIS等国际标准网站
- 关于一个类中方法的调用
- SCI 论文缩写使用心得
- 游戏软件性能测试报告,游戏性能测试及总结
- 查理芒格思维模型 —— 费马帕斯卡系统
- 怎么在电脑设置html,电脑怎么定时开机
- 使用Mailgun WordPress插件增加订户
- 8年一线.NET开发程序员求职
- 手把手教您用虹科MatrikonOPC UA数据平台掌握您所有的UA服务器
- Zabbix监控通过企业微信报警
- 合作对策模型的简单实现
- Vue.js实战梁笔记02(第3-5章)
- python爬取音乐排行_python爬取网易云音乐热歌榜实例代码
热门文章
- 大众标准化杂志大众标准化杂志社大众标准化编辑部2023年第12期目录
- 2021年中关村顺义园第三代半导体产业申报时间及奖励,高达5000万
- MaOEA-IBP:带有边界保护的基于指标的多目标进化算法
- miniblink控件JS和本地函数互相调用VisualFreeBasic例题
- 定投多年指数基金,看到这个结局,我的信仰崩塌了
- ai面试的优缺点_写给寒冬下的轻履历应届PM(面试准备篇)
- localStorage setItem getItem
- Python终将成为最火爆的编程语言,因为它是属于大众的
- Zynq UltraScale+ A53 Linux+R5裸机
- 利用Exceljs/file-saver实现纯前端的同一个sheet页实现导出多个表格,拼接