龙空技术网

我的C语言学习日记04-分支语句和循环语句

大家好我是小小白 109

前言:

此刻朋友们对“判断语句和赋值语句”大体比较关注,咱们都想要知道一些“判断语句和赋值语句”的相关文章。那么小编同时在网摘上网罗了一些有关“判断语句和赋值语句””的相关知识,希望你们能喜欢,各位老铁们一起来学习一下吧!

分支语句和循环语句

分支语句包括:if语句,switch语句

循环语句包括:for语句,while语句,do-while语句

if语句

int main(){	int age = 127;	if (age < 18)		printf("未成年\n");	else		printf("已成年\n");return 0;}

进阶用法

int main(){  int age=10;    if (age < 18)		printf("未成年\n");	else if (age < 28)		printf("青年\n");	else if (age < 50)		printf("壮年\n");	else if (age < 90)		printf("老年\n");	else		printf("长寿\n");   return 0;}

应用

int main(){  int age=100;	if (age < 18)		printf("未成年\n");	else if (age >= 18 && age < 28)		printf("青年\n");	else if (age >= 28 && age < 50)		printf("壮年\n");	else if (age >= 50 && age < 90)		printf("老年\n");	else		printf("长寿\n");  return 0;}

若要执行多条语句需要使用代码块,{}就是代码块

int main(){  int age=10;	if (age < 18) {		printf("未成年\n");        printf("不建议谈恋爱\n"); }	else  {    if (age >= 18 && age < 28)		printf("青年\n");	else if (age >= 28 && age < 50)		printf("壮年\n");	else if (age >= 50 && age < 90)		printf("老年\n");	else		printf("长寿\n"); }  return 0;}
else的就近原则

else和最近的if匹配

int main(){  int a=0;  int b=2;  if(a==1)//和else对齐    if(b==2)      printf("hehe\n");  else    printf("haha\n");  return 0;//不打印结果}
int main(){  int a=0;  int b=2;  if(a==1)    if(b==2)//和else对齐      printf("hehe\n");    else      printf("haha\n");  return 0;//不打印结果}

两个代码都不打印结果,因为无论else和谁对齐else都和最近的if匹配;

所以第一个if条件不成立,下一条if语句无法执行,从而与之匹配的else语句也无法执行,程序直接结束

注意:if(是条件判断语句),判断相等的语句==有时会写成赋值语句=,造成bug

int main(){  int num =4;  if(num=5)//此处是赋值语句=,而不是判断语句==  {    printf("呵呵\n");  }  return 0;}

程序运行就出现问题,无论num为多少都会被赋值为5,然后打印呵呵

建议可以写成if(5==num),这样当写成赋值语句时就会报错,提高安全性

练习

1.判断一个数是否为奇数

int main(){	int i = 0;	while (i <= 100)	{		if (i % 2 == 1)			printf("%d ", i);		i++;	}	return 0;}
switch语句
int main(){	int day = 0;	scanf("%d", &day);	switch (day)	{	case 1:		printf("星期一\n");		break;	case 2:		printf("星期二\n");		break;	case 3:		printf("星期三\n");		break;	case 4:		printf("星期四\n");		break;	case 5:		printf("星期五\n");		break;	case 6:		printf("星期六\n");		break;	case 7:		printf("星期七\n");		break;	default:		printf("输入错误\n");	}	return 0;}

与case语句配合,case语句后需为整型常量表达式;switch后需为整型表达式;break跳出,若没有break则继续执行下一条语句,default为所有的case标签都不匹配的情况

break是跳出循环

continue是从此语句处跳过循环体的本次循环(continue剩下的语句不再执行)

while语句

打印1-10的数字

int main(){	int i = 1;	while (i <= 10)	{		printf("%d ", i);		i++;	}	return 0;}

在循环中break和continue的区别

//-------break-----int main(){	int i = 1;	while (i <= 10)	{		if (i == 5)			break;		printf("%d ", i);		i++;	}	return 0;//打印结果为1 2 3 4结束}
//---------continue------int main(){	int i = 1;	while (i <= 10)	{		if (i == 5)			continue;		printf("%d ", i);		i++;	}	return 0;//打印结果为1 2 3 4死循环}//--------------------int main(){	int i = 1;	while (i <= 10)	{        i++;		if (i == 5)			continue;		printf("%d ", i);		}	return 0;//打印结果为1 2 3 4 6 7 8 9 10}
getchar和putchar

getchar()获取字符,putchar()输出字符

int main(){  int ch = 0;  while ((ch = getchar()) != EOF)  //getchar()获取字符,putchar()输出字符  //EOF 即end of file                                    // 文件结束标志,本质是-1 {                               //获取不到EOF一直执行循环,输入ctrl+z可以输入EOF	putchar(ch); }   return 0;}

应用

int main(){	int ret = 0;	int ch = 0;	char passward[20] = { 0 };	printf("请输入密码:");//输入密码后,密码和所按的回车即\n也被存储在输入缓冲区	scanf("%s", passward);//此时输入密码,并把密码存放在passward数组中,此时输入缓冲区中还剩下\n	//此时若无getchar();语句,则\n被取走	//被取走的\n的ASCLL码值为10	printf("请确认(Y/N):");	//getchar();//清空输入缓冲区,即把\n取走以免\n的ASCLL码值进入判断语句	//   //但是当缓冲区字符超过一个就失效了	while ((ch = getchar()) != '\n')//循环取,直至取到\n停止	{		;	}	             		ret = getchar();//此时输入缓冲区为空取不到值,等待用户输入	if (ret == 'Y')	{		printf("确认成功\n");	}	else	{		printf("放弃确认\n");}

一个只输出数字的程序

int main(){	int ch = 0;	while ((ch = getchar()) != EOF)	{		if (ch<'0' || ch>'9')//小于0或者大于9的跳过打印,在0-9内打印			continue;//跳过本次循环体		putchar(ch)	}  //只输出数字 	return 0; }

for语句

优势:优化while语句的结构零散

语法:for(表达式1;表达式2;表达式3)

循环语句;

表达式1为初始化部分,用于初始化变量的,只执行一次。表达式2为条件判断部分,用于判断循环什么时候终止;表达式3为调整部分,用于循环条件调整。

初始化:表达式1

实际循环部分:表达式2→循环语句→表达式3→表达式2

循环路线图

判断部分本质是判别真假即0或者非零(0为假非0为真),谨记!!!!!!!

int main(){	for循环本质是优化while循环	while循环的组成:	       int i=0;  ←初始化		   while (i < 10)  ←判断部分			{					.....       ←循环部分						i++;←调整部分			}	-------------用for循环打印1-10-------------	int i = 0;	//  初始化   判断   调整        //判断部分本质是判别真假即0或者非零,谨记!	//     ↓     ↓     ↓	for (i = 1; i <= 10; i++)	{		printf("%d ", i);  //←循环	}	-----for循环和while循环中的continue对比-----	int i = 0;	for (i = 1; i <= 10; i++)	{		if (i == 5)			continue;//←执行到此语句时跳过本次循环体,然后执行调整部分i++		printf("%d ", i);	}//打印结果为1 2 3 4 6 7 8 9 (结束循环)	--------对比while循环------	int i = 1;	while (i <= 10)	{		if (i == 5)			continue;//←执行到此语句时跳过本次循环体,i++也在循环体中被跳过,进入死循环		printf("%d ", i);		i++;	}//打印结果为1 2 3 4(仍然在循环中)	----------不可在for循环体内修改循环变量,防止失控----------	int i = 0;	for (i = 1; i < 10; i++)	{		if (i = 5)  //修改了变量i,进入死循环			printf("haha\n");		printf("hehe\n");	}	return 0;}

注意:for循环的条件可以省略,但是尽量不要省略,容易出现bug

int main(){	int i = 0;	int j = 0;	for (; i < 10; i++)//    i=0                    1  2  3  4  5  6  7  8  9  10 循环结束	{		for (; j < 10; j++)//j=0 1 2 3 4 5 6 7 8 9 10 10 10 10 10 10 10 10 10  10		{			printf("hehe\n");		}	}	//只打印10个hehe	//第二个for循环缺少初始化,所以j的值保留了	//造成的结果只有i=0的时候打印了10个hehe,其余全部因j=10跳出了循环不打印	return 0;}
练习

判断循环多少次

(核心:判断条件为赋值时零为真非零为假

判断条件为判断时符合条件为真,不符合为假)

int main(){	int i = 0;//       此处k赋值为1,1为非零恒为真,所以死循环	int k = 0;//         ↓	for (i = 0, k = 0; k = 1; i++, k++)//若改为for(i=0,k=0;k=1;i++,k++)恒为真,死循环   		printf("1\n");                 //若改为for(i=0,k=0;k==0;i++,k++)则循环一次	return 0;}	//-------------------int main(){	int i = 0;//       此处k赋值为0,0恒为假,所以不进入循环	int k = 0;//         ↓	for (i = 0, k = 0; k = 0; i++, k++)   		printf("1\n");                 	return 0;}	//-------------int main(){	int i = 0;//       此处判断k值为0则条件成立,当k的值是0时为真,所以循环一次	int k = 0;//         ↓	for (i = 0, k = 0; k ==0; i++, k++)  		printf("1\n");                 	return 0;}
do while循环

先执行一次循环体,再判断进入循环

int main(){  	//打印1-10	int i = 1;	do	{		printf("%d ", i);		i++;	} while (i <= 10);  return 0;}

执行流程

break和continue的区别

int main(){	int i = 1;	do	{		if (i == 5)			//break;    打印结果1234结束			//continue; 打印结果1234未结束循环		printf("%d ", i);		i++;	} while (i <= 10);  return 0;}

标签: #判断语句和赋值语句 #跳过本次循环的语句 #跳过本次循环的语句怎么写