1.顺序结构
顺序结构,就是程序从上到下,依次执行。
流程图
例子
int main()
{
int a = 2;
int b = 3;
int c = a + b;
printf("%d %d %d", a, b, c);
return 0;
}
2.选择结构
选择结构,顾名思义就是代码在运行的时候,根据所给的条件来执行程序。
流程图
要实现这个结构,我们可以采用if语句,switch语句
if语句
if语句中,非0为真,0为假。if语句中有三种
第一种
if(表达式)
语句;
当表达式为真时,则会执行语句,表达式若是假(0)则不执行。
注意:一条if语句后只能跟一条语句,如果要执行多条语句,则需要花括号{}把语句包裹起来。{}包裹起来的称为代码块。
例子:判断一个数是否为偶数
int main()
{
int i = 2;
if (i % 2 == 0)
printf("%d是偶数", i);
return 0;
}
输出结果
第二种(双分支)
if(表达式)
语句;
else
语句;
依旧是前面的例子,判断一个数是偶数还是奇数
int main()
{
int i = 0;
scanf("%d",&i);
if (i % 2 == 0)
printf("%d是偶数", i);
else
printf("%d是奇数", i);
return 0;
}
第三种(多分支)
if(表达式)
语句;
else if(表达式)
语句;
else
语句;
例子:判断输入的字符是字母,数字,还是其他特殊符号
int main()
{
char c;
scanf("%c", &c);
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
printf("%c是字母", c);
else if (c >= '0' && c <= '9')
printf("%c是数字", c);
else
printf("%c是其他字符", c);
return 0;
}
switch语句
基本形式:
switch(整型表达式) (常量表达式一般是*,/,%,+,-)
{
case (整型常量表达式):
break;
case(整型常量表达式):
break;
default:
break;
}
当switch后的整型表达式=case中的整型常量表达式就会执行对应的分支。如果找不到,则会执行default分支。
在switch中,只有使用break才能跳出switch语句,如果一个case后没有break语句,代码会继续执行,直到遇到break;当然,也不是每个case后都一定得有break;看情况加break;
例子:输入1-7内其中一个数,打印对应的星期几
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("输入有误\n");
break;
}
return 0;
}
如果改成周一到周五为工作日,周六周日为休息日
代码如下
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入有误\n");
break;
}
return 0;
}
循环结构
循环结构就是一直循环,直到条件为假就跳出循环。就像你每天坚持做同样一件事,直到你成功了,就跳出循环了
流程图
while语句
基本形式:
while(表达式)
循环语句;(若跟有多条循环语句,用花括号{}包裹起来)
例子:计算1到100的和(结果5050)
int main()
{
int i = 0,sum=0;
while (i <= 100) //只有i<=100才可循环,当1=101时明显大于100,跳出循环
{
sum = sum + i; //把i的值加起来
i++; //使用后i+1
}
printf("1到100的和为%d", sum);//总和5050
return 0;
}
do...while语句
基本形式:
do{
循环语句;
}while(表达式);
do...while语句与while的不同点就在do...while循环至少执行一次,先做后循环判断。
int main()
{
int i = 0;
do
{
printf("Hello World!\n");//先打印后循环判断
} while (0);
return 0;
}
结果 Hello World!
例子:打印1到100的和也可以写成do...while语句
int main()
{
int i = 0,sum=0;
do
{
sum = sum + i;;
i++;
} while (i <= 100);
printf("%d", sum);
return 0;
}
for语句
基本形式:
for(表达式1:表达式2:表达式3)
表达式1可写变量的初始化,表达式二写循环判断条件;表达式三写变量的增值。如for(i=1;i<10;i++),i可以在for内定义,也可在for外定义。
流程图
例子:打印阶乘
#include <stdio.h>
int main()
{
int i = 0, n = 0;
int sum = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
sum *= i;
}
printf("%d!=%d", n, sum);
return 0;
}
for的表达式也可以写在for(;;)外边,上面的代码也可以改成如图
int main()
{
int i = 1, n = 0;
int sum = 1;
scanf("%d", &n);
for (; i <= n;)
{
sum *= i;
i++;
}
printf("%d!=%d", n, sum);
return 0;
}
当然,如果没有表达式2的判断条件,可以运行,但会死循环。
goto 语句
goto语句可实现在同一个函数跳转到设置好的标号处,当我们在写多重for循环时,如果想要跳出循环可用goto语句。一般挺少用goto语句,容易引起错误。
int main()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
for (int k = 0; k < 10; k++)
{
for (int m = 0; m < 10; m++)
{
goto next;
printf("跳出去就不打印这句话");
}
}
}
}
next :
printf("跳出来了");
return 0;
}
结果
目录