上课记录.docx
《上课记录.docx》由会员分享,可在线阅读,更多相关《上课记录.docx(24页珍藏版)》请在冰豆网上搜索。
上课记录
C语言3班
上课注意事项:
1、关闭手机
2、不许缺课【请假2次旷课1次】请假超过2次或旷课超过1次者,如果考试不合格,则不再上课
3、可以不记笔记,开通手机邮箱手机号@139.Com同时开通短信提示功能
4、缺课补课补课时间星期一到星期五的早8点至晚6点之间,补课提前预约,耳机
C语言程序设计:
程序:
指令(命令)的有序集合
编写程序就是根据程序的语法将指令按照一定的结构书写
用C语言书写的程序叫做源程序(*.C)编译(检查语法错误)目标程序(*.OBJ)链接可执行程序(*.EXE)
计算机能够执行的只有.EXE的可执行程序
程序设计方法:
结构化程序设计模块化程序设计
结构化程序设计:
不论多复杂的一个程序最终都可以看做有顺序结构,选择结构,循环结构组成
顺序结构:
按照语句在程序中书写的先后次序逐条执行变量在后面发生改变,不会影响已经执行过的语句
在C语言中变量在使用时必须有一个确定的值
选择结构:
根据某一个条件,在二者之间选其中一个执行(二选一)
ifelse语句
if(条件)
条件成立时执行的语句;
else
条件不成立时执行的语句;
循环结构:
根据某一个条件,当条件成立时反复执行一条或多条语句
吃饭吃饺子
条件:
饿执行动作:
当型循环:
循环体最少执行〇次
while(饿)
{夹饺子
蘸调料
放嘴里
吃下去
}
直到型循环:
先执行一次循环体,然后再判断条件,如果条件成立则再次执行循环体……循环体最少执行一次
do
{夹饺子
蘸调料
放嘴里
吃下去
}while(饿);
模块化程序设计:
将一个大的任务分解成若干个小任务,再将小任务分解成更小的任务,直到每个任务都只完成一个独立功能(大化小)
每个任务都叫做一个模块
C语言中模块用函数实现,一个C语言程序是由若干个函数组成,各个函数相互独立【功能独立变量独立(一个函数中定义的变量只能在本函数中使用,即便两个函数具有同名变量也代表不同的对象)】相互联系【一个函数可以使用另一个函数的结果,(一个函数可以调用另一个函数)A函数调用B函数,B函数调用C函数……函数的嵌套调用】相互平等【函数的定义相互独立,一个函数内不能再定义另一个函数】
函数可以嵌套调用,但不可以嵌套定义
一个C语言程序有多个函数组成,但有并且只能有一个主函数main,程序总是从主函数main开始执行【不论主函数main处于程序的那个位置】
定义PI代替3.14159265参加运算
执行部分
说明定义部分
函数体
函数头函数首部
函数体必须以{开始,以}结束,函数体中是语句【以分号结束一条语句可以写在一行内,也可以写在多行内,但每条语句都必须以分号结束】函数体中的语句分为说明定义部分【用来定义在本函数中使用到的变量必须在前面】和执行部分【实现函数功能的语句列表】
以#开头,单独占据一行,末尾没有分号叫做预编译定义语句
#include本程序引用了来自stdio.h文件中的内容【函数】
标识符:
标识符的命名规则:
1数字(0~9)字母(a~zA~Z)下划线(_)组成2不能以数字开头3大小写字母严格区分
标识符的分类:
1、关键字:
用来构成C语言最基本的标识符
2、预定义标识符:
编译系统预先定义好的标识符大部分是系统提供的标准库函数
3、用户定义标识符:
遵循标识符命名规则不能与关键字同名建议不要和预定义标识符同名【如果用户定义标识符与预定义标识符同名,则以用户定义标识符为准】
下列合法的:
You
Do
_if
case
34es
ef2
r4@
标识符
是
是
是
是
否
是
否
用户标识符
是
是
是
否
否
是
否
程序有多个函数组成,函数体有语句组成
语句:
表达式的后面加分号
表达式:
3+52*sin(x)5*x7+2*3
运算量:
352sin(x)x72*3
形式:
3527常量x变量sin(x)函数2*3表达式
常量:
常数在程序运行过程中值不能发生的量符号常量用#define符号常量
变量:
在程序运行过程中值可以发生的量
在计算机中所有正在被处理的数据都存放在内存中
变量的实质是:
内存中的一段存储空间
变量名的实质是:
内存中一段存储空间的名字
定义变量的实质是:
在内存中申请一段存储空间
使用变量的实质是:
使用内存中一段存储空间中的值
intx;定义变量x实质是:
在内存中申请4个字节的一段存储空间并给起一个名字叫做x
x=3实质是:
将3存入到名叫x的存储空间中
x+7实质是:
将名叫x的存储空间中的数据取出与7做加法运算
y=x+7实质是:
将名叫x的存储空间中的数据取出与7做加法运算结果再存入到名叫y的存储空间中
x=x+7实质是:
将名叫x的存储空间中的数据取出与7做加法运算结果再存入到名叫x的存储空间中
类型:
C语言的基本数据类型整型实型字符型
整型:
整数没有小数部分的数据
整型分类:
短整型2B
基本整型4B
长整型4B
有符号
signedshortint
signedint
signedlongint
无符号
unsignedshortint
unsignedint
unsignedlongint
有符号:
正数〇负数
无符号:
正数〇
定义有符号长整型变量xsignedlongintx;longx;
短整型基本整型长整型在计算机中所能表示的数据范围不同
整型数据的表示:
八进制:
0~7056
十进制:
0~956
十六进制:
0~9abcdefABCDEF0x560X56
下列合法的C语言整型常量的是:
312
876
087
0x1h
018
2a
34
0x2e
合法
合法
不合法
不合法
不合法
不合法
合法
合法
整型数据的存储:
正整数按照原码形式【二进制形式】存放:
负整数按照补码形式【原码各位取反,再加1】存放:
二进制中为了表示正数和负数,二进制形势下的最高位用来表示符号,0表示正数,1表示负数
50000000000000101原码
-51000000000000101原码
1111111111111010反码
1111111111111011补码
实型数据:
带小数部分的数据
实型数据的表示形式:
小数形式:
5.678-8.1204
指数形式:
1.58E51.58×1053.24E-33.24×10-3E和e都可以指数只能是整数
实型数据的分类:
单精度实型数据:
float4B范围约-1038~1038精度10-38有效数字7位【前7个数字上不会出现误差】
双精度实型数据:
double8B范围约-10308~10308精度10-308有效数字15~16位【前15个数字上不会出现误差】
在计算机中整型数据可以精确表示,实型数据不能精确表示
运算符:
目数:
运算符所连接的运算量的个数单目双目三目
优先级:
连续两个运算符在一起时先算与后算
结合性:
相同优先级的两个运算符在一起时先算左边的还是先算右边的
算术运算:
运算符:
()+-*/%求余
优先级:
()*/%求余+-
+-*/%双目运算符
+-*运算方法与数学上完全一致
/两个整数相除结果【商】仍为整数【不要小数部分】
45/7610/2512/522/502.5/50.515/35
%运算量必须都是整型数据结果是两个整数相除的余数45%7310%2025%41
整除余数等于0
1234/101231234%104123%1031234/1001212%102
已知整型变量x具有合法的初值,请:
用一个表达式表示x的个位数:
x%10
用一个表达式表示x的十位数:
x/10%10
用一个表达式表示x的百位数:
x/100%10
用一个表达式表示x的千位数:
x/1000%10
……
赋值运算:
运算符号:
=不是等号==
双目运算符,优先级比较低【倒数第二】,结合性从右到左
表达式:
运算量1=运算量2
要求:
①运算量1必须是变量【赋值运算符的左边只能是变量,不能是常量或普通表达式】运算量2的形式没有限制【赋值号的右边可以是常量、变量、函数、表达式等等】②赋值号的两侧运算量的类型必须相同,如果不同则先将运算量2的类型强制转换为运算量1的类型再进行赋值运算【如果整型=实型则将实型转换为整型再进行赋值(实型转换为整型,只要整数部分)】③赋值表达式的结果是运算量1的新值
intx;
x=18.9;x=18;表达式x=18.9的结果是18【x得到的新值】
intx,y,z,w,m;
x=y=z=w=m=10;
x=x+3
x+=3
y=y-4
y-=4
z=z*2
z*=2
w=w/7
w/=7
m=m%8
m%=8
+=-=*=/=%=复合的赋值运算符
强制类型转换运算:
(类型名)运算量
运算量形式不限制【常量变量表达式函数等】,类型不限制
(int)3.6表达式的结果是将3.6强制转换为int3实型数据转换为整型数据只要其整数部分
优先级比较高
(int)2.3+5.9结果是7.9(int)2.3+5.92+5.97.9
(int)(2.3+5.9)结果是8
已知实型变量x,请用一个表达式表示其结果为对x小数点后保留2位第三位四舍五入(int)(x*100+0.5)/100.0
假如x是4.56484.56
假如x是8.37528.38
4.5648456.48456.984564.56
8.3752837.52838.028388.38
(int)(x*100+0.5)/100.0
自增1自减1运算符号:
++--
运算量必须是变量,并且有一个确定的值
y=x+7表示将表达式x+7的值赋予变量y
表达式:
x++++x
x=3
y=x++表示将表达式x++的值【x的值】赋予变量y,再让x的值增加1
运行后x是4y是3
y=++x表示先让x的值增加1,再将表达式++x的值【x的值】赋予变量y
运行后x是4y是4
逗号运算符:
,表达式中运算量的形式和类型均没有要求
表达式:
运算量1,运算量2
优先级最低
结果是:
右边运算量的值
intx,y,z;
z=(x=3,x+2,y=7,y+4,x++,y++,x+y)
运行后x,y,z分别是多少?
4812
第三章顺序结构
语句表达式的后面加分号
赋值表达式赋值语句后面加分号
C语言没有输入输出语句
C语言中有关输入输出的功能由系统提供的标准库函数完成
1标准输出函数printf
格式:
printf(格式控制字符串,输出项列表)
C语言中的字符串常量使用“”引起来的内容\n表示换行
将格式控制字符串中的内容原样输出到屏幕上,将其中特定部分【以%开头特定字母结束部分】用后面输出项列表中的值替换
不同字母表示按照不同形式输出:
d按照有符号的十进制整型形式输出
u按照无符号的十进制整型形式输出
o按照无符号的八进制整型形式输出不带前导0#o带前导
xX按照无符号的十六进制整型形式输出不带前导0X#x带前导
%md对应输出项在屏幕上占m个位置如果该整数过小则该整数不起作用
%-md负号表示对应输出数据左对齐,空白位置留右边
%+d正号表示输出对应输出项的符号【正数输出+,负数输出-】
%0d左边的空白位置用0填充
f按照小数形式输出实型数据
Ee按照指数形式输出实型数据
输出项是实型时,在%与f和E直接加入+-0意义同上
%f默认小数部分保留6位,第七位四舍五入
%E默认小数部分保留6位,第七位四舍五入
%m.nf在%与f之间可以加两个整数m.n表示输出项共占m位,小数部分占n位
如果m省略%.nf则所占位数等于n+1+整数位数
如果n省略%mf则小数部分默认6位
如果n为0,%m.0f则小数部分全省略,小数点后第一位四舍五入
以上%f可以写成%e,意义相同
printf函数的结果是:
输出数据在屏幕上所占的宽度
2标准输入函数scanf
scanf(格式控制字符串,输入项列表)
输入项:
&变量名
格式控制字符串
程序运行时,当运行到scanf函数,则要求从键盘上原样输入格式控制字符串中的内容【将以%开头特定字母结束部分用具体的值代替】
因此建议在格式控制字符串中除了以%开头特定字母结束部分外不要写任何内容
当连续两个%d%d出现,输入时两个数据可以用空格,TAB键,回车键隔开
特定字母:
i:
按照整型形式输入【可以是任何进制】
d:
按照十进制整型有符号形式输入【不论有无前导0都按照十进制整型形式】
u:
按照十进制整型无符号形式输入【不论有无前导0】
o:
按照八进制整型无符号形式输入【不论有无前导0】
xX:
按照十六进制整型无符号形式输入【不论有无前导0x】
在%与特定字母之间可以加控制信息:
整数m:
对应输入项最多采集m个数字
*:
对应输入数据不采集
第一个%d采集123给x,第二个%d不采集456,第三个%d采集789给y
第四章选择结构
关系运算:
比较运算判断两个数据之间的大小关系是否成立结果只有成立或不成立关系成立结果为1,关系不成立结果为0
关系运算符:
><>=>===!
=
x=y将y的值赋予x让x值与y的相等
x==y判断x和y的值相等是否成立
7>2+3结果是13+9>2+6成立是17-4>2+5不成立结果为0
5+6+8结果是1911+819
8>6>5结果是01>5
7<6<2结果是1
x逻辑运算:
3逻辑与:
&&并且and
逻辑或:
||或者or
逻辑非:
!
取反not
表达式:
逻辑运算的结果只有1和0
A&&B当前一个运算量A不等于0,并且后一个运算量B也不等于0时表达式的结果是1,否则表达式的结果是0
A||B当前一个运算量A不等于0,或者后一个运算量B也不等于0时表达式的结果是1,否则表达式结果是0
!
A当运算量A不等于0时表达式的结果是0,当运算量A等于0时表达式的结果是1
短路现象:
对于逻辑与运算,如果前一个运算量A等于0,则不用计算后一个运算量,直接得出最终结果是0
对于逻辑或运算,如果前一个运算量A不等于0,则不用计算后一个运算量,直接得出最终结果是1
ifelse语句
格式:
if(值)
值不等于0时执行的语句;
else
值等于0时执行的语句;
注意:
①值的位置上可以是常量、变量、表达式、函数等【形式不限制】②值必须用()括起来③【值等于0或不等于0时】执行的语句超过一条则必须用{}括起来④值等于0时没有语句可执行则else都可以省略⑤整个ifelse结构在语法上占据一条语句的位置【所有可以出现语句的地方都可以出现ifelse】
if(x!
=0)等价于if(x)
if(条件1)
if(条件11)
语句11;
else
语句12;
else
if(条件21)
语句21;
else
语句22;
在ifelse的嵌套中else和if的搭配关系:
就近原则else总是和距离他最近的if语句搭配,与书写格式无关
#include
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf(“%d\n”,c);
}
程序输出结果是:
A)0B)1C)2D)3
#include
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf(“%d\n”,c);
}
程序输出结果是:
A)0B)1C)2D)3
#include
main()
{inta=2,b=-1,c=2;
if(a
{if(b<0)c=0;}
elsec+=1;
printf(“%d\n”,c);
}
程序输出结果是:
A)0B)1C)2D)3
条件运算:
运算符号?
:
唯一一个三目运算符号
优先级比较低【倒数第三】结合性:
从右到左
表达式:
A?
B:
C运算量的形式和类型均无大要求【可以是常量、变量、表达式、函数等】当A不等于0时B的值就是最终结果,当A等于0时C的值就是最终结果
可以用在一些比较简单的选择情况下
已知x,y,z是合法的变量且已被赋值,请用一个表达式表示x,y,z中最大数
switchcase结构
格式:
switch(值)
{case常量1:
语句组1;
case常量2:
语句组2;
case常量3:
语句组3;
……
case常量n:
语句组n;
default:
语句组n+1;
}
注意:
①case后面必须有个空格②常量的位置上只能写常量不能是变量或表达式;③语句组的位置上可以写一条语句也可以多条语句也可以没有语句;④执行过程:
先计算值,然后用值依次和各个常量进行比较,当与某一个常量相等,则从该常量后面的语句组向下执行,如果与所有的常量都不相等则从default后面的语句组开始向下执行default可以出现在最下面也可以在上面
break结束正在执行的switch语句,执行switch下面的语句
选择结构例题:
循环结构
根据某个条件,当条件成立时反复执行其中一条或多条语句
条件:
循环执行的条件【一般题目中给的是循环结束的条件】
1、if语句和goto语句组合成循环
goto意思是转移到某条语句行执行
语句标号写在某一语句行的最前面用来标示该语句行的标识符
良好的程序中一般不写goto语句
2、while循环
格式:
while(表达式)
循环体;
注意:
①表达式的位置上可以是常量、变量、表达式、函数等等形式不限制;②表达式必须用()括起来;③()后面一般情况下是没有分号的;④循环体的位置上如果超过一条语句则必须用{}括起来;⑤执行过程:
先计算表达式的值,如果表达式的为真【不等于0】,则执行循环体,然后再次计算表达式的值,……;如果表达式的值为假【等于0】,则结束循环执行循环下面的语句
计算两个数的最大公约数:
x56248
y2480
z80
斐波那契数列:
112358132134
3、dowhile循环
格式:
do
循环体;
while(表达式);
注意:
①do的后面没有分号②循环体超过一条语句必须用{}括起来③都是的位置上可以写任何形式的内容【常量变量表达式函数等等】④()后面有一个分号⑤执行过程:
先执行一次循环体,然后再计算表达式的值,如果表达式的值为真【不等于0】则再次执行循环体;如果表达式的值等于0【假】则结束循环
4、for循环