目录

  1. if语句
  2. 关系操作符
  3. 条件操作符
  4. 逻辑操作符:&& , || , !
  5. switch语句
  6. while循环
  7. for循环
  8. do-while循环
  9. break和continue语句
  10. 循环的嵌套
  11. 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讲分组和循环]]