1、一些概念
1.语句
简单语句
	单语句:约定以;结束
	
		1+2;
		return 0;
		
表达式语句和表达式的区别
	1+2 这是一个表达式
	1+2;这是一个语句
	
	a = 5 赋值表达式
	a = 5;赋值语句
	
	;//空语句
	
复合语句
{}语句块
	{
		接 0 个或多个单语句
		也可以是复合语句
	}
	
如:	
if 语句
switch 语句
while 语句
do while 语句
return 语句
······

需要了解c程序的设计结构(c程序的主体是由函数组成,函数内部都是由c语句组成)
设计结构的分类
	顺序结构
		int main()
		{
			int a = 1;
			a = 2;
			a = 3;
		}
	分支结构(选择结构)
		if 语句
		switch 语句
	循环结构
		while 语句
		do while 语句
		for 语句
		
if 语句
if语句表达程序员的某个意图?B
A 判断 	B选择
if:如果、假如
如:先辈找男朋友的标准
 if (红茶泡的好)
	可以考虑
else 哼,哼,哼啊啊啊

if (按一个条件)
	满足这个条件需要执行的操作

if 语句的三种形式

(1) if 表达式
语句块


如果表达式的值为真(非0,条件成立),则执行语句

表达式:任意的c语言合法的表达式都可以,因为所有的表达式都有一个值
"某个条件"

语句块:满足条件需要执行的操作
		例如:
			if(1)
				printf("hello\n");

!!!编程建议:不管if后面有没有语句,先打一对大括号{},宣示if的主权,确定if的管辖范围
	因为if只能管到后面第一个语句(语句块)(没有大括号的情况下,碰到;if就结束了)
	
		int a = 1,b = 0;
		if(a == 1)
			a++;//在if管辖范围内
			b++;//不属于if管辖范围
			
			if只能管到a++这一条语句

(2)以李田所的择偶标准为例
假如(是男的)
考虑
否则
哼,哼,哼啊啊啊

if (条件) 条件:也是c语言任意合法的表达式都可以
语句1
else
语句2
	执行过程:
			假如条件成立,则执行语句1,否则执行语句2
			
			例子:
				int a = 1,b = 2;
				if(a > 0)
				{
					a = 3;
				}
				else
				{
					b = 3;
				}
				最终改变的是a的值,b的值就不变(选择执行)
		编程建议:不管if和else后面有没有语句,都先打一对大括号{}以宣示主权,确定管辖范围

(3)
if(条件1)
	语句1
else if(条件2)
	语句2
···
else if(条件n)
	语句n
else
	语句n+1

			(1)永远只会选择1个语句块执行(必要的)
			(2)各个条件之间应该是互斥关系
			(3)各个条件的概率和为1
					(2)(3)应该是一个合格的程序员写出的代码要满足的条件
			
		int a = 100,b = 10;
		if(a > 0)
			b = 0;
		else if(a > 20)
			b = 1;
		最终b的结果是:0

做一个练习:
	int num,cost;
	if(num > 500 && num <= 1000)
			cost = 1;
	else if(num > 1000 && num <= 1500)
			cost = 2;
	else if(num > 1500 && num <= 2000)
			cost = 3;
	else 
			cost = 4;
		写出因变量cost和自变量num的分段函数关系



写一个代码,完成如下功能
(1)从键盘输入一个字符,要求:
		如果输入的是小写字母,则输出它的大写字母
		如果输入的是大写字母,则输出它的小写字母
		例如:输入:s 输出:S
int main()
{
char a;
printf("请输入一个字母:\n");
scanf("%c",&a);

if((a >= 65) && (a <= 90))
{
	a = a + 32;
	printf("该字母的小写是:%c\n",a);
}
	else if((a >= 97 ) && (a <= 122))

	{
			a = a - 32;
			printf("该字母的大写是:%c\n",a);
	}
		else
			printf("请输入正确的字符类型!\n");
return 0;
}


(2)从键盘获取三个数,输出其中最小的那个
int main()
{
int a,b,c;
printf("请输入三个数,以空格分隔:\n");
scanf("%d %d %d",&a,&b,&c);

if((a == b) && (b == c))
{
printf("三个数相等!\n");
}
else if((a > b) && (b > c))
{
printf("%d最小!\n",c);
}
else if((a < b) && (a < c))
{
printf("%d最小!\n",a);
}
else if((a == b) && (b > c))
{
printf("%d最小!\n",c);
}
else if((b == c) && (b > a))
{
printf("%d最小!\n",a);
}
else
printf("%d最小!\n",b);
return 0;
}


#if语句的嵌套问题
"条件里面分条件:在if或者else语句的后面,又包含一个或多个if/else语句。称为if语句的嵌套"

	以野兽先辈的择偶标准为例
		假如(是男的)
			又假如 strong
				满意
			否则
				不考虑
		否则
			哼,哼,哼啊啊啊啊
			
else 的匹配问题:原则:else总是与它上面的、最近的、同级的、未配对的if匹配。


代码规范问题:
代码要缩进
为什么要缩进?使得代码层次更清晰,逻辑更严密,看起来更舒服。
如何缩进?TAB

c语言函数不需要缩进,顶格写
同级别的语句的第一个字母在一条竖线上
左花括号和右花括号要成对打,也要在一条竖线上


例子:
假如一个这样的题目:输入1~12对应的数字,输出1~12对应的月份单词

这样的例子,仿佛是要列举所有的情况
用if语句显然不太合适

switch语句:
switch语句是专门用来列举(待列举的表达式)的所有情况的

switch语句让"待列举的表达式的值"与后面的case值做匹配,一旦匹配成功(值相等),则从那个case后面执行语句,一直往下执行,直到遇到break或者switch结束

	如果所有的case都没有匹配成功,则匹配default

switch(&ch)
{
	case 1:printf("January\n");break;
	case 2:printf("February\n");break;
	case 3:printf("March\n");break;	
	default:printf("请输入正确的月份!\n");break; 
}

关于switch的几点说明,switch后面那个"待列举的表达式"可以是一个整型类型的表达式(可变),或者变量
						因为只有整型才能列举
						
case后面的值, 必须是一个常量或者常量表达式,并且后面的值不能相同
	3 + n :变量表达式
	3 + 1 :常量表达式
	
	int m;
	switch(m+1)//可以
	
	switch(2);//不行
	
	case 1+2+3+1000;//可以,常量表达式
	case m;//不行,m不是常量
	case 1006;//不行,上面已经列举1006这个情况了
	
	break:用来跳出它(break所属的switch)
	
各个case和default出现的次序(顺序)不影响匹配结果
case后面的语句可以省略,意思是:多个case可以共用一组语句
	int m;
	switch(m)
	{
		case 1:
		case 2:
		case 3:
			printf("xxx\n");
	}
	

逸一时,误一世