控制流 :控制程序执行的流向
* 分类:
顺序结构
分支结构(选择结构)
循环结构
===
顺序结构:
==============================================================
分支结构:
* if
* switch
=====
if :
* 姿势 :
if(表达式)
有且仅有一条语句A;
*解释:
表达式成立,则执行语句A
表达式不成立,则不执行语句A
* if 和程序块结合:
if(表达式)
{
多条语句;
}
* 姿势: (二选一)
if(表达式)
有且仅有一条语句A;
else
有且仅有一条语句B;
*解释:
表达式成立,则执行语句A
表达式不成立,则执行语句B
* 和代码块结合:
if(表达式)
{
多条语句;
}else{
多条语句;
}
* 姿势 : (多选一)
if(表达式1)
有且仅有一条语句A;
else if(表达式2)
有且仅有一条语句B;
else if(表达式3)
有且仅有一条语句C;
else if(表达式4)
有且仅有一条语句C;
....
else
有且仅有一条语句X;
* 解释:
else 可以省略写
* 和程序块结合:
if(表达式1)
{
多条语句;
}
else if(表达式2)
{
多条语句;
}
else if(表达式3)
{
多条语句;
}
else if(表达式4)
{
多条语句;
}
....
else
{
多条语句;
}
=========
程序块 :
{} : 相对于 一条语句的效果
#include <stdio.h>
int a;
int y;
int main(void)
{
int a = 10;
// short a; // 不可以
int x = 30;
{
int a = 20; // 可以
int b;
int c;
printf("%d\n",a); //20
printf("%d\n",x); //30
{
printf("%d\n",y);
}
}
return 0;
}
// 在同一个大括号里面,定义的名字不能重复
========================================
switch :
* 姿势 :
switch(表达式)
{
case 选项1:
多条语句;
break;
case 选项2:
多条语句;
break;
case 选项3:
多条语句;
break;
case 选项4:
多条语句;
break;
default :
多条语句;
break;
}
* 解释 :
选项: 是整数或者字符
选项不能重复
通过表达式的值去执行以该值作为选项的多条语句
如果没有找到该选项,去选择 default
default 可以省略
break 和 switch 结合 ,结束 switch 语句
==============================================
分支结构总结:
* if (if) (if else) (if ... else if ... else)
* switch switch case
====> break 和 switch 的结合,可以结束 switch 语句
=============================================
循环结构 :
* for while do while
======
for :
* 姿势 :
for(表达式1;表达式2;表达式3)
有且仅有一条语句A;
*解释:
第一步:执行 表达式1
第二步:判断表达式2是否成立,不成立则退出循环,成立则继续往后
第三步:执行语句A
第四步:执行 表达式3 然后再去 执行 第二步
表达式1 和 表达式3 是 赋值表达式
表达式2 是 判断表达式
三个表达式都可以省略,当省略了表达式2表示永远成立
for(;;)
有且仅有一条语句A;
* for 和 程序块 的结合:
for(;;)
{
}
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到表达式3)
break :结束其所在的循环.
============
while :
* 姿势 :
while(表达式)
有且仅有一条语句A;
*解释 :
第一步: 判断表达式是否成立,不成立则退出while循环,成立则继续往下
第二步: 执行语句A ,去执行第一步
* while 循环 和 程序块 结合
while(表达式)
{
}
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到表达式判断中)
break :结束其所在的循环.
=================
do while :
* 姿势 :
do
有且仅有一条语句A;
while(表达式);
*解释:
第一步 : 执行语句A
第二步 : 判断表达式是否成立,不成立则退出循环,成立则 执行 第一步
* do while 和 程序块 结合 :
do{
}while(表达式);
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到表达式判断中)
break :结束其所在的循环.
==============================
循环总结:
for for(表达式1;表达式2;表达式3) 语句A;
while while(表达式) 语句A;
do while do 语句A; while(表达式)
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到下一步 )
break :结束其所在的循环.
==========
goto 跳转
* 姿势 :
goto 标签;
*解释 :
跳转到标签所在的位置去执行 标签所在的 语句。
goto 语句 要和 标签必须 在 同一个 函数里面。
====
练习:
0 ... 100 // 某些数据跳过 碰到某个数据结束
0.
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
1.
*
* *
* * *
* * * *
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d" ,&c);
for(a=0;a<c;a++)
{
for(b=0;b<=a;b++)
printf("* ");
printf("\n");
}
return 0;
}
1.1
99乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d" ,c);
for(a=0;a<c;a++)
{
for(b=0;b<=a;b++)
printf("d%*d%=%d " ,b+1,a+1,(a+1)*(b+1));
printf("\n");
}
return 0;
}
2 * * * *
* * *
* *
*
#include<stdio.h>
int main()
{
int a,b,c,d
scanf("%d" ,&c);
for(a=0;a<c;a++)
{
for(d=0;d<a;d++)
{
printf(" ");
}
for(b=0;b<=a;b++)
{
printf("* ");
}
printf("\n");
}
return 0;
}
3 *
* * *
* * * * *
* * * * * * *
#include<stdio.h>
int main()
{
int a,b,c,d
scanf("%d" ,&c);
for(a=1;a<=c;a++)
{
for(d=1;d<=a-c;d++)
{
printf(" ");
}
for(b=1;b<=2*a-1;b++)
{
printf("* ");
}
printf("\n");
}
return 0;
}
4
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
#include<stdio.h>
int main()
{
int a,b,c,d
scanf("%d" ,&c);
for(a=0;a<c;a++)
{
for(d=0;d<c-a-1;d++)
{
printf(" ");
}
for(b=0;b<2*a+1;b++)
{
printf("* ");
}
printf("\n");
}
for(a=0;a<c-1;a++)
{
for(d=1;d<=a;d++)
{
printf(" ");
}
for(b=1;b<=2*(c-a-1)-1;b++)
{
printf("* ");
}
printf("\n");
}
return 0;
}