奥赛辅导C语言基础Word下载.docx
- 文档编号:22112301
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:40.12KB
奥赛辅导C语言基础Word下载.docx
《奥赛辅导C语言基础Word下载.docx》由会员分享,可在线阅读,更多相关《奥赛辅导C语言基础Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
第2课数据类型、运算符与表达式
了解数据类型、运算符与表达式
数据类型、运算符的先后顺序
1.数据结构:
指数据的组织形式
数据有常量和变量之分
2.常量和符号常量
常量:
在程序运行过程中,其值不能被改变的量称为常量。
常量分为:
整形常量、实型常量、字符常量。
符号常量指在程序中用#DEFINE(预定义的方式)定义一个标识符代表一个常量。
3.变量
变量:
其值可以改变的量称为变量。
变量有一个名字,在内存中占据一定的存储单元。
变量名:
由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线。
大写字母和小写字母被认为是两个不同的字符,一般,变量名用小写字母表示。
建议:
变量名的长度不要超过8个字符。
变量遵从“先定义,后使用”,目的是:
⑴能保证程序中变量名使用正确。
⑵每一个变量被指定为一确定类型,编译时,就能为其分配相应的存储单元。
⑶每一变量属于一确定类型,便于编译时,检查该变量所进行的运算是否合法。
数据按类型分可分为整型、实型、字符型。
各种变量的定义:
格式:
类型变量名列表;
整形数据
4.整形常量①十进制整数②八进制整数,以O开头③十六进制整数,以OX开头
5.整形变量
⑴每一个整型变量在内存中占2个字节。
⑵整型变量可分为
类型
比特数
最小取值范围
有符号基本整型
[signed]int
16
-32768~32767(-215~215-1)
无符号基本整型
unsignedint
0~65535(0~216-1)
有符号短整型
[signed]short[int]
无符号短整型
unsignedshort[int]
有符号长整型
[signed]long[int]
32
-231~231-1
无符号长整型
unsignedlong[int]
0~232-1
6.整型变量的定义
如:
inta,b;
7.整形数据的溢出
如在一个整常量后面加一个字母l或L,则认为是longint型常量。
实型数据
8.实型常量
两种表示方法:
①十进制小数形式,如1.23;
②指数形式,如123e3或123E3。
“规范化的指数形式”,即在字母E之前的小数部分中,小数点左边只能有一位非零的数字。
9.实型变量
⑴一个实型数据一般在内存中占4个字节。
并按指数形式存储在内存中。
⑵实型变量的分类
有效数字
数值范围
单精度
float
6~7
10-37~1038
双精度
double
64
15~16
10-307~10308
长双精度
longdouble
128
18~19
10-4931~104932
⑶实型数据的舍入误差
因为实型变量是由有限的存储单元组成,因此有效位以外的数字将被舍去,由此可能会产生一些误差。
如1.0/3*3的结果并不等于1。
10.实型常量的类型
实型常量默认为双精度型,可以在实型常量后加F来规定实型常量为单精度型。
字符型数据
11.字符常量
用单引号括起来的一个字符。
如’a’
转义字符及其表作用
字符形式
含义
ASCII代码
\n
换行,将当前位置移到下一行开头
10
\t
水平制表(跳到下一个tab位置)
9
\b
退格,将当前位置称到前一列
8
\r
回车,将当前位置称到本行开头
13
\f
换页,将当前位置移到下页开头
12
\\
反斜杠字符“\”
92
\’
单引号(撇号)字符
39
\”
双引号字符
34
\ddd
1到3位8进制数所代表的字符
\xhh
1到2位16进制数所代表的字符
三个特殊的字符的ASCII值:
(space)空格32;
A65;
a97
12.字符变量char变量名
一个字符型变量只能用来存放一个字符。
13.字符变量的存储
字符变量是把该字符相应的ASCII代码存储到内存单元中。
因此只占一个字节。
14.字符串常量
用双引号括起来的一串字符。
如“HOW”
字符串常量存储时会自动在字符串后加一个’\0’做为字符串的结束,即“HOW”在内存中占4个字节。
一定要区分字符常量与字符串常量,字符串没有专门的变量,要想存放保存,必须使用字符数组。
变量赋初值可有几种形式
⑴inta=4;
⑵inta;
a=4;
⑶inta,b,c=4;
各类数值型数据间的混合运算:
遵从图1
图中横向向左的箭头表示必定的转换
算术运算符和算术表达式
1.基本的算术运算符
+、-、*、/、%(两侧必须为整型数据)++,--
2.各类运算符的大致优先级顺序:
初等运算符——单目运算符——算术运算符——关系运算符——逻辑运算符——条件运算符——赋值运算符——逗号运算符。
赋值表达式格式:
变量=表达式,其中“=”为赋值运算符。
逗号运算符:
表达式1,表达式2
P653.6、3.7(在做此练习前,必须讲一些C语言程序的例子)
第3课顺序程序设计
学会简单的C语言顺序编程。
C语言顺序编程中的常用语句。
1.C语言分5类:
⑴控制语句9种①if()~else(条件语句)
②for()~(循环语句)
③while()~(循环语句)
④do~while()(循环语句)
⑤continue(结束本次循环语句)
⑥break(中止执行switch或循环语句)
⑦switch(多分支选择语句)
⑧goto(转向语句)
⑨return(从函数返回语句)
()表示其中是一个条件表达式,~表示内嵌的语句。
⑵函数调用语句:
如printf(″ThisisaCstatement.″);
⑶表达式语句。
a=3;
⑷空语句。
;
⑸复合语句,又称分程序。
{z=x+y;
T=z/100;
Printf(″%f″,t);
}
2.输入输出是以计算机主机为主体而言的,从计算机向外部输出设备输出数据称为“输出”,从外部向输入设备输入数据称为“输入”。
C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。
C语言的标准输入输出函数都放在函数库“stdio.h”文件中,所以要库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。
#include<
stdio.h>
或#include″stdio.h″
3.printf格式字符
格式字符
说明
d,i
以带符号的十进制形式输出整数(正数不输出符号)
O
以八进制无符号形式输出整数(不输出前导符O)
x,X
以十六进制无符号形式输出整数(不输出前导符Ox),用x则输出十六进制数的a~f时以小写形式输出。
用X时,则以大写字母输出
u
以无符号十进制输出整数
c
以字符形式输出,只输出一个字符
s
输出字符串
f
以小数形式输出单、双精度数,隐含输出6位小数。
e,E
以标准指数形式输出单、双精度数,数字部分小数位数为6位。
用e时指数以“e”表示(如1.2e+02),用E时指数以“E”表示(如1.2E+02)
g,G
选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。
用G时,若以指数形式输出,刚指数以大写表示
4.printf的附加格式说明字符
字符
字母l
用于长整型整型数据,可加在格式符d、O、x、u前面
m(代表一个正整数)
数据最小宽度
n(代表一个正整数)
对实数,表示输出n位小数;
对字符串,表示截取的字符个数
-
输出的数字或字符在域内向左靠
printf("
%-3s\n"
"
computer"
);
5.scanf格式字符
使用scanf函数时应注意的问题:
⑴scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。
⑵如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。
⑶在用“%C”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。
⑷在输入数据时,遇以下情况时该数据认为结束。
1遇空格,或按“回车”或“跳格(TAB)”键。
2按指定的宽度结束,如“%3d”,只取3列。
3遇非法输入。
练习:
设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱体积。
用SCANF输入数据,输出计算结果,输出时要求有说明,取小数点后2位数字。
请编程序。
第4课选择结构程序设计
1.关系运算符和关系表达式,逻辑运算符和逻辑表达式。
注意它们的运算顺序。
2.if语句的三种形式
⑴if(表达式)语句;
⑵if(表达式)语句1;
else语句2;
⑶if(表达式)语句1;
elseif(表达式2)语句2;
elseif(表达式3)语句3;
……
else语句n;
3.例题:
5.2
4.if语句的嵌套
If(表达式1)
If(表达式2)语句1;
else语句2;
else
if(表达式3)语句3;
else语句4;
5.例题:
5.3C源程序\5-2.c
6.条件运算符格式
表达式1?
表达式2:
表达式3
7.switch语句格式
Switch(表达式)
{case常量表达式1:
语句1;
Case常量表达式2:
语句2;
Case常量表达式n:
语句n;
Default:
语句n+1;
①当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。
②每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。
③各个case和default的出现次序不影响执行结果。
4在执行switch语句时,根据switch后面表达式的佱找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
5为使流程执行一个case分支后跳出switch结构,可以用一个break语句来达到此目的。
C源程序\SWITCH1.C
6-1⑴有3个整数a,b,c由键盘输入,输出其中最大的数。
6-2⑵给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’、‘E’。
第5课循环控制
1.用if语句和goto语句构成循环;
Main()
{inti,sum=0;
i=1;
loop:
if(i<
=100)
{sum=sum+i;
i++;
gotoloop;
printf(“%d”,sum);
2.while语句格式
while(表达式)语句
{inti,sum=0;
while(i<
printf(“%d”,sum);
3.dowhile语句格式
do循环体语句
while(表达式);
do
=100);
注意while和dowhile循环的区别:
while是先判断再执行,dowhile是先执行一次再进行判断,即至少执行一次。
4.for语句格式
for(表达式1;
表达式2;
表达式3)语句
执行过程:
⑴先求解表达式1.
⑵求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,后执行下面第⑶步。
若为假(值为0),则结束循环,转到第⑸步。
⑶求解表达式3.
⑷转回上面第⑵步,继续执行。
⑸循环结束,执行for语句下面的一个语句。
也可以理解为以下格式
for(循环变量赋初值;
循环条件;
循环变量增值)语句
for(i=1;
i<
=100;
i++)sum=sum+i;
5.循环的嵌套
注意循环可以嵌套,但不能交叉嵌套。
6.break语句
用于从循环语句或switch语句中跳出。
7.continue语句
用于结束本次循环
main()
{intn;
for(n=100;
n<
=200;
n++)
{if(n%3==0)
continue;
printf("
%d"
n);
}
8.例:
判断m是否是素数
math.h>
{intm,i,k;
scanf("
&
m);
k=sqrt(m);
for(i=2;
=k;
i++)
if(m%i==0)break;
if(i>
=k+1)printf("
%disaprimenumber\n"
m);
elseprintf("
%disnoaprimenumber\n"
6-3⑴求100~200间的全部素数C源程序\LIAN6-3.C
6-4⑵一皮球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少m?
第10次反弹多高?
C源程序\LIAN6-4.C
第6课数组
1.变量与数组的区别
数组可以理解成是一组特殊的变量,它们的类型一样,并且连续,因此便于使用循环语句调用.
2.一维数组的定义
类型说明符数组名[常量表达式]
例:
inta[10]
注意:
从定义数组时数组是0开始,即a[0].
3.一维数组的引用
数组名[下标]
例7.1C源程序\7-1.c
例7.2
4.二维数组的定义:
类型说明符数组名[常量表达式][常量表达式]
floata[3][4],b[5][10];
5.二维数组的引用:
数组名[下标][下标]
7.4C源程序\7-4.c
6.字符数组的定义:
(同数值型数组的定义)
charc[10];
由于字符型与整型是互相通用的,因此上面的定义也可改为:
Intc[10];
chardiamond[][5]={{'
'
'
*'
},{'
}}
7.字符串与字符串结束标志
“/0”做为字符串的结束标志。
8.字符数组的输入输出
⑴以逐个字符输入输出的方法,用格式符“%C”。
⑵将整个字符串一次输入或输出。
用格式符“%S”格式符。
用此方式输出时,在后跟数组名。
用此方式输入时,后跟数组名,不再加"
&
"
符号,并且,输入时空格做为分隔符。
9.字符串处理函数。
⑴puts(字符数组)
作用:
将一个字符串输出到终端。
⑵gets(字符数组)
从终端输入一个字符串到字符数组,并且得到一个函数值。
已有一个已排好序的数组,现输入一个数,要求按原来排序的规律将它插入数组中。
第7课函数
1.函数需要注意的地方
⑴每一个源程序文件由一个或多个函数组成。
⑵一个C程序由一个或多个源程序文件组成。
⑶C程序的执行从main函数开始,调用其他后流程回到main函数,main函数是系统定义的。
⑷函数不能嵌套定义,函数间可以互相调用,但不能调用main函数。
2.无参函数的定义形式
类型标识符函数名()
{声明部分
语句
无参函数一般不需要带回函数值,因此可以不写类型标识符。
3.有参函数定义形式
类型标识符函数名(形式参数表列)
Intmax(intx,inty)
{intz;
Z=x>
y?
x:
y;
Return(z);
4.形式参数和实际参数
在定义函数时,函数名后面括弧中的变量名称为“形式参数”(简称“形参”),在主调函数中调用一个函数时,函数名后面括弧中的参数称为“实际参数”(简称“实参”)。
⑴实参可以是常量、变量或表达式,但要求它们有确定的值,在调用时将实参的值赋给形参。
⑵在被定义的函数中,必须指定形参的类型。
⑶实参与形参的类型应相同或赋值兼容。
⑷实参变量对形参变量的数据传递是单向传递,只由实参传给形参,而不能由形参传回给实参。
例8.2C源程序\8-2.c
返回值类型如与函数类型不同,以函数类型为主。
5.函数调用的一般形式
函数名(实参列表)
6.对被调用函数的声明和函数原型
⑴必须是已经存在的函数。
⑵还应该在本文件开头用#include命令定义。
⑶如果使用用户自己定义的函数,一般还应该在主调函数中对被调用的函数作声明。
7.函数的嵌套调用
函数在定义时是互相平行、独立的,不能包另一个函数,但在调用时可以嵌套调用。
8.函数的递归调用
函数的递归调用其实是一种特殊的嵌套调用,即(自己嵌套自己,调用自己)
9.数组作为函数参数
⑴数组元素和函数实参
⑵数组名可作函数参数,此时,实参与形参都应用数组名(或用指针变量)
8-11C源程序\8-11.c
10.局部变量和全局变量
局部变量:
在函数内部定义的变量,它只在本函数范围人有效。
全局变量:
在函数之外定义的变量,它可以为本文件中其他函数所共用。
⑴设全局变量的作用:
增加了函数间联系的渠道。
⑵建议不是非常必要时不要作用全局变量,因为:
1全局变量在程序的全部执行过程中都占用存储单元
2它使函数的通用性降低了,如果要将一个函数移到另一个文件中,还要将有关的外部变量及其值一起移过去。
但若该外部变量与其他文件的变量同名时,就会出现问题。
3使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。
⑶如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作用。
11.动态存储方式与静态存储方式
静态存储方式:
用static声明静态变量。
寄存器存储方式:
用register声明寄存器变量。
12.内部函数和外部函数
用static定义内部函数。
即只能被本文件中的其他函数所调用。
用extern定义外部函数,即能被其它文件中的其他函数所调用。
默认为外部函数。
第11章结构体与共用体
有时需要将不同类型的数据组合成一个有机的整体,以便于引用。
这些组合在一个整体中的数据是互相联系的。
1.一般定义形式为:
Struct结构体名
{
成员表列
}变量名表列;
Structstudent
{intnum;
Charname[20];
Charsex;
Intage;
Floatscore;
}student1,student2;
2.结构体变量的引用:
结构体变量名.成员名
如:
student1.num=10010;
3.结构体数组
structstudent
};
Structstrudentstu[3]={{……},{……},{……}};
4.指向结构体数组的指针
例11.4指向结构体数组的指针的应用。
5.用指向结构体的指针作函数参数
其实质与指向其它类型的指针作函数参数一样,即用指针作函数形参,接收其它类型传送过来的地址。
6.用指针处理链表:
链表是动态地进行存储分配的一种结构。
1)建立链表
a)建立链表函数程序
2)输出链表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 辅导 语言 基础