分支语句、循环

分支语句与循环

1.bool类型

bool只有true和false;在C语言中,真(非0)有千千万,假(0)只有一种.

1.1几种bool类型

int a = 0;//false
char ch = '0';//true
char ch2 = '\0';//false  空字符
char ch3 = 0;//false
int *ptr = NULL;//false 空在C中宏定义为0

1.2关系表达式:结果为bool

在这里插入图片描述

  • 关系运算符结合性均为左结合

  • ==才表示等于比较。而=表示赋值,

1.3逻辑表达式:结果是bool值

在这里插入图片描述

  • &&(简洁与):参与运算的两个表达式都为真时,结果才为真,否则为假
  • ||(简洁或):参与运算的两个表达式只要有一个为真,结果就为真,两个表达式都为假时结果才为假
  • (非运算):参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。

优先级:逻辑运算符和其他运算符优先级从低到高依次为:

  • 赋值运算符(=)<&&和||<关系运算符<算数运算符<非(!)

2.分支语句

对于要先做判断再选择的问题就要使用分支结构。
一对花括号{}就是一个代码块。

2.1单分支 双分支 多分支

  • 单分支
int a = 5,b = 0,max = 0;
	max = a;
	if (max < b)
	{
		max = b;
	}
  • 双分支/三目运算符

    if语句可用“?:”来简化表达。

    int a = 0, b = 5, max = 0;
	max = a > b ? a : b;
  • 多分支 if else
    判别键盘输入字符的类别,是否是数字字符,是否是小写字符,是否是大写字符,还有其他字符,并统计个数。

    代码示例:

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

{
	char ch;
	int connum = 0, dignum = 0, capnum = 0, amlnum = 0, othnum = 0;
	printf("input a character:");
	int a = 10;
	//逗号运算符(优先级最低)   不然会有优先级问题
	//while((ch=getchar())!='\n');
	while (ch = getchar(), ch != '\n')
	{
		if (ch < 32){
			//printf("This is a control character\n");
			connum += 1;
		}
		else if (isdigit(ch)){
			//printf("This is a digit\n");
			dignum += 1;
		}
		else if (isupper(ch)){
			//printf("This is a capital letter\n");
			capnum += 1;
		}
		else if (islower(ch)){
			//printf("This is a small letter\n");
			amlnum += 1;
		}
		else{
			//printf("This is an other character\n");
			othnum += 1;
		}
	}
	
	printf("con:%d\n", connum);
	printf("dig:%d\n", dignum);
	printf("cap:%d\n", capnum);
	printf("sam:%d\n", amlnum);
	printf("oth:%d\n", othnum);
	return 0;
	
}

结果展示:

在这里插入图片描述

  • if嵌套if
  1. C语言规定,else总是与它前面最近的if配对

2.2空语句

语句可以为空,处了末尾处的分号以外什么符号也没有。

  • 在if,while,或for语句的圆括号后放置分号会创建空语句,造成语句提前结束。

2.3 switch多分支语句

另外的一种选择结构的语句,用来代替简单的,拥有多个分支的if else语句

代码示例:

#include <stdio.h>
int main(){
	char grade = '#';
	printf("input grade(ABCDE)\n");
	scanf_s("%c", &grade);
	switch (grade)
	{
	case 65:printf("90-100\n"); break;
	//case'A':printf("90-100\n"); break;  //意思相同,不能同时存在
	case'B':printf("80-89\n");  //没有break,继续执行下一个case,直到遇见break
	case'C':printf("70-79\n"); break;
	case'D':printf("60-69\n"); break;
	case'E':printf("<60\n"); break;
	default:printf("input error\n"); break;
	}
}

结果展示:
在这里插入图片描述

  • 遵循规则:

    1. switch(整型变量表达式):byte.short.int.char 。不能为浮点数,字符串,必须是整型。
    2. case标签必须是常量表达式
    3. case标签不许是唯一常量,不允许有两个具有相同的常量值
    4. default不是必须的,没有default时,若果所有case都匹配失败,那么switch中就什么都不执行,接着执行后续代码。

3.循环语句 while;do{}while;for(;;)😉

  • while{} 语句

    先判断再执行
    在这里插入图片描述

  • do{}while(表达式)

先执行后判断

  • for(;😉{}
    在这里插入图片描述
    代码示列:
#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for (sum = 0, i = 1; i <= 3; ++i, sum = sum + i)//逗号表达式
	{

	}
	printf("sum:%d\n", sum);
	return 0;
}

结果展示:
在这里插入图片描述

  • 跳转语句:break,continue,goto,return
  1. break:只能用在switch语句中,跳出switch或提前终止循环,转去执行switch语句或循环语句之后的语句。

  2. continue:终止本次循环,开始下一次循环。

    两者区别:continue语句结束的只是本次循环,而break结束的是整个循环。

  3. goto:控制程序从goto语句所在地方转移到标号语句处,最好向下且只能在本函数中跳转。

  4. return:用于结束函数的执行,返回调用者,如果是主函数,则返回操作系统

今天也要好好学习呀~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿可可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值