C语言总结1--分支与循环

  • 数据类型

数据类型决定在内存当中开辟空间的大小以及运算方式

定义变量:开辟空间、放置内容

char 字符数据类型       1字节

short 短整型                 2字节

int 整型                         4字节

long 长整型                  4字节

long long 更长的整型   8字节

float 单精度浮点数       4字节

double 双精度浮点数   8字节

  • 变量的分类

1.作用域

局部变量的作用域是变量所在的局部范围

全局变量的作用域是整个工程

2.生命周期

局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

全局变量的生命周期:整个程序的生命周期

  • 转义字符

例题:

#include <stdio.h>
int main()
{
   printf("%d\n",strlen("abcdef”));
//\32被解析成为一个转移字符串
   printf("%d\n",strlen("c:\test\328\test.c”));
   return 0;
}

【解析】

为什么不解析成为328,因为\ddd中, ddd表示1~3个八进制的数字,而八进制中最大只能到256,328超过最大范围

\xddd中,ddd表示三个十六进制的数字,eg:\x030


  • 分支语句和循环语句

bool类取值:!0为true 0为false

1.分支语句:if、switch 

(1)if语句例题:

悬空else(就近与if结合)

#include <stdio.h>
int main()
{
  int a=1;
  int b=2;
  if(a==2)
    if(b==2)
       printf("hehe\n");
 else
   printf("haha\n");
return 0;
}

【解析】

if(b==2)和 else 结合,所以输出的结果为0

(2)switch语句

switch(整型表达式)

{

语句项;//case语句

}

注意:检测条件只能是整型或者运算结果为整型

switch+case只能进行条件判定,break实现真正的分支,把语句列表划分成为不同的部分。(也就是匹配之后,如果连着两个case 都没有break,则会顺着往下执行)

如果表达的值与所有case标签的值都不匹配,结果就是所有语句都被跳过,程序不会终止,也不会报错,C中并不认为适合错误;此时可以在语句列表中加default子句

例题1:

#include <stdio.h>
int main()
{
	//输入1~5输出的是“weekday”
	//输入6~7输出“weekend”
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday");
		break;
	case 6:
	case 7:
		printf("weekend");
		break;
	default:
		break;
	}
	return 0;
}

switch语句可以进行嵌套,case和break之间只能写语句,不能定义变量,要定义变量则需要加{}

例题2:

#include <stdio.h>
int main()
{
	int n = 7;
	int m = 8;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{
			//switch允许嵌套
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m=%d,n=%d\n", m, n);
	return 0;
}

2.循环语句

(1)while循环

死循环:while(1)   int k=0;while(k==0)

break:跳出循环(终止循环)

continue:结束本次循环,进行下一次(本次循环中continue后边的代码不往下执行,直接跳转到while语句的判断部分)

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 15)
	{
		if (i == 5)
			continue;
		printf("%d", i);
		i = i + 1;
	}
	return 0;
}

(2)for循环

for循环中也有break和continue

注意:for语句的循环控制变量的取值采用“前闭后开区间”写法

for循环中的变种:死循环for(;;){}   for(x=0,y=0;x<2&&y<7;++x,y++)  有疑问

例题:

#include <stdio.h>
int main()
{
	//请问循环要循环多少次
	int i = 0;
	int k = 0;
	for (int i = 0, k = 0; k = 0;i++,k++)
	{
		k++;
	}
    //循环0次 原因:把0赋值给k,再判断k,k为0,此时为假,for循环不能执行
	return 0;
}

(3)do...while()循环

do...while()循环中也有break和continue

特点:循环至少先执行一次

(4)goto语句

适合场景:终止程序在深度嵌套的结构的处理过程,例如一次跳出两层或多层循环

例题:

for (...)
for (...)
{
	for (...)
	{
		if (disaster)
			goto error;//goto 到if,再到for
	}
}
...
error 
if (disaster)//处理错误情况

猜你喜欢

转载自blog.csdn.net/weixin_43807876/article/details/114694379