C语言的三大基本结构:顺序、选择、循环
C语言的三大基本结构:顺序、选择、循环
1、顺序结构:
??从上到下,先执行A操作,再执行B操作;
2、选择结构:
??条件为真时,执行A操作,条件为假时,执行B操作;
??(1)if(){ ?} ??(2)if(){ ? }else{? } ?? (3)if(){? }else if(){ ?} (4)switch语句
3、循环结构:
??(1)for语句 ?? (2)while语句 ?? (3)do ? while语句
1、顺序结构
???平常写的C代码从上往下,顺序执行,就属于顺序结构;
2、选择结构
??(1)if语句:if的括号内会先计算判断表达式或值的真假,然后再按照结果的真假,执行对应语句;
?????形式1:
??????if(表达式/值(值可以是变量,也可以是常量))
??????{
????????语句;
??????}
?????形式2:
??????if(表达式/值(值可以是变量,也可以是常量))
??????{
????????语句1;
??????}else{
????????语句2;
??????}
?????形式3:
??????if(表达式/值(值可以是变量,也可以是常量))
??????{
????????语句1;
??????}else if(表达式/值(值可以是变量,也可以是常量)){
????????语句2;
??????}else if(表达式/值(值可以是变量,也可以是常量)){
????????语句3;
??????}
??????...........
??????else if(表达式/值(值可以是变量,也可以是常量)){
???????? 语句n;
??????}else{
????????语句;
??????}
??(2)switch语句:
??????switch(表达式){
????????case?常量表达式1:
????????????语句1;
????????????break;
????????case?常量表达式2:
????????????语句2;
????????????break;
????????????...........
????????case?常量表达式n:
????????????语句n;
????????????break;
????????default:
????????????语句n+1;
????????????break;
????????}
????当switch后的表达式的值,满足任何一个case后的常量表达式的值,则执行case后面的语句,直到遇到break就会跳出switch语句。
????如果所有的都不满足,就会执行default包含的语句。
?????注:1、switch后面的表达式一般都是整型变量或者表达式。
???????2、 case以及default之间的顺序是无所谓的。
???????3、case里面的语句是可以共用的:
?????????比如:
??????????case4:
??????????case5:
????????????printf("----------");
????????????break;
?????????这里的case4,case5就共同使用了 printf("----------"); 这条语句。
3、循环语句
??(1)for语句:
?????一般形式:
????????for(表达式1;表达式2;表达式3){
??????????语句;
????????}
?????执行过程:a、先求解表达式1的值
??????????b、再求解表达式2的值,( 若表达式2为真(非0),则执行for语句中的语句,再计算表达式3的语句;反复循环步骤b,直到表达式2的值为假 )
????????????( 若表达式2的值为假,则for循环直接结束 )
??????注:
????????1、表达式1可以省略,但是其后的分号不可省略(当表达式1省略时,应在for之前给循环变量赋初值)
????????2、表达式2可以省略,但是其后的分号不可省略(此时就必须用break语句终止循环)
????????3、表达式3也可以省略
??(2)while循环语句:
?????一般形式1:
????????while(表达式){
??????????语句;
????????}
?????执行过程:先判断表达式的值,如果表达式的值为真,就执行语句;为假,循环体内的语句一次也不执行。
?????一般形式2:
????????do{
???????????语句;
????????}while(表达式) ;
?????执行过程:先执行一次循环体,然后再判断表达式内的值,如果表达式的值为真,就继续执行循环体语句;为假,循环结束。
控制语句其他部分:
1、goto 跳转语句(无条件跳转)
???????goto语句,其一般格式如下:
????????? goto?语句标号;
??????其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。
??????语句标号起标识语句的作用,与goto 语句配合使用。
??????C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句。
????????案例:统计从键盘输入一行字符的个数:
点击查看代码
#include
int n=0;
int main(void) {
printf("input a string: ");
loop: if (getchar()!='\n') {
n++;
goto loop;
}
printf("output: %d\n",n);
}
//输入:abcdefghijklmnopqrstuvwxyz
//然后回车Enter
//输出:26
????????(2):goto是跳转语句,效率低。
????????(3):一般使用goto语句,做统一出错处理。其他情况一般不使用goto。
2、continue
???它会执行下一次循环语句,本次continue语句后面的语句就不会执行了。
点击查看代码
int i, sum=0;
for(i=0;i<=100;)
{
if(i%2!=0)
{
i++;
continue; //执行下次循环,sum+=i++; 就不会去执行了。
i++;
}
sum+=i++;
}
return 0;
3、return
???功能:用来结束一个函数。
???return后面的数字代表函数执行的结果,如果整数可以自己设置含义。
点击查看代码
int get_leap_year()
{
if((year%4 == 0 && year%100 !=0)||year%400 == 0){
return 1; //代表闰年
}
return 0;//代表平年(如果返回的是负数,表示程序执行出错了。)
}