......
if
switch
while
for
do while
......
选择
switch语句:一个 switch 语句允许测试一个变量等于多个值时的情况
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a;
printf("input integer number: ");
scanf("%d",&a);
switch(a)
{
case 1:printf("Monday\n");
break; //必须要有break,否则会一直运行下去不会跳出switch语句
case 2:printf("Tuesday\n");
break;
case 3:printf("Wednesday\n");
break;
case 4:printf("Thursday\n");
break;
case 5:printf("Friday\n");
break;
case 6:printf("Saturday\n");
break;
case 7:printf("Sunday\n");
break;
default:printf("error\n");
}
}
if / if...else语句:一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 100;
/* 检查布尔条件 */
if( a == 10 )
{
/* 如果 if 条件为真,则输出下面的语句 */
printf("a 的值是 10\n" );
}
else if( a == 20 )
{
/* 如果 else if 条件为真,则输出下面的语句 */
printf("a 的值是 20\n" );
}
else if( a == 30 )
{
/* 如果 else if 条件为真,则输出下面的语句 */
printf("a 的值是 30\n" );
}
else
{
/* 如果上面条件都不为真,则输出下面的语句 */
printf("没有匹配的值\n" );
}
printf("a 的准确值是 %d\n", a );
return 0;
}
注意用 if 判断语句时,一定要用 == 而不是 =
int num = 3;
if(num = 5)//会进入后面的打印,失去了判断功能
{
printf("hehe\n");
}
为了避免这种错误,可以把数字提前:
int num = 3;
if(5 == num)//少一个 = 就会报错
{
printf("hehe\n");
}
if...else语句中else只和最近的if语句配对,例如:
int a = 0;
int b = 2;
if (a == 1)
if (b == 2) printf("hehe\n");
else printf("haha\n");
上述代码输出为空
循环
while 循环:要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句
/*
while(condition)
{
statement(s);
}
*/
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* while 循环执行 */
while( a < 20 )
{
printf("a 的值: %d\n", a);
a++;
}
return 0;
}
for 循环:循环允许编写一个执行指定次数的循环控制结构
/*
for ( init; condition; increment )
{
statement(s);
}
*/
#include <stdio.h>
int main ()
{
/* for 循环执行 */
for( int a = 10; a < 20; a = a + 1 )
{
printf("a 的值: %d\n", a);
}
return 0;
}
关于for( int a = 10; a < 20; a = a + 1 )这种初始化,有些编译器运行上述语句时会报错,如下:
[Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
意思是“不允许在for内部定义变量”。
改为:
int a=10;
for(; a<20; a=a+1){
}
即可
do...while 循环:在循环的尾部检查它的条件,do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环
/*
do
{
statement(s);
}while( condition );
*/
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* do 循环执行,在条件被测试之前至少执行一次 */
do
{
printf("a 的值: %d\n", a);
a = a + 1;
}while( a < 20 );
return 0;
}
循环控制语句:break, continue, goto
break 语句:终止循环或 switch 语句
- 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
- 它可用于终止 switch 语句中的一个 case。
while 循环加 break:
while (testExpression)
{
//codes
if(condition to break){
break;
}
}
// jump here // break out of the loop
eg:
int i = 0;
while (i < 10)
{
if (i == 5) break;
printf("%d ", i);
i++;
}
循环会在i==5时被终止,结果:
for循环加 break:
for (init; testExpression; update)
{
//codes
if (condition to break)
{
break;
}
//codes
}
//jump here, break out of the loop
do...while 循环加 break:
do
{
if(condition to break){
break;
}
}
while (testExpression);
//jump here //breakout of the loop
continue 语句:continue 会跳过当前循环中的代码,强迫开始下一次循环
while 循环加入 continue
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
while (i < 10)
{
if (i == 5) continue;
printf("%d ", i);
i++;
}
return 0;
}
结果:
这是因为continue会强制结束本次循环,在 i==5 之后会自动跳准到 i<10 的判断,再次进入 if 语句,陷入死循环
for 循环加入 continue
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; i++)
{
if (i == 5) continue;
printf("%d ", i);
}
return 0;
}
结果:
不会陷入死循环,因为 continue 之后进入下一次循环 i++ 不会再进入 if 语句
代码风格:另外代码风格很重要,要易读,方便理解
//代码1
if (condition){
return x;
}
return y;
//代码2
if (condition)
{
return x;
}
else
{
return y;
}
代码1和2效果相等,虽然2看上去更繁琐,但是2更为直观