C语言笔记:2.分支与循环语句

2.分支与循环语句


前言

提示:C语言笔记用作对自己学习的总结以及以后方便查阅遗忘知识。
以后也会查缺补漏。


什么是语句?

在C语言中由一个分号(;)隔开的就是一条语句。

1.分支语句

1.1、分支语句(选择结构)

格式:
(1)没有else部分:

	if(表达式)  语句1;

(2)有else部分:

if(表达式)  
	语句1;
else
	语句2;

(3)else嵌套多个if:

if(表达式1)
	语句1;
else if(表达式2)
	语句2;
else if(表达式3)
	语句3;
else
	语句4;

表达式结果为真,则语句执行。
(0表示假,非0表示真)

注:通常情况下else是与距离自身最近的else匹配。

if 1
if 2
else
此时else是与if2匹配

如果是

if 1
{
if 2
}
else
此时else是与if2匹配

例子

if(condition)
{
return x;
}
returny;
条件成立则返回x,否则返回y

1.2、多分支语句(switch语句)

格式:

switch(整型表达式) 
 { 	 
 	case 表达式结果1: 		
 		语句1;
 		break;
 	case 表达式结果2: 		
 		语句2;
 		break;
 	case 表达式结果3: 		
 		语句3;
 		break;
 	case 表达式结果4: 		
 		语句4;
 		break;
 	default:
 		语句5;
 		break;
 	 }

注意:
(1).switch()中()里面的表达式必须是整形的,不能为小数或者其他类型的。
(2).break是指跳出{}包含的语句,且break以后的语句不会执行。
比如

switch()
{
	case 1:
	case 2:
		break;
}
此时如果从case 1开始执行的话,同时会执行case 2,
然后才会执行break,跳出这个switch语句。

(3). default表示除了case语句中有的选项之外的所有选项。
(4).case和default是没有顺序之分的,也可以放在上面,
建议放在最下面。

2、循环语句

  1. while语句
  2. for语句
  3. do while语句

2.1 while语句

格式:

while(表达式) 
 { 	  		
 语句;
 }

continue作用:
比如while语句里面,在continue后面的语句不会执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断.
注意:在while里面使用continue可能会导致死循环

2.2 for语句

格式:

for(表达式1;表达式2;表达式3) 
 { 	 	
 	循环语句;
 }

表达式1:初始化部分
表达式2:条件判断部分
表达式3:调整部分

for循环建议:

  1. 不可以在for循环体内修改循环变量,防止for循环失去控制
  2. 建议for语句的循环控制变量的取值采用前闭后开区间的写法,例如for(i=0;i<10;)。
    (建议但不是必须)

for( ; ; )
在这个for语句中,不加任何表达式,执行的是一个死循环
for(k=0;k=0;k++)
当表达式2为0时,即判断为假,直接结束,循环0次

2.3 do while语句

格式:

do
	循环语句;
while(表达式);

while表达式为真就循环,为假就结束循环了。

实际应用

1.折半查找算法(二分查找算法)

说明:找中间元素,去掉一半

2.辗转相除法

说明:
求m与n的最大公约数
若m>n
m%n=r -->r为m除以n的模
(1)m n r
(1)n r m%n
反复执行(2)直到r为0,则此时n就是m和n的最大公约数

int main()
{
	int m = 0;
	int n = 0;
	int r = 0;
	scanf("%d%d", &m, &n);
	while (m%n)
	{
		r = m%n;
		m = n;
		n = r;
	}
	printf("%d\n", n);
	return 0;
}

3.计算闰年

闰年:
(1)能被4整除不能被100整除的年份
(2)能被400整除的年份
需求:找出1900—2020年之间的闰年,并计算一共有多少个闰年

#include<stdio.h>
int main()
{
	int count = 0;
	int n = 0;
	for (n = 1900; n <= 2020; n++)
	{
		if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
			printf("%d\n", n);
		count++;
	}
	printf("一共有%d个闰年\n", count);
	return 0;
}

4.素数的判断方法

素数:只能被1和自身整除的自然数。(1不是素数)
需求:找出1—100里面的素数

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 1; i <= 100; i++)
	{
		for (j =2; j < i; j++)
		{
			if (i%j == 0)
				break;
			if (j = i)
			{
				
				printf("%d\n", i);
			}
				
		}
	}
	return 0;
}

5.九九乘法表

1 * 1=1
1 * 2=2 2 * 2=4
1 * 3=3 2 * 3=6 3 * 3=9

#include<stdio.h>
int main()
{

int i = 0;
int n = 0;
int sum = 0;
while (n<9)
{
	n++;
	for (i = 1; i <= n; i++)
	{
		sum = i*n;
		printf("%d*%d=%-2d", i, n, sum);
		printf(" ");

	}
	printf("\n");

}
return 0;
}

注:%2d表示两位右对齐
%-2d表示两位左对齐

总结

(1).getchar() 表示输入
puchar() 表示输出

例如:

int ch=getchar();
putchar(ch);
printf("%c\n",ch);
return 0;

(2).在scanf("%d",&x)里面如果输入1234 ABCD的话,输出结果为1234,不会有ABCD,即scanf只会读取空格前面的值。
(3).
(4).
(5).
(6).
(7).
(8).
(9).

上一篇:AtCoder Beginner Contest 222 (E~G)


下一篇:axios的使用