目录
C语言流程控制语句有三种结构:顺序结构、选择结构、循环结构
1、顺序结构
函数执行的入口:从main函数开始,自上而下,依次执行每一条语句
#include<stdio.h>
int main()
{
int m[10],a,b,c,d,e;
a=sizeof(int);
b=sizeof(m);
c=sizeof(m[0]);
d=sizeof(m)/sizeof(int);
e=sizeof(m)/sizeof(m[0]);
printf("数据类型大小a=%d\n",a);
printf("数组的大小b=%d\n",b);
printf("数组元素数据类型大小c=%d\n",c);
printf("数组长度d=%d\n",d);
printf("数组长度e=%d\n",e);
return 0;
}
//数据类型大小a=4
//数组的大小b=40
//数组元素数据类型大小c=4
//数组长度d=10
//数组长度e=10
2、选择结构
满足某些条件,执行相应的语句
2.1 if 语句
①单分支 if
if(条件语句)
{
语句1;
}
解释:先对条件语句进行判断,判断的结果:非0 即1;若条件满足,则执行语句1,若条件不满足,则执行 if 语句外的程序。
#include<stdio.h>
int main()
{
int num;
printf("请输入一个整数:\n");
scanf("%d",&num);
if(num<0)
{
printf("负数!\n");
}
printf("%d\n"num+1);
return 0;
}//当输入的数值大于零,条件不满足,执行if语句外的程序,输出num+1的值;
//当输入的数值小于零输出负数!和num+1的值。
②双分支if
if(条件语句)
{
语句1;
}
else
{
语句2;
}
解释:先对条件语句进行判断,判断的结果如果为真(即条件满足),则执行语句1,否则执行语句2;
#include<stdio.h>
int main()
{
int num;
printf("请输入一个整数:\n");
scanf("%d",&num);
if(num<0)
{
printf("负整数!\n");
}
else
{
printf("正整数!\n");
}
return 0;
}//当输入的数值小于零时,输出负整数!;当输入的数值大于零时,输出正整数!
③多分支if
if(条件语句1)
{
语句1;
}
else if(条件语句2)
{
语句2;
}
……
else
{
语句n;
}
解释:先对条件语句1进行判断,判断的结果如果为真,执行语句1,然后对条件语句2进行判断,如果满足条件,则执行语句2……,(若均不满足,执行语句n);
#include<stdio.h>
int main()
{
int m;
printf("请输入一个整数:\n");
scanf("%d",&m);
if(m<0)
{
printf("y=%d\n",m+1);//若输入的m值为-1,输出0
}
else if(m>=0 && m<5)
{
printf("y=%d\n",m+1);//若输入的m值为2,输出3
}
else
{
printf("y=%d\n",m);//若输入的m值为7,输出7
}
return 0;
}
2.2 switch 语句
switch(表达式) //表达式的值只能是整型或者字符型,一定不能为浮点型
{
case result1:语句1;break;
case result2:语句2;
case result3:语句3;break;
……
default:语句;
}
解释:switch先判断表达式的值,如果表达式的结果与result1完全一致,执行语句1;……最后如果都不满足,则执行 default 后面的语句;
break不可以省略!表示结束整个switch;(如果switch语句中没有一个break,不是语法错误,它会按顺序向下执行,直至遇到 } 结束整个switch语句)。
//0-59:不及格;60-69:及格;70-79:中等;80-89:良好;90-100:优秀;
#include<stdio.h>
int main()
{
int score;
printf("请输入一个整数成绩:\n");
scanf("%d",&score);
switch(score/10)
{
case 10: //如果成绩为100,因为没有遇到break,所以会继续执行case 9语句,输出优秀。
case 9:printf("优秀\n");break;
case 8:printf("良好\n");break;
case 7:printf("中等\n");break;
case 6:printf("及格\n");break;
default:printf("不及格\n");break;
}
return 0;
}
3、循环结构
满足一些条件,执行循环体
①for 循环语句
for(条件的初始值;条件判断;条件的改变)
{
循环体;
}
#include<stdio.h>
int main()
{
int i;
for(i=1;i<5;i++)
{
printf("i=%d\n",i);//输出i=1,i=2,i=3,i=4
}
return 0;
}
/*************************
第一步:条件的初始值(i=1) 第五步:条件判断(2<3)满足条件
第二步:条件判断(1<3)满足条件 第六步:执行循环体(打印i=2)
第三步:执行循环体(打印i=1) 第七步:条件的改变(i=3)
第四步:条件的改变(i=2)
……
条件不满足(5<5) 结束!
*************************/
循环可以嵌套:
外部循环执行一次,内部循环执行一遍!
本质:内层循环作为外层循环的循环体!
②while 循环语句
条件的起始值; //需自己给初值
whlie(条件判断)
{
循环体;
条件的改变;
}
解释:先进行条件判断,若条件满足,则执行循环体,若条件不满足,则循环体不执行。
#include<stdio.h>
int main()
{
int i=1;
while(i<5)
{
printf("i=%d\n",i);//输出i=1,i=2,i=3,i=4
i++;
}
return 0;
}
/*************************
第一步:条件的初始值(i=1) 第五步:条件判断(2<3)满足条件
第二步:条件判断(1<3)满足条件 第六步:执行循环体(打印i=2)
第三步:执行循环体(打印i=1) 第七步:条件的改变(i=3)
第四步:条件的改变(i=2)
……
条件不满足(5<5) 结束!
*************************/
③do.......while 循环语句
条件的起始值;//需主动给初值
do
{
循环体;
条件的改变;
}while(条件判断);
解释:即使do......while条件不满足,也要至少执行一次循环体
while:可以一次都不执行; do...while:至少执行一次
#include<stdio.h>
int main()
{
int i=1;
do
{
printf("i=%d\n",i);//输出i=1,i=2,i=3,i=4
i++;
}while(i<5);
return 0;
}
补充:三种死循环------for(;1;)--------for(;;;)---------while(1)
控制语句:break;countinue,return,goto
break:用在switch中,表示结束switch语句;用在循环语句中,表示结束本层循环
continue:用在循环语句中,表示结束本次循环,continue下面的内容不再执行
return:结束整个函数
goto:跳转(打乱原本程序执行的顺序),执行到goto 标识符的时候,代码会回到定义标识符的位置;
#include<stdio.h>
int main()
{
int m;
loop: //goto标识符
printf("请输入一个整数:\n");
scanf("%d",&m);
if(m<0)
{
printf("y=%d\n",m+1);
}
else
{
printf("y=%d\n",m);
}
goto loop;
return 0;
}
//输入一个m的值后,随即输出一个y值,程序运行到第十五行goto loop语句后跳转到第五行loop语句,
//然后请求再次输入一个数值,无限循环。