C语言程序是一种程序化程序,也就是说,可以用C语言程序来解决的问题,都可以分解成相互独立的几个部分,每个部分都可以通过简单的语句或结构来实现。一般而言,对于结构化的程序,一个完整的算法可以用“顺序结构”,“分支结构”和“循环结构”的有机组合来表示。
(一)----------顺序结构
也就是一种简单的线性结构,很好理解,执行顺序从上到下执行,也就是A—B—C。(指令A,指令B,指令C可以是一条指令。也可以是多条指令。
(二)----------分支结构(也可以叫判断结构)
特点:程序在执行时,对算法表现出来的某些功能,在程序中不一定都会执行,而是根据条件的不同选择执行不同的功能。
实现分支结构的主要包括“if结构”和“switch结构”
(1)—— if 结构
if结构是常用的一种分支结构,该结构最多只能构成一个二叉结构,即对任何判断条件,该结构只提供两种不同的选择,程序会根据判断条件的不同,选择其中一个执行。
if 结构包括 if 语句,if……else 语句和 if 语句的嵌套
2.1.1 if语句
if语句是最简单的一种但分支结构,其一般形式为:
if(<表达式>)
<语句A>
<语句A>一般为条件表达式或逻辑表达式。
if语句的结构功能是:先判断<表达式>的逻辑的值,若该逻辑为“真”(在C语言中,0为假,非零数为真),则执行<语句A>,否则,什么也不执行。
注意:if语句中的<语句A>一般情况下都是以复合语句的形式出现,这个时候,就需要用一个花括号把其全部括起来,花括号是“{}”。但是如果只有一条语句,则不需要。
/*for example,按从小到大的顺序保存变量*/
#include<stdio.h>
int main()
{
float a, b, t;
printf("请输入a和b的值:");
scanf(" %f %f",&a,&b);
if (a > b)
{
t = a;
a = b;
b = t;
}
printf("a=%f,b=%f\n", a, b);
return 0;
}
程序运行结果为:
请输入a和b的值:3.6 3.2
a=3.200000,b=3.600000
2.1.2 if……else 语句
if……else 语句是一种二叉分支结构,其一般形式为:
if(<表达式>)
<语句A>
else
<语句B>
if……else 语句的功能:先判断<表达式>的真假,若为真,则执行<语句A>,为假则执行<语句B>
其余的语法和if语句差不多,如果有多条语句则用花括号全部括起来,还有一点,if(<表达式>)和 else 后面不用加分号。
2.1.3 if语句的嵌套
if 语句的嵌套是指在 if 和 else 的分支下又可以包含另一个 if 语句或 if……else 语句。
if 语句的嵌套位置是灵活的,嵌套的层次原则上可以是任意深度。嵌套的形式有两种——规则嵌套和任意嵌套
规则嵌套:
其基本形式为:
if(<表达式1>)
<语句1>
else if(<表达式2>)
<语句2>
else if(<表达式3>)
……
else if(<表达式n>)
<语句n>
else
<语句n+1>
任意嵌套:
任意嵌套是在 if……else 结构中的任一执行框中插入 if 结构或 if……else结构。
重点:在 if……else 语句的嵌套中,要注意 if 和 else 的匹配关系。C语言规定,else 总是与离他最近的上一个 if 配对。
(2)——switch结构
switch语句是一种多路分支开关语句,其语句的一般形式为:
switch(<表达式>)
{
case<常量表达式1>:语句序列1;
case<常量表达式2>:语句序列2;
…
case<常量表达式n>:语句序列n;
default:语句序列(n+1);
}
常量表达式:常量表达式的值必须是整形、字符型或者枚举型。(字符本质上是整形,因为字符存储的时候存的是它的ASCII值)
switch语句的语法规则:先计算 <表达式> 的值,再从上到下判断与哪一个 <常量表达式> 的值相同,如果 <表达式> 的值等于<常量表达式 i >的值,则从语句序列 i 开始执行,直到语句序列(n+1)为止;如果 <表达式> 的值不等于任何一个<常量表达式>的值,则执行 default 后面的语句序列。(default可以省略,但不建议,因为它的作用是对不正确的情况做出提示。)
break 语句在 switch 语句中的作用:在C语言中,break语句具有特定的含义,起中断和跳出的作用。
如果要求满足第 i 个条件后,只执行 <语句序列 i>,则应该在 <语句序列 i> 后加上一条分支语句 break,构成互相独立的 switch 条件分支。
如果多个 case 后面的语句系列表达式是相同的,则可以省略。并且并不是每一个 case 语句后面都要加上 break 语句,这个根据作用来选择。
/* for example 判断是休息日还是工作日*/
#include<stdio.h>
int main()
{
int n = 0;
printf("请输入一个1到7的整数:");
scanf("%d", &n);
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("这天为工作日");
break;
case 6:
case 7:printf("这天为休息日");
break;
default:printf("输入错误");
}
return 0;
}
程序运行结果为:
请输入一个1到7的整数:5
这天为工作日
(三)----------循环结构
C语言提供了三种循环结构语句——for语句、while语句和do…while语句。
(1)——for循环语句
for语句是C语言循环语句中的一种基本形式,它的循环次数是通过一个循环变量来控制的。
3.1.1 包含3个重要组成部分:
(1)初始化循环控制变量
(2)测试循环条件
(3)更新循环控制变量的值
3.1.2 for语句的一般形式为:
for(<初始表达式>;<条件表达式>;<循环变量表达式>)
{
<循环语句>
}
/* for example 简单几何级数的和*/
#include<stdio.h>
int main()
{
int i, sum;
sum = 0;
for (i = 0; i <= 100; i++)
sum = sum + i;
printf("1+2+…+100=%d\n", sum);
return 0;
}
程序运行结果为:
1+2+3+…+100=5050
3.1.3 for 语句的执行步骤:
(1)计算<初始表达式>的值。
(2) 判断<条件表达式>的值,若该表达式为真,则执行<循环语句>;若为假,则退出循环,执行循环结构外的语句。
(3)计算<循环变量表达式>的值。
(4)转到步骤(2)
3.1.4 for 语句有几个特性:
(1)<初始表达式>可以省略,但必须保留“ ; ”,同时,在for循环之前必须给循环控制变量赋值。(最好不要省略,不然容易产生bug)
形式为:
<初始表达式>
for ( ; <条件表达式> ; <循环变量表达式>)
{
<循环语句>
}
(2)<条件表达式>一般不可以省略,否则为无限循环。相当于条件总为真,程序会一直不停的执行,直到“数据溢出“。
(3)<循环变量表达式>亦可以省略,但在循环语句中必须有语句来修改循环变量。也就是相当于给他换了一个位置,可以使条件表达式的值在某一刻为假,使程序能正常结束循环。
比如:
for(sum=0,i=1;i<100;)
{
sum=sum+i;
i++;//改变了循环变量
}
(4)3个表达式均可省略,即for(;;),为无限循环,程序中要避免这种情况的发生。
(5)for循环可以嵌套,执行时是先执行最里层的循环,再执行外一层的循环。
(5)条件表达式可以是关系表达式、数值表达式,只要表达式的值不等于零,就执行循环体语句。
(2)——while循环语句
它的一般形式为:
while(<条件表达式>)
{
<循环语句>
<循环变量表达式>
}
/* for example 简单几何级数的和*/
#include<stdio.h>
int main()
{
int i = 0, sum = 0;
while (i < =100)
{
sum = sum + i;
i++;
}
printf("sum=%d\n", sum);
return 0;
}
程序执行结果为:
sum=5050
while 语句执行有以下两个步骤:
(1)计算<条件表达式>的值,为真,执行花括号里的循环体;为假,跳出循环。
(2)重复步骤(1)
由于while循环语句是先计算<循环变量表达式>,后决定是否执行<循环语句>,因此,<循环语句>有可能一次也没有执行。
(3)——do…while循环语句
do…while语句是一种用于产生循环动作的语句,它的一般形式为:
do
{
<循环语句>
}while(<条件表达式>);
/*for example 简单几何级数的和*/
#include<stdio.h>
int main()
{
int i=1, sum = 0;
do
{
sum = sum + i;
i++;
} while (i <= 100);
printf("sum=%d\n", sum);
return 0;
}
程序运行结果为:
sum=5050
do…while 语句的执行有下面两个步骤:
(1)执行<循环语句>
(2)计算条件表达式,若为真,则执行步骤一;若为假,则退出循环语句结构,执行下一条语句。
一般情况下,一定要有可以使<条件表达式>的值为“假”的语句,否则将进入死循环而发生错误。
for 循环、while 循环和 do…while 循环之间的区别和关系总结:
(1)for 循环一般适用于循环次数已知的情况,while 循环适用于循环次数不确定的情况,do…while 循环适用于至少需要执行一次循环体的情况
(2)for 循环和 while 循环都是先判断<条件表达式>再执行<循环语句>,而 do…while 循环语句则是直接执行<循环语句>,所以其最大的区别就是,do…while 循环中的<循环语句>至少会执行一次,而 for 循环和 while 循环中的<循环语句>可能一次也不被执行。
标签:语句,结构化,执行,sum,算法,C语言,while,循环,else From: https://blog.csdn.net/2401_85438845/article/details/139562059