五.分支语句,循环语句

一.顺序语句,选择语句,循环语句

1.选择语句

根据条件判断是否执行相关语句

int main()
{
	float w;//weight
	printf("please input your weight");
	scanf_s("%f", &w);
	if (w > 100)
	{
		printf(" please eat less");
	}
	else
	{
		printf("please eat more");
	}
}

在这里插入图片描述
在这里插入图片描述

  • switch case语句,没有break时就会依次执行 switch只可以部分的替代if else 语句
#include<stdio.h>
int main()
{
	char grade = '#';
	printf("input grade :(A B C D E):");   // a 
	scanf_s("%c", &grade);
	switch (grade)
	{
	case 'A':
	case 'a':
		printf(" 100 - 90 \n");
		break;	 // 
	//case 97:
	///	break;
	case 'B':
	case 'b':   // case 1:
		printf(" 89  - 80 \n");
		break;
	case 'C':	
	case 'c':
		printf(" 79 - 70 \n");
		break;
	case 'D': 
	case 'd':
		printf(" 69 - 60 \n"); 
		break;
	case 'E':
	case 'e':
		printf("  < 60 \n"); 
		break;
	default:
		printf("char error \n"); 
		 break;
	}
	return 0;
}
  • 注意点
'a'字符常量=>97
"a"字符串常量  
case 'a'://不支持字符串,case后面只可可以是整形常量,switch里面的语句不可以重复
case "A":

2. 顺序语句

按照语句出现的先后顺序依次执行

int main()
{
	printf("迷失的人会再迷失\n");
	printf("相逢的人会再相逢\n");
	return 0;
}

在这里插入图片描述

3. 循环语句

//三种循环方式
while()
{

}

for( ; ; )
{

}

do
{

}
while();
//无限循环语句:
while(1)
{
}
//输出1-100的和
void main()
{
	int i = 1;
	int sum=0;
	while (i <= 100)
	{
		sum += i;
		i+=1;
	}
	printf("sum=%d\ni=%d\n", sum,i);
	//sum=0;
	for (i = 1; i <= 100; ++i)
	{
		sum += i;
		//这个里面的sum的值是while循环里面的那个sum?是的
		//如果不想是上面那个的话,可以直接给sum=0
	}
	printf("sum=%d\ni=%d\n", sum, i);
	do 
	{
		sum += i;//这里面呢?这里面
		i += 1;
	} while (i <= 100);
	printf("sum=%d\ni=%d\n", sum, i);
}

在这里插入图片描述

  • for循环里面的注意点:
    for循环中, 式子1中的值只在其定义域内有效
    for ((1); (2); (3));三个里面的都可以省略
    for循环的死循环最厉害,其他的
while (1)
{

}
do {

} while (1);

都没这个厉害

4.分支语句

先判断,后选择,选分支,很靠谱
1.单分支语句
在这里插入图片描述

2.多分枝语句
在这里插入图片描述
一对花括号,就是一个代码块.

例题:
求三个数中的最大的数的五种方法:

当两个数比较大小时,将双分支改成单分支,只需将原先的数值先赋值给max,进行一次比较

//法一:
#include<stdio.h>
int main()
{
	int a, b, c,m;
	scanf_s("%d %d %d", &a, &b, &c);
	m = (a > b ? a : b) > c ? (a > b ? a : b) : c;
	printf("三者中最大的数是:%d", m);
	return 0;
}
//法二:
#include<stdio.h>
int main()
{
	int a, b, c;
	int m = 0;
	scanf_s("%d %d %d", &a, &b, &c);
	if (a > b && a > c)
	{
		m = a;
	}
	else if(b>a&&b>c)
	{
		m = b;
	}
	else if (c > a && c > b)
	{
		m = c;
	}
	printf("%d", m);
	return 0;
}
//法三:利用中间变量存储最大值
#include<stdio.h>
int main()
{
	int a, b, c;
	scanf_s("%d %d %d", &a, &b, &c);
	int t = 0;
	if (a > b)
		t = a;
	else
		t = b;
	if (c > t)
		t = c;
	printf("%d", c);
	return 0;
}

//法四:改进法三利用A存储最大值
#include<stdio.h>
int main()
{
	int a, b, c;
	scanf_s("%d %d %d", &a, &b, &c);
	if (a < b)
		a = b;
	if (a < c)
		a = c;
	printf("%d", a);
	return 0;
}
//法五:利用函数
#include<stdio.h>
int judge(int a, int b)
{
	return(a > b) ? a : b;
}
int main()
{
	int a, b, c;
	scanf_s("%d %d %d", &a, &b, &c);
	int m = judge(judge(a, b), c);
	printf("%d", m);
	return 0;
}

//法六:冒泡排序法,比较三次,防止出现213型
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int t = 0;
	scanf_s("%d %d %d", &a, &b, &c);
	if (a > b)
	{
		t = a;
		a = b;
		b = t;
	}
	else if (b > c)
	{
		t = c;
		b = c;
		c = t;
	}
	else if (a > b)
	{
		t = a;
		a = b;
		b = t;
	}
	printf("%d", b);
	return 0;
}

5.三目运算符

格式 : <表达式一> ? <表达式二> : <表达式三>
示例: (a>b)?a:b;//a,b两个值比较大小

二.bool类型

1.bool只有true和false,在c语言中的三种假分别是:空指针NULL /0/false
2.在使用时.c文件要加头文件#include<stdbool.h> ;
在.cpp文件中直接使用

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef int BOOL;//注意这里的BOOL,TRUE,FALSE是大写呀
#define TRUE 1
#define FALSE 0
int main()
{
	bool x = true;
	printf("%d", x);
	return 0;
}

在这里插入图片描述
3.关系表达式在这里插入图片描述在这里插入图片描述
错误示范

int d=a<b<c; 

改正:

做比较时,应该是:b>a&&b<c
数学语言与C语言:类型,边界,公式转化成C语言

在这里插入图片描述
4.运算符 &&(左) ||(左) !(右)
简洁与或
a&&b//左结合,当a=0时,判断到a就不往后进行
0 0
0 1
1 0
1 1

三.常见语句

1.空语句 定义 : 语句可以为空,就是除了末尾处的分号以外什么符号都没有

int i,j;
i=12;  ;   j=13;

空语句所带来的问题:
在这里插入图片描述
在这里插入图片描述
2.跳转语句 break ,continue, goto,return
在这里插入图片描述

  • break只能跳出一层循环

  • continue 结束的只是本次循环 break

    continue直接向(3)走,如果(3)里面没有合适的值,那么就会出现死循环 for ((1); (2); (3));
    
  • goto语句,最好向下跳,向上跳容易产生代码的二义性,只能在一个函数内部跳,

  • return 一旦执行,后面的都不执行,从当前函数退出 exit 都是退出 区别: exit结束进程, return 结束当前函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值