1.分支
1.1 if语句
0为假(表达式为假),语句不执行 非零为真(表达式成立),语句执行
例如:50>3
返回1;13>20
返回0
1.1.1 else问题
- if…else语句中,else后面不能直接跟括号
int main()
{
int a = 0;
scanf("%d", &a);
if (a > 0)
{
if (a % 2 == 0)
printf("%d是偶数", a);
else
printf("%d是奇数", a);
}
else if (a <= 0)
printf("%d不是整数", a);
return 0;
}
其中代码
if (a % 2 == 0)
printf("%d是偶数", a);
else
printf("%d是奇数", a);
嵌套在if语句中,构成嵌套的if语句。
- 悬空else问题
else
总是跟最接近的if
匹配
注:多个关系运算符不宜连用,常量放在左边不容易错
错误示范:i<e<o
走了
if
就不走else if
如果有多个if
,就会都走一遍
1.1.2 逻辑操作符
逻辑操作符 | 代表含义 |
!(逻辑反运算符) | 改变真假 |
&&(与运算符) | 并且 |
1.1.3 短路
左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值
1.2 switch(表达式)
用于判断条件有多个结果的情况; 表达式必须是整形表达式;不可以是
float
或者是double
类型 case后的值必须是整形常量表达式
输入任意一个值,计算除3后的余数
int main()
{
int a = 0;
scanf("%d", &a);
switch (a%3)
{
case 0:
printf("整数");
break;
case 1:
printf("余数是1");
break;
case 2:
printf("余数是2");
break;
}
return 0;
}
注:
case
和后面的数字之间需要有空格
,每个case
语句中的代码执行完成后需要加上break
,才能跳出循环。 case 是入口,需要用break停下来
1.2.1 switch中的default
int main()
{
int a = 0;
scanf("%d", &a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
case 6:
case 7:
printf("周末");
default:
printf("输入错误");
}
return 0;
}
default的作用就是switch语句里所有的case都不成立时所要执行的语句。 default是用在switch语句中,提示输入错误
2.循环
2.1 while循环
输入正整数,逆序打印整数的每一位
int main()
{
int a = 0;
scanf("%d", &a);
while (a !=0)
{
printf("%d ", a % 10);
a=a / 10;
}
return 0;
}
2.2 for循环
用for
循环打印1~10
int main()
{
int a = 0;
for (a = 1; a <= 10; a++)
{
printf("%d ", a);
}
return 0;
}
计算1到100之间的3的倍数的数字之和
int main()
{
int a = 0;
int sum = 0;
for (a = 1; a <= 100; a++)
{
if (a % 3 == 0)
sum += a;
}
printf("sum=%d\n", sum);
return 0;
}
结果:
3.break和continue语句
break是终止循环,跳出一层循环(只能跳一层) continue是跳过本次循环的代码
注意:vs中调试是F10
4.练习
从100到200之间找到素数
int main()
{
int a = 0;
for (a = 100; a <= 200; a++)
{
int tmp = 1;
int i=0;
for (i = 2; i < a; i++)
{
if (a % i == 0)
{
tmp = 0;
break;
}
}
if (tmp == 1)
printf("%d ", a);
}
return 0;
}
5.goto语句
可以实现在同一个函数内跳到设置好的标号处
goto error