基础概念:
1、语句:表达式后面加上分号,构成表达式语句。特殊情况为只有1个分号的语句,称空语句。
2、语句分类
(1)空语句:本身只有一个分号,在不需要执行任何任务,但语法要求出现一条完整的语句时使用。
(2)表达式语句:如:x=y+3;
(3)控制语句,包括选择语句和循环语句。
一、选择语句(分支语句)
分类:if语句和switch语句
1、if语句
① if(单分支);
② if(expression) ....else.....(双分支)
③ if .... else if ... (else if) .....else(多分支)
expression可以是任何能够产生整型结果的表达式,零值表示”假”,非零值表示”真”。C语言中不具备布尔类型。
(1)if语句示例
--1)单分支if语句
#include
int main()
{
int i=0;//--i=1
if(i)//条件表达式,条件为真(非0),则执行,假(0)则不执行
{
printf("1111\n");
}
return 0;
}
--2)双分支if语句
#include
int main()
{
int iNum=0;
while(1)//"1"为真,重复执行,非0即真
{
printf("请输入一个数\n");
scanf("%d",&iNum);
//条件判断
if(0==iNum%2)
{
printf("%d是偶数\n",iNum);
}
else
{
printf("%d是奇数\n",iNum);
}
}
return 0;
}
--3)多分支if语句
#include
int main()
{
int i;
while(1)
{
printf("请输入成绩\n");
scanf("%d",&i);
if(i>90)
{
printf("成绩为A\n");
}
else if(i<=90 && i>80)
{
printf("成绩为B\n");
}
else if(i<=80 && i>70)
{
printf("成绩为C\n");
}
else
{
printf("成绩D\n");
}
}
return 0;
}
2、switch case 语句
(1)概念
switch 语句是一种多路判定语句,它判断表达式的值是否与整数或字符常量列表中的某个值相匹配,若找到了相应的匹配,就会执行与常量关联的语句, 遇到break语句终止执行。不符合case语句就执行default后的语句,同样遇到break语句终止执行。default子句可以出现在语句列表的任何位置,通常放在列表末尾。
执行过程:首先计算switch(表达式)中表达式的值,然后当case后不加break;时,程序执行case标签与表达式值匹配的语句,并从该条case语句开始,一直执行直至语句列表结束;当case后加上break;时,执行完case标签与表达式值匹配的语句后,程序跳到语句列表的末尾,即跳出switch语句。
(2)编写格式
switch(表达式)
{
case 1:
{
语句集;
}
break;
case 2:
{...}break;
default:
{
语句集;
}
break;
}
(3)示例
根据输入成绩并输出分数等级 >90:A ; >=90>80:B ; >=80>70:C; >=70>60:D;其他:不合格
#include
int main()
{
int iscore;
while(1)
{
printf("请输入成绩\n");
scanf("%d",&iscore);
switch(iscore/10)
{
case 9:
{
printf("A\n");
}
break;
case 8:
{
printf("B");
}
break;
case 7:
{
printf("C");
}
break;
case 6:
{
printf("D");
}
break;
default:
{
printf("不合格");
}
}
}
return 0;
}
(4)使用
1)计算表达式的数据类型要与指定的case常量的数据类型匹配。
2)switch后的表达式可以包含任何变量名,也可以是常量,但结果必须是整型值。
3)case后面只能是常量(整型和字符型)。
(5)if和switch区别
if:范围性判断(线判断),条件的计算是自顶向下
switch:状态性判断(点判断)
二、循环语句
分类:for循环、while循环、do...while循环
1、for语句
(1) 编写格式
for(初始值;终止值;步长)
{
语句集;
}
程序执行过程:
初始值在循环最开始时执行一次,之后不再执行初始值。第一次执行完初始值后,执行for循环里面的语句,然后执行步长,接着终止值作判断,满足条件,直接执行for循环里面的语句,不满足条件则跳出for循环;然后再执行步长(调整部分),如此循环,直到终止值判断不满足条件跳出for循环。
在for语句中,continue跳过循环体的剩余部分,直接回到调整部分。在while语句中,调整部分是循环体的一部分,所以continue将会把它也跳过。
(2)示例
--绘制九九乘法表
#include
int main()
{
int i,j;
for(j=1;j<10;j++)
{
for(i=1;i<=j;i++)
{
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
for循环实现:对数组成员值从小到大进行排列:
#include
#include
#include
#define NUM_ELEMENTS 10
int main()
{
int i,j,k=0;
int temp;
int value[10]={3,6,7,1,4,9,5,8,12,15};
for(i=0;ivalue[j])//将值小的排列在前面
{
temp=value[i];
value[i]=value[j];
value[j]=temp;
}
}
}
for(k;k<10;k++)
{
printf("value[%d]=%d\n",k,value[k]);
}
while(1);
return 0;
}
执行过程:
value[0]依次和value[1]、value[2]…value[9]比较,比较完之后将最小的值给value[0],第2次value[1]依次和value[2]、value[3]…value[9]比较,比较完之后将次小的值给value[1],最后value[8]和value[9]比较,比较完之后将最次小的值给value[8]。
(3)注意
for嵌套使用,可以实现画界面效果。
2、while语句
(1)while(表达式)//表达式为真,才执行语句
{
语句集;
}
--重复执行,有可能执行不到
(2)do
{
语句集;
}while(条件表达式);
--至少执行一次,条件满足继续执行,直到条件为假,结束程序。(当型循环)
(3)示例
--1)重复执行,按esc退出
#include
int main()
{
char ch=0;
int i=0;
while(1)
{
printf("111\n");
ch=getch();
if(27==ch)//27为esc的ASCII码
{
break;//若输出为esc,则退出
}
}
return 0;
}
--2)重复执行,按y再回车,进行下一步,按n退出
#include
int main()
{
char ch='y';
while(ch=='y')//while中可以是常量也可以是变量也可以是表达式
{
printf("111\n");
ch=getch();
if('n'==ch) //若输入为n,则退出
{
break;
}
}
return 0;
}
--3)至少执行一次,直到条件不满足结束循环。
#include
int main()
{
int i=0;
do
{
printf("111");
}while(1);
return 0;
}
(4)for和while区别:
while和for语句的循环体可能一次也不执行,而do-while语句的循环体至少也要执行一次。
for:范围条件限定(循环次数)已知 while:循环条件未知
三、其它控制语句
break; continue; goto; return;exit等
1、break语句和continue语句
(1) break语句概念
1)用于在 switch 语句中终止case,也可用于循环中突然终止循环
2)当循环中遇到 break 语句时,循环立即终止,控制权传递给循环之后的语句
3)多层循环中,break只向外跳一层
(2) continue语句概念
1)只能在循环中使用让封闭循环进行下一次迭代
2)遇到该语句时,跳过循环体中剩余的语句,控制权传递给重新初始化步骤
3)在while循环和do…while循环中,程序控制权传递个条件测试语句
4)在for循环中,continue影响循环的增量部分,然后执行条件测试
(3)示例
--1)break在前,continue在后
#include
int main()
{
int i;
for(i=0;i<10;i++)
{
if(i==2)
{
break; //结束for循环
}
if(i==4)
{
continue;
}
printf("%d\n",i);
}
return 0;
}//运行输出 0 1
--2)continue在前,break在后
#include
int main()
{
int i;
for(i=0;i<10;i++)
{
if(i==2)
{
continue;//结束当前循环,进入下一次循环
}
if(i==4)
{
break;
}
printf("%d\n",i);
}
return 0;
}//运行输出 0 1 3
break和continue两条语句中的任意一条出现在嵌套的循环内部,只会对最内层的循环起作用,无法对外层循环起作用。
2、goto语句
goto 语句将控制权传递给C程序中同一函数内的其他语句。
C语言是结构化语言,顺序较为严谨,故一般不用goto,会破坏结构体。
3、return语句:
(1)编写格式:return expression;
(2)使用
1)表达式可选
2)return 语句用于从函数中返回
3)return 语句可带有值,该值将返回给调用程序,该语句使程序执行返回到调用函数的位置。
4)一个函数中可以使用多个return语句,但是遇到第一个return语句时返回
4、exit语句:结束函数,相当于
(1)编写格式:exit(int return_code);
(2)使用
1)exit() 用于跳出一个程序,是一个标准库函数
2)该函数的用途是立即终止程序,控制权交给操作系统
注:基于代码规范,各控制语句无论几行,都应加{}。
编辑 2020-4-22 21:03
注:本文旨于作为自己的学习笔记,不作他用。