目录
- if语句
- 关系操作符
- 条件操作符
- 逻辑操作符:&& , || , !
- switch语句
- while循环
- for循环
- do-while循环
- break和continue语句
- 循环的嵌套
- goto语句
1.if、else语句
if(num % 2 == 1)
printf("%d 是奇数\n", num);
else
printf("%d 是偶数\n", num);
1.1 执行
if (表达式) 语句 表达式为真(非0)就执行,表达式为假(0)就不执行 ![[image-2 1 7.png|436x269]]
1.2 分支中包含多条语句
默认在if 和else 语句中默认都只控制一条语句 若多条语句,则会在循环之外
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age >= 18)
printf("成年了\n");
printf("可以谈恋爱了\n");
//不管是否成年都会输出可以谈恋爱了
return 0;
}
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age >= 18) //用{}控制多条语句
{
printf("成年了\n");
printf("可以谈恋爱了\n");
}
return 0;
}
1.3 嵌套if:else if
在if else 语句中, else 可以与另一个if 语句连用,构成多重判断。 比如:要求输入一个整数,判断输入的整数是0,还是正数或者负数。请看如下代码:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num == 0)
printf("输入的数字是0\n");
else if(num > 0) //这里的if 相当于嵌套在else语句中,形成了嵌套结构
printf("输入的数字是正数\n");
else
printf("输入的数字是负数\n");
return 0;
}
![[image-3 1 5.png|426x164]]
2. 关系操作符
3. 条件操作符
4. 逻辑操作符:&& , || , !
5. switch语句:case1 、case2、case3选择
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
6. while循环
//代码1
#include <stdio.h>
int main()
{
if(1)
printf("hehe\n"); //if后边条件满足,打印一次hehe
return 0;
}
//代码2
#include <stdio.h>
int main()
{
while(1)
printf("hehe\n"); //while后边的条件满足,死循环的打印hehe
return 0;
}
7. for循环
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
8. do-while循环:先进入一次循环再判断条件
格式:
do
语句;
while(表达式);
while 和for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳 出循环; 而 do while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表 达式为真,就会进行下一次,表达式为假,则不再继续循环。 ![[image-7 3.png|295x330]]
2. break和continue语句
2.1 break只是 跳出循环,return是后面都不再执行
return语句执行后,函数就彻底返回,后边的代码不再执行。 是一整个函数都被返回了,不管在哪里后面都不执行了。包括后面的return。 函数一定要写return,不然会出错。除非返回值viod。
2.2 continue
continue 是继续的意思,在循环中的作用就是跳过本次循环中continue 后边的代码,继续进行 下一次循环的判断
2. 循环的嵌套
2. goto语句
10.循环的嵌套
题例:找出100~200之间所有的素数,并打印在屏幕上
简单的思路步骤:
1.先枚举出所有100200之间的数字i,用for循环实现
2.用2i-1之间的数字除i,如果取余为0,那么就是素数。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)//枚举出所有100~200之间的数字i
{
int is_prime = 1;//假设是素数//不能放在循环外面,否则没有重置
for (j = 2; j <= i - 1; j++)
{
if (i % j == 0)
{
is_prime = 0;
break;
}
}
if (is_prime == 1)//不能放在大循环外面,作用域之外不生效
printf("%d ", i);
}
return 0;
}
优化代码。思路:
偶数一定不是素数;(少一半计算量)
i=a* b,那么a和b之中一定有一个小于(用反命题思考,若都大于
,则a* b>i)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)//枚举出所有100~200之间的数字i
{
int is_prime = 1;//假设是素数//不能放在循环外面,否则没有重置
for (j = 3; j <= sqrt(i); j+=2)//素数一定是奇数,一定小于$/sqrt{i}$
{
if (i % j == 0)
{
is_prime = 0;
break;
}
}
if (is_prime == 1)//不能放在大循环外面,作用域之外不生效
printf("%d ", i);
}
return 0;
}
11.go to 语句:传送门
go to next;
next:
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
用的比较少,容易导致代码打转。除非是 ![[image-1 10.png|0x0]] 本来for 循环想提前退出得使用 break ,一个break 只能跳出一层for 循环,如果3层循环嵌套 就得使用3个break 才能跳出循环,所以在这种情况下我们使用 goto 语句就会更加的快捷。
12.写程序实现电脑60s内关机
^885996
用cmd控制系统
//system 函数:执行系统命令
//stdlib.h
//strcmp 是专门用来比较两个字符串的内容的
//strcmp函数返回0,表示两个字符串相等
//string.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h> //system函数在里面
int main()
{
char input[20] = {0};
system("shutdown -s -t 60");//cmd里面输入关机指令
aa://别忘记冒号
printf("请输入“是猪头”,来阻止关机。\n");
scanf("%s", input);//input是数组,不用取地址
if (strcmp(input,"是猪头") == 0)//比较两个字符串内容
{
system("shutdown -a");
}
else
{
goto aa;
}
return 0;
}
[[错题第3讲分组和循环]]

京公网安备 11010502036488号