C语言有5种类型的语句:
(1)表达式语句包括:运算符表达式语句、赋值语句。
(2)流程控制语句包括结构化语句和非结构语句;
A.结构化语句包括:条件语句和循环语句;
a.条件语句包括:if语句和switch语句;
b.循环语句包括:while语句、do while语句和for语句。
B.非结构化语句包括:限定转向语句和非限定转向语句;
a.限定转向语句:break语句、continue语句和return语句;
b.非限定转向语句:goto语句。
(3)函数调用语句
(4)空语句
(5)复合语句
结构化程序设计的核心是算法和控制结构。
算法:解决问题时的一系列方法和步骤;主要表示方法:伪代码和流程图。
算法的步骤间有一定的逻辑顺序,此体现为控制结构。分为:顺序结构、分支结构和循环结构。
(1)顺序结构:最简单、最基本,从上往下执行,不进行跳转;
形式:
……
语句1;
语句2;
语句3;
…….
执行顺序:语句1;》语句2;》语句3;……..
(2)分支结构:有3种:单分支、双分支和多分支;即选择结构,根据条件判断执行程序,成立则执行,反之不执行。
(3)循环结构:当型循环和直到型循环。用于一遍一遍执行程序的某部分,根据条件判断是否执行,重复执行多少次。循环结构:循环条件和循环体
一、条件语句
A. if语句
a.判断表达式:
if(判断表达式)
{
结构体;
}
例子:
#include
#include
void main(void)
{
int price=0;
printf("请输入商品价格:");
scanf("%d",&price);
if(price<50)
{
printf("好,我买了");
}
getch();
}
b.花括号和if结构体
(1)if(表达式)
{
语句1;
语句2;
语句3;
}
和
(2)if(表达式) 等价于 if(表达式)
语句1; { 语句1; }
语句2; 语句2;
语句3; 语句3;
if后边并非必须跟“{}”,如(1)中if条件满足,{}中的块语句都执行;(2)中if条件满足,才执行语句1,语句2和语句3都会执行。
B. if else语句
两个选择
形式:
if(表达式)
{
代码段1
}
else
{
代码段2
}
if后边的表达式为真,执行代码段1,否则执行代码段2。
例子:
#include
#include
void main(void)
{
int price=0;
printf("请输入商品价格:");
scanf("%d",&price);
if(price<50)
{
printf("好,买了");
}
else
{
printf("不买");
}
getch();
}
例程:
#include
int main()
{
int a = 2,c;
if(a==1) c=1;
if(a==2) c=2;
if(a%2==0) c=3;
printf("%d\n",c); // 打印 3
if(a==1) c=1;
else if(a==2) c=2;
else if(a%2==0) c=3;
printf("%d\n",c); //打印 2
switch(a) //相当于if if了,所有的1,2,3,4满足条件的都会执行一次
{ //注:从case 2开始执行,按顺序执行一遍
case 1: c=1;
case 2: c=5;
case 3: c=9;
case 4: a=2;
break;
}
printf("%d\n",c); //打印 9
switch(a) //else if了,只要满足条件就跳出了
{
case 1: c=1;
break;
case 2: c=5;
break;
case 3: c=7;
break;
case 4: c=9;
break;
}
printf("%d\n",c); //打印 5
}
C. if if 语句和swich语句
多个选择
if(表达式1)
{
代码段1
}
else if(表达式2)
{
代码段2
}
……
else if(表达式m)
{
代码段m
}
else
{
代码段m+1
}
例子:
#include
#include
void main(void)
{
int a=0;
printf("请输入学生成绩:\n");
scanf("%d",&a);
if(a>=90)
printf("A");
if(a>=75 && a<90)
printf("B");
if(a>=60 && a<75)
printf("C");
if(a<60)
printf("D");
}
D. 分支语句嵌套
形式:
if (表达式1)
{
if(表达式2)
{
代码段1
}
else
{
代码段2
}
}
E. 开关语句:switch语句
多选一
形式:
switch(表达式)
{
case(常量表达式1);
代码段1
break;
case(常量表达式2);
代码段2
break;
……
case(常量表达式
);
代码段m
break;
default:
代码段m+1
}
例子:
#include
#include
void main(void)
{
int a=0;
printf("请输入一个1到7的整数:\n");
scanf("%d",&a);
switch(a)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Monda\n");
break;
case 3:
printf("Mond\n");
break;
default:
printf("Mon\n");
}
}
二、循环语句
A. while 语句 (当型)
形式:
while (表达式)
{
循环结构体
}
While语句后边的{}为循环体,如果直接跟着“;”,说明在while后边表达式为真时,执行空语句,直到表达式为零,跳出while语句。
例子:
#include
#include
void main(void)
{
int sum=0;
int i=1;
while(i<=100)
{
sum=sum+i;
i=i+1;
}
printf("结果是:%d",sum);
getch();
}
B. do while 语句 (直到型)
形式:
do
{
循环结构体
}
while(表达式); //有分号
do while结构中的循环结构体至少会被执行一次,直到while后的表达式非零,跳出do while结构向下执行。
例子:
#include
#include
voidmain(void)
{
int sum=0;
int i=100;
/* while(i)
{
sum=sum+i;
i--;
} */
do
{
sum=sum+i;
i=i-1;
}
while(i);
printf("结果是:%d",sum);
getch();
}
C. for 语句 (当型)
形式:
for(初始化表达式;判断表达式;修正表达式)
{
循环体
}
等价于while结构:
while(判断表达式)
{
循环体
修正表达式;
}
for语句比较简洁,其执行过程:
a. 计算初始化表达式;
b. 计算判断表达式的值,如果其值为真(非0),则执行循环体,并执行c步骤;若为假,则循环结束,转到e步骤;
c. 计算修正表达式;
d. 转回b步骤执行;
e. 循环结束,跳出for循环,向下执行。
注意:for中的表达式可以省略,但是“;;”不能省略;
即:
for( ;;) 等价于 while(1)
{ {
……. ……
} }
例子:
#include
#include
void main(void)
{
int i,j;
for(i=1; i<=4;i++) //外层循环4次
{
for(j=1; j<=9;j++) //内层循环9次
{
printf("* "); //后边带俩个空格
}
printf("\n");
}
getch();
}
注意:一般内循环次数多余外循环。
D. 跳出循环:break
可从死循环中跳出来
适用于3种循环结构,只能用于switch语句,不能跳出if语句和if else语句
例子:
#include
#include
void main(void)
{
int i=0;
while(1)
{
printf("Hello\n");
i++;
if(i>5)
break;
}
getch();
}
E. 重来一次: continue
break用于结束整个循环结构,而continue语句结束的只是当前一次循环,只是结束本次循环中后续内容,被称为循环继续语句。
F. 随心所欲:goto
即:go to,为自由转向语句,可以跳转到任何地方;
形式:
goto+标号名
例子:
#include
#include
void main(void)
{
int i=0;
while(1)
{
printf("* ");
i++;
if(i>3) //0到3,输出4个*,退出*
goto outside;
}
outside:printf("\n\n\n* ");
}