<7>运算符
1)分类:一些基本的运算符分类有:算术、关系、逻辑、赋值
算术运算符有:+,-,*,/,%;
对于/被除数和除数都是int则结果是int,有一个是float结果就是float;对于%,被余数和余数一定要是int,结果正负和被余数相同
关系运算符有:>,<,>=,<=,!=
逻辑运算符有:&&,||,!
对于A&&B,只要A是假,则B不进行运算;对于A||B,只要A是真,则B不进行运算;C语言中对真假的判断,0为假,非0为真。
赋值运算符有:=,+=,-+,*=,/=
比如A+=B,意思是A=A+B
2)优先级:算术>关系>逻辑>赋值
3)一些琐碎的运算符
逗号表达式
形式是(表达式A,表达式B,表达式C,表达式D),从左到右依次执行表达式A,B,C,D,假如是a=(A,B,C,D),结果是a为最后一个表达式D的值
3目运算符
形式是A?C:D,意思是,如果A是真,执行C,为假,执行D
自增自减
i++,++i。举例来说,如果int i=1;a=i++;b=++i;那么a为1,b为2。
<8>流程控制
顺序执行,选择执行,循环执行
1) 顺序执行
顺序执行也就是,从上往下,一条条依次执行
2) 选择执行
有两类,一是if,一是switch
先说if:基本格式是if(表达式)
语句A;
else
语句B; 表达式为真,执行A,否则执行B。
还有一种是: if(表达式1)
语句A;
else if(表达式2)
语句B;
else if(表达式3)
语句C;
else
语句D;
如果A执行,则1成立;如果B执行,则1不成立2成立;如果C执行,则12不成立3成立;如果D执行,则123都不成立。
几个注意点:
1、if和else的搭配,else可以省,if不能省;
2、只有if和else if后面加(表达式),else后面不能加;
3、if只能控制一条语句的执行与否,比如说:
if(表达式)
语句A;
语句B; 只能控制语句A的执行与否,而B一定执行。
那么要同时控制多条咋办呢?用{}括起来。比如说:
if(表达式)
{语句A;语句B} 同时控制语句A和B的执行与否。
现在说switch:格式是switch(表达式)
{
case常量表达式1:语句A;break;
case常量表达式2:语句B;break;
case常量表达式3:语句C;break;
default:语句D;break;
}
有break的前提下:switch里面的表达式和常量表达式1相同,执行A;和2相同执行B;和3相同执行C;都不同执行D。
如果没有break,那么1的话执行ABCD,2的话执行BCD以此类推。也就是说,常量表达式提供的是一个入口,进入了之后就依次往下执行就是了。而在进入了之后,会屏蔽其他的case 常量表达式,只执行语句。
那么break的作用呢?有两个,一是退出switch,就像上面,二是退出循环,之后会介绍。
3) 循环执行
有两类,一是for,二是while
先说for:举个例子 for(i=1;i<4;++i)
语句;
执行的顺序是先执行i=1,然后进行判断i<4是否为真,如果为真,那么就执行语句,再执行++i。++i完成就宣告完成了一次循环。第二轮就是直接判断++i之后i<4是不是还是真,如果是,执行语句后再++i,以此往复,直到i<4的判断为假,就退出循环。
再说while:格式是while(表达式)
语句;
执行顺序是,判断表达式是否为真,为真就执行语句,语句执行结束后进行第二次判断,为真就再执行语句,以此往复,知道表达式为假退出循环。
还有一种是do...while,主要用于人机交互。格式为:
do{
语句;
}while(表达式)
执行顺序是,上来就执行语句,然后再进行表达式的判断,为真就再执行,如此往复,直到表达式为假时退出循环。
4) break和continue
break可以用来终止循环,跳出switch,终止和跳出的都是最近的一层循环或者switch。
continue用于跳过循环体的余下语句,转而判断是否要执行下次循环。
<9>函数
1) 什么是函数
逻辑上说,是能够完成特定功能的独立代码块
物理上说,能接受数据,对其进行处理后能将数据处理的结果输出返回
2) 为什么要函数
避免重复性操作,比如一个功能的代码重复敲;
有利于程序的模块化,比如一个非常问题可以可以分解为多个模块的细节实现
3) 函数的定义和执行
函数返回值 函数名(函数的形参列表)
{函数结构体}
举个例子:void max(int i,int j)
{if(i>j)
printf(“%d\n”,i);
else
printf(“%d\n”,j);}
int main(void)
{
int a=1,b=2,c=3,d=4;
max(a,b);
max(c,d);
return 0;
}
对于函数max来说 void说明没有返回值,max是函数名,i,j是形式参数。
对于main函数来说,int说明返回值是int类型(return 0),main是函数名,void说明主函数不能接收数据。
所有程序都是从main函数开始执行,就比如这个例子,先对abcd进行初始化,然后执行max(a,b),此时把a,b的值传给函数max的i和j,转而执行max函数。max函数执行结束后,形式参数i,j释放。回头去继续执行main函数,main函数中,此时到了执行max(c,d)的时候,又将c,d传给函数max的i和j,再次转去执行max函数,max执行结束后,形式参数i,j释放后返回main函数。main函数没东西执行了,这个程序结束。
4) 函数的声明
为什么需要函数声明?
调用必须在定义之后,但是如果在定义之前就调用之后,会报错,怎么处理呢?那就需要用到函数声明。也就是说,可以用来协调函数调用和函数定义的顺序。
举个例子: int f(void);//这个就是函数声明
int main(void)
{
int a;
a=f();//函数调用
return 0;
}
int f(void)//函数定义
{
return 1;
}
函数f,int表示函数返回值是int类型(return 1),void说明函数f不能接收数据。
这个程序,主函数先调用了f函数,而定义在后面。但是这个程序并不会报错,因为前面有函数声明的存在。这个声明,告诉编译器即将可能出现的若干个字母,表示的是一个函数,也说明了它的形参和返回值的具体情况。
5) 函数分类
有参无参,有返无返,库函数和用户自定义函数,普通函数和主函数
库函数的声明是通过#include<库函数所在的文件名.h>
主函数可以调用普通函数,普通函数不能调用主函数,普通函数之间可以相互调用。
6) return表达式返回值的类型和函数定义时候确定的函数返回值类型出现冲突
按照函数定义时候确定的返回值类型为准。
7) 如何在软件开发中合理地设计函数解决实际问题
功能要单一,多学习牛人的代码
8) 常用的系统函数
double sqrt(double x)//求x的平方根
int abs(int x)//求x的绝对值
double fabs(double x)//求x的绝对值
有本书推荐:《机械工业turboc2.0实用大全》
9) 变量的作用域和存储方式分类
作用域:全局变量和局部变量
全局变量是定义在所有函数(包括主函数)外面的,作用的范围是从定义的位置往下到整个程序结束
局部变量是在一个函数内部定义的,也包括局部变量也是局部变量,作用范围是从定义的位置往下到这个函数结束。
存储方式:静态变量、自动变量、寄存器变量
标签:语句,第二课,--,max,运算符,int,执行,表达式,函数 From: https://www.cnblogs.com/fjcz/p/16954006.html