程序流程结构
概述
C语言支持最基本的三种程序结构:顺序、选择、循环结构;
- 顺序:程序按顺序执行,不发生跳转
- 选择:依据是否满足条件,选择执行相应功能
- 循环:判断条件是否满足,循环多次执行
选择结构
if语句
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if (a > b)
{
printf("%d\n", a);
}
return 0;
}
if ...else 语句
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if (a > b)
{
printf("%d\n", a);
}
else
{
printf("%d\n", b);
}
return 0;
}
if…else if…else语句
#include <stdio.h>
int main()
{
unsigned int a;
scanf("%u", &a);
if (a < 10)
{
printf("个位\n");
}
else if (a < 100)
{
printf("十位\n");
}
else if (a < 1000)
{
printf("百位\n");
}
else
{
printf("很大\n");
}
return 0;
}
三目运算符
#include<stdio.h>
int main()
{
int a=10,b=20,c;
if(a>b)
{
c=a;
}
else
{
c = b;
}
printf("c:%d\n",c);//c =20
a=1;
b=2;
c=(a>b?a:b);
printf("c:%d\n",c);//c=2
return 0;
}
switch语句
#include <stdio.h>
int main()
{
char c;
c = getchar();
switch (c) //参数只能是整型变量
{
case '1':
printf("OK\n");
break;//switch遇到break就中断了
case '2':
printf("not OK\n");
break;
default://如果上面的条件都不满足,那么执行default
printf("are u ok?\n");
}
return 0;
}
循环结构
while语句
#include <stdio.h>
int main()
{
int a = 20;
while (a > 10)
{
scanf("%d", &a);
printf("a = %d\n", a);
}
return 0;
}
do ...while语句
先执行语句,后判断是否符合循环条件
#include <stdio.h>
int main()
{
int a = 1;
do
{
a++;
printf("a = %d\n", a);
} while (a < 10);
return 0;
}
for语句
#include <stdio.h>
int main()
{
int i;
int sum = 0;
for (i = 0; i <= 100; i++)
{
sum += i;
}
printf("sum = %d\n", sum);
return 0;
}
嵌套循环
循环语句之间相互嵌套;
#include <stdio.h>
//冒泡排序
void sort(int * p,int len)
{
int i,j,t;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
// for(j=0;j<len-1;j++)
{
if(p[j]>p[j+1]) //>表示升序 <表示降序
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
}
int main(void)
{
int a[6]={10,2,8,-8,11,0};
int i=0;
sort(a,6);
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
return 0;
}
跳转语句break,continue、goto;
break语句
在switch条件语句和循环语句中都可以使用break语句;
在switch语句中,作用时终止某个case并跳出switch结构。
在循环语句中,作用时跳出当前内循环语句,并执行后面代码;
在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码。
#include <stdio.h>
int main()
{
int i = 0;
while (1)
{
i++;
printf("i = %d\n", i);
if (i == 10)
{
break; //跳出while循环
}
}
int flag = 0;
int m = 0;
int n = 0;
for (m = 0; m < 10; m++)
{
for (n = 0; n < 10; n++)
{
if (n == 5)
{
flag = 1;
break; //跳出for (n = 0; n < 10; n++)
}
}
if (flag == 1)
{
break; //跳出for (m = 0; m < 10; m++)
}
}
return 0;
}
continue 语句
在循环语句中,如果希望立即终止本次循环,并执行下一次循环,需要使用continue。
#include<stdio.h>
int main()
{
int sum = 0; //定义变量sum
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0) //如果i是一个偶数,执行if语句中的代码
{
continue; //结束本次循环,执行下一次循环
}
sum += i; //实现sum和i的累加
}
printf("sum = %d\n", sum);
return 0;
}
goto语句
goto无条件跳转,尽量少用;
#include <stdio.h>
int main()
{
goto End; //无条件跳转到End的标识
printf("aaaaaaaaa\n");
End:
printf("bbbbbbbb\n");
return 0;
}
/*打印:
bbbbbbbb
*/
参考传智播客讲义