C语言

您所在的位置:网站首页 c程序可以用几种方法实现循环结构 C语言

C语言

2024-07-09 20:41| 来源: 网络整理| 查看: 265

概念

在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构;

顺序结构,从头到尾一句接着一句的执行下来,直到执行完最后一句;

选择结构,到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行;

循环结构,循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。

 

但是三种结构并不是彼此孤立 循环中可以有顺序, 选择(分支).  顺序中可以有选择,可以有循环. 选择中也可以有顺序有循环. 一段程序代码往往是这三者相互结合组成的.

 

1.顺序结构

 C语言的顺序结构顾名思义, 就是程序自上而下执行, 没有分支,也没有循环.

 

#include int main(){ int a = 3, b = 2; int sum = a+b; printf("a+b=%d\n", sum); //输出a+b的和 return 0; }

像上述代码, 程序顺序执行求和a+b并输出, 没有循环也没有分支, 所以上述代码就是一个顺序结构.

 

2.选择(分支)结构

C语言选择结构用于判断给定的条件,根据判断的结果来控制程序的流程。

在C语言中, 选择结构有两种: 1. if-else语句,  2. switch-case语句;

1) if-else 语句

写法:

 

if(条件1){ //满足条件1执行此代码块 ... }else if(条件2){ //不满足条件1, 满足条件2执行此代码块 ... }else{ //即不满足条件1也不满足条件2 执行此代码块 ... }

举个栗子, 成绩评级.

 

#include int main(){ int score = 78; //模拟输入成绩 if (score >= 90){ //成绩 大于90 A printf("A"); }else if(score >= 80 && score < 90){ // 80-89 B printf("B"); }else if(score >= 70 && score < 80){ // 70-79 C printf("C"); }else if(score >= 60 && score < 70){ // 60-69 D printf("D"); }else{ //小于60 E printf("E"); } return 0; }

 

else if 可以有0个或多个,  else 只能有0个或1个.

如果我们只需判断学生是否及各, 那么我们就可以这样写:

 

if (score >= 60){ printf("及格"); }else{ printf("不及格"); }

当然也可以只有if() 没有else ,  只有if() 和 else if ()没有else.

2)switch-case 语句

在C语言中, 第二种分支结构就是switch-case, 只是用的地方不太多, 因为if语句可以轻松替代switch语句, 只是结构上没switch那么清晰.

语法:

 

switch (变量或表达式){ case 常量表达式1: 语句块1; break; case 常量表达式2: 语句块2; break; ...... case 常量表达式n: 语句块n; break; default: 语句块n+1; break; }

还是成绩评级的栗子:

 

#include int main(){ int score = 78; //模拟输入 switch(score / 10){ //case匹配的数据就是score/10的结果         case 10: case 9: printf("A"); break; case 8: printf("B"); break; case 7: printf("C"); break; case 6: printf("D"); break; default: printf("E"); break; } return 0; }

score/10 得到的整数就是那个阶段的成绩, 我们会发现case 10: 也就是100分匹配后面没有任何的操作, 最主要的是, 没有break;

在switch语句中, 如果case匹配到了语句, 那么后面的语句都会执行知道出现第一个break, 或者执行完成.

如果我们将上面代码中的break全部去掉.score还是78, 那么输出就会变成 CDE, 也就是匹配到7 然后输出7之后的所有语句,知道碰到break;

default相当于else, 其他所有不匹配的情况, 因为一般是放在最下面, 所以default后面的break可以不写.

 

重点:switch的条件只能是整型和字符型(其实就是字符的ascii码)或者这些类型的表达式,case匹配的只能是整型或者字符型常量或者这两个类型的常量表达式, 也就是case不能匹配变量.

 

3.循环结构

循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。

在C语言中有三种循环结构: for循环, while循环, do-while循环.

1) for循环

写法:

 

for(表达式1; 表达式2; 表达式3){ 循环体; }

语句1:初值表达式,常用于在循环开始前为循环变量赋初值 语句2:循环控制逻辑表达式,控制循环执行和结束的条件 语句3:循环变量修改表达式,常用于修改循环变量,使得结果趋向于循环结束条件.

举个栗子:

循环输出10个"hello world!!!"

 

#include int main(){ int i; for (i = 1; i for for (;l < r;){ }

for->while: 没有for循环那么清晰明了的知道循环次数.

while->for: 没有while循环那么简单易懂了.

所以while循环的一般用法是我们不太清楚循环在什么时候结束, 并且我们也不关心具体的循环次数的时候使用.

举个例子: 二分查找

 

#include int main(){ int a[10] = {12, 32, 34, 55, 76, 89, 99, 123, 345, 1234}; //递增的数组 int l = 0, r = 9, mid; int res = 345; //查找的目标 //二分查找位置 while(l res){ printf("太大\n"); }else{ printf("太小\n"); } }while(t != 0); return 0; }

虽然这个例子bug很多, 但是我们可以清晰的理解do-while循环的不同, 我们一开始并不清楚t的值, 当我们执行完循环体后才知道t的值,然后做判断.

 

 

三大循环总结:

for 循环: 在你很清晰明白这次循环需要循环多少次的时候推荐使用.

while循环: 在我们不太清楚循环在什么时候结束, 并且我们也不关心具体的循环次数的时候推荐使用.

do-while循环: 如果我们需要判断的内容必须要执行一遍循环体才能知道的话推荐使用.

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3