分类标准
按照复杂度分类
注c里面是以;作语句的结尾
空语句
; // 空语句
简单语句
int a;
a = 10;
复杂语句
{
int b;
b = 0;
b++;
} // 语块
按功能分类
-
选择语句
-
循环语句
-
转移语句
选择语句
if语句
/* if语句 */
1 语法:
if(表达式)
{
语句1;
语句2;
.....;
}
2 翻译:
如果(条件)
{
要做的事情;
}
如果条件是真的,就会执行大括号里面的代码.
如果条件是假的,就会执行大括号后面的代码.
3 简单的例子
如果(期末考试考的好)
{
你爸爸给你买新手机;
}
if(n<=3)
{
...;
}
4 注意:
A 一个if后面一定要跟条件
B 一个if只管后面的一个语句
C 表达式能够计算出bool值
if (0)
{
printf("3 > 2");
}
if else
if (true)
{
}
else
{
}
/*
else:否则
如果(条件)
{
}
否则
{
}
*/
int a = 1, b = 2;
if (a > b)
{
printf("a > b\n");
}
else
{
printf("a <= b\n");
}
else if
int a = 1, b = 1;
if (a > b)
{
printf("a > b\n");
}
else if (a < b)
{
printf("a < b\n");
}
else
{
printf("a == b\n");
}
switch语句
switch (switch_on)
{
case 1:
break;
default:
break;
}
1 语法:
switch (表达式)
{
case 值1:
语句1;
语句2;
.....;
break;
case 值2:
语句1;
语句2;
.....;
break;
// ......;
default:
语句1;
语句2;
.....;
break;
}
程序运行过程中,遇到switch,就会进入语句中. 然后根据表达式的值,寻找对应的case;
如果找到了对应的情况,就会开始执行case里面的语句,同时所有的case和default全部失效!
程序开始从上往下执行
2 翻译:
开关 (表达式的值)
{
情况下 值:
要做的事情;
打破;
// .......;
默认的情况下:
要做的事情;
打破;
}
3 例子:
开关 (你期末考试的名次)
{
情况下 1:
买新手机;
打破;
情况下 2:
买新衣服;
打破;
默认的情况下:
什么奖励都没有;
打破;
}
4 注意:
A 表达式要求能够求出确定的整型的值
B case后面的值,相互之间不能相等
int num = 1;
switch (num)
{
case 1:
printf("买新手机");
break;
case 2:
printf("买新衣服");
break;
default:
printf("什么奖励都没有");
break;
}
循环语句
将某一件事情 不断地重复
注意: 控制循环
while循环
/* while循环 */
// while: 当...时
// 当满足循环条件时就循环
// 当循环条件为真时就循环
1 语法
while (表达式)
{
循环体;
}
2 控制循环
变量:循环控制变量
int num; // 循环控制变量
num = 0; // 循环控制变量的初始值
while (num < 10) // num < 10 循环条件
{
printf("num = %d\n", num);
num = num + 2; // 改变循环控制变量的值
// 每次+1 循环控制变量的改变量
}
do while循环
/* do while循环 */
// do: 执行 while: 当...时
1 语法:
do
{
} while (表达式);
2 翻译:
执行
{
循环体;
} 当 (条件)
A 不论循环条件是否为真 都会先do一次(执行一次循环体)
B 如果条件为真 继续循环
C 为假 结束循环
3 举个例子
int num = 100; // 定义循环控制变量 并且给初始值
do
{
printf("num = %d\n", num);
num++; // 改变循环控制变量
} while (num < 10); // 循环条件
for循环
/* for循环 */
1 语法
for (表达式1;表达式2;表达式3)
{
// 循环体;
}
2 翻译
为 (循环控制变量的初始值;循环条件;循环控制变量的改变量)
{
要重复的事情;
}
A 三个表达式都可以省略,但是;不能省略
B 省略的表达式 可以写在其他地方
3 举个例子
for (int i = 0; i < 10;i++)
{
printf("i = %d\n", i);
}
int num = 0;
for (; num < 10;)
{
printf("num = %d\n", num);
num++;
}
转移语句
break
作用:
-
跳出一层循环
-
跳出一层switch
用法:
用在循环和switch中
continue
作用:
结束当前一次循环,继续下一次循环
用法:
用在循环中
for (int i = 0; i < 10; i++)
{
if (5 == i) // (i == 5)
{
continue;
}
printf("i = %d\n", i);
}
goto
作用:
无条件转移
用法:
一般不用
printf("111\n");
printf("222\n");
HERE:printf("333\n");
printf("444\n");
printf("555\n");
goto HERE;
int a = 0;
printf("111\n");
printf("222\n");
HERE:printf("333\n");
printf("444\n");
printf("555\n");
a++;
if (a < 10)
{
goto HERE;
}
while (true)
{
while (true)
{
while (true)
{
while (true)
{
goto HERE;
}
}
}
}
HERE:;
语句嵌套
一个语句中有其他语句
int n, m;
n = m = 0;
if (true)
{
if (true)
{
switch (n)
{
case 1:
switch (m)
{
case 0:
while (true)
{
do
{
for (int i = 0; i < 10; i++)
{
}
} while (true);
}
break;
default:
break;
}
break;
case 2:
break;
default:
break;
}
}
}
如:99乘法表
通过外层循环 控制内层循环
// 使用循环语句 在控制台 打印九九乘法表
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d=%2d ", j, i, i*j);
}
printf("\n");
}
福利部分:电子时钟
#include <stdio.h>
#include <Windows.h>
int main()
{
// 21:08:06
int h, m, s; // 时分秒
scanf("%d %d %d", &h, &m, &s);
int num = h * 60 * 60 + m * 60 + s;
while (true)
{
h = num / 3600;
m = (num / 60) % 60;
s = num % 60;
printf("%d:%02d:%02d\n", h, m, s);
/*if (h<10||m<10||s<10)
{
printf("0%d:0%d:0%d\n", h, m, s);
}
else
{
printf("%d:%d:%d\n", h, m, s);
}*/
num++;
Sleep(1000);
if (h==23&&m==59&&s==59)
{
num = 0;
}
system("cls");
}
return 0;
}