C语言基础知识考研复习篇市公开课一等奖省赛课微课金奖课件_第1页
C语言基础知识考研复习篇市公开课一等奖省赛课微课金奖课件_第2页
C语言基础知识考研复习篇市公开课一等奖省赛课微课金奖课件_第3页
C语言基础知识考研复习篇市公开课一等奖省赛课微课金奖课件_第4页
C语言基础知识考研复习篇市公开课一等奖省赛课微课金奖课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C基础知识专题一:1/54热身练习:1.已知各变量类型说明以下,则以下不符合C语言语法表示式是

。 intk,a,b; unsignedlongw=5; doublex=1.42; A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3)

2/54热身练习:2.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,x值为

,y值为

。A)不定值

B)4 C)3 D)83/54热身练习:3.有以下定义,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确数据输入方式是

inta1,a2;charc1,c2; scanf(“%d%d”,&a1,&a2); scanf(“%c%c”,&c1,&c2); A)1020AB<CR> B)1020<CR>AB<CR> C)1020AB<CR>D)1020AB<CR>4/54一、C语言特点1、语言简练、紧凑,使用方便、灵活;一共有32个关键字,9种控制语句,主要用小写字母表示。autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizeofstructswitchtypedefunionunsignedvoidvolatilewhile5/54一、C语言特点九种控制语句:if()~else~for()~while()~do~while()cotinuebreakswitchgotoreturn6/54一、C语言特点2、运算符丰富:共有34种运算符。

算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、特殊运算符等。3、数据结构丰富:C数据类型有:整型、实型、字符型、数组类型、结构体类型、共用体类型、指针类型、空类型等。7/54一、C语言特点4、含有结构化控制语句;5、语法限制不太严格,程序设计自由度大;6、C语言能进行位操作,能实现汇编语言大部分功效,能够直接对硬件进行操作;7、生成目标代码质量高,程序执行效率高;8、用C语言编写程序可移植性好。8/54二、C语言词汇在C语言中使用词汇分为六类:标识符:变量名、函数名、标号等统称为标识符

标识符只能是字母、数字、下划线组成字符串,而且第一个字符必须是字母或下划线,用户定义标识符不应与关键字相同。

关键字:由C语言要求含有特定意义字符串运算符:与变量、函数一起组成表示式,实现运算功效分隔符:逗号和空格

常量:数字常量、字符常量、字符串常量、符号常量、转义字符注释符:“/*”开头并以“*/”结尾串9/54三、数据类型数据类型基本类型结构类型指针类型空类型整型实型(浮点型)字符型枚举类型数组类型结构体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型10/54(一)基本类型分类及特点【注】带*号表示数据类型与机器硬件相关11/54(二)变量在内存中存放形式1、整型数据在内存中以补码形式存放正数:原码即为补码(该数二进制数)负数:(1)取绝对值(2)求绝对值二进制形式(3)将二进制按位取反(4)再加上1,可得补码注意:若给出一个数在内存中存放形式,先看最高位来判断是正负数。1111111111110110-10在机器内存中存放形式12/54(二)变量在内存中存放形式求-10补码过程:10原码:0000000000001010按位取反:1111111111110101再加1,得-10补码:111111111111011013/54(二)变量在内存中存放形式有符号整型变量:最大表示32767无符号整型变量:最大表示655350111111111111111111111111111111114/54(二)变量在内存中存放形式处理整型数据溢出问题如:inta=32767,b;b=a+1;printf(“%d”,b);01111111111111111000000000000000b=-3276815/54(二)变量在内存中存放形式

2、实型数据在内存中存放形式实型数据普通占4个字节(32位)内存空间。按指数形式存放。实数3.14159在内存中存放形式以下:+.3141591类型说明符比特数(字节数)有效数字数范围float32(4)6~710-38~1038

double64(8)15~1610-308~10308

longdouble128(16)18~1910-4932~104932

16/54三、数据类型——变量main(){floata;doubleb;a=33333.33333;

b=33333.33333333333333;printf("%f\n%f\n",a,b);}因为a是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。b是双精度型,有效位为十六位。但TurboC要求小数后最多保留六位,其余部分四舍五入。doubled=12.3456789;printf(“%lf”,d);17/54三、数据类型——常量1、整数常量十进制整数:带符号,0~9组成,第一位数字为非零(除零外)-456八进制整数:0~7组成,最高位用0引导0123=(123)8=(83)10十六进制整数:0~9及a~f或A~F组成,最高位用0x或0X引导,0x123=(123)16=(291)10整数常量后加字母u或U表示该数为无符号型,加字母l或L表示该数为长整型

12345u123L18/54三、数据类型——常量2、实型常量在C中有两种表示方法:十进制小数形式:0.0、25.0、300.、-267.8230等。注意,必须有小数点。

指数形式:me

n(或mEn)表示m*10

n(这里m为非0实数,n为整数)。如:12.3E-2表示12.3*10-2

在C编译系统中,将浮点型常量作为双精度来处理

以下不是正当实数,请说明理由:345E7-553.-E32.7E19/54三、数据类型——常量3、字符常量-转义字符20/54三、数据类型——常量3、字符常量-转义字符\ddd输出一到三位八进制数所对应字符\xhh输出一到两位16进制数所对应字符比如:chara=‘\101’,b=‘\x41’;putchar(a);putchar(b);答案:AA21/54三、数据类型——常量字符常量就是一个普通整数,也可参加各种数学运算每个字符含有一个0~255之间数值,可从ASCII表查出注意:’5’和整数5区分’5’ASCII码值是53思索:’

6’—’2’值是多少?22/54例题:小写字母转换为大写字母#include<stdio.h>main(){

charch='b';printf("%c,%d\n",ch,ch);

ch='b'-32;

printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){

charch='b';printf("%c,%d\n",ch,ch);

ch='b'-('a'-'A')

;

printf("%c,%d\n",ch,ch);}b,98B,66

b,98B,66

相当于97-6523/54三、数据类型——常量

4、字符串常量用双引号括住由0个或多个字符组成字符序列"Iamastring"""表示空字符串除注释外,是唯一能够出现汉字地方C语言内部用’\0’表示字符串结束"x"和’x’是不一样<string.h>里定义了一系列专门字符串处理函数转义字符也可在字符串中使用24/54实践挑战:1、设:char*s=“\ta\017\bc”;则strlen(s)值为()。(04南师大)2、在一个32位系统中(如WindowsXP),若定义char*s="010\010\\010\n";则sizeof(s)值为(),strlen(s)值为()答案:1、5

2、2

925/54sizeof到底是什么?C语言关键字,并非函数计算类型占用字节数两种语法形式sizeof(类型)结果为类型占用字节数sizeof(表示式)结果为表示式值所属类型占用字节数普通都使用sizeof(变量名)

26/54strlen()到底是什么?strlen()是函数,返回字符串中所包含字符个数。注:统计时不包含’\0’两种语法形式strlen(字符串)如:strlen(“abcd”);strlen(字符指针变量);char*s=“abc";stelen(s);27/54三、数据类型——常量宏常量也称符号常量普通采取全大写字母表示宏定义不是语句,而是一个编译预处理命令格式以下:#define

标识符字符串使用时,将标识符用字符串完全替换28/54正确实例:计算圆周长和面积#include<stdio.h>#definePI3.14159#defineR5.3main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}area=88.247263circumference=33.300854相当于执行#include<stdio.h>main(){

printf("area=%f\n",3.14159*5.3*5.3);

printf("circumference=%f\n",2*3.14159

*5.3);}宏替换29/54错误实例

:计算圆周长和面积#include<stdio.h>#definePI3.14159;#defineR5.3;main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}相当于执行#include<stdio.h>main(){

printf("area=%f\n",3.14159;*5.3;*5.3;);

printf("circumference=%f\n",2*3.14159;*5.3;);}语法错误30/54实践挑战:3、在C语言中,宏定义#definePI3.14159中,用宏名PI代替了一个()(南师大06)A.单精度数B.双精度数C.字符序列D.常量答案:C31/54枚举(Enumeration)常量

enumweeks{SUN,MON,TUE,WED,THU,FRI,SAT};/*申明了一个枚举类型*/

enumweekstoday;/*用上面类型定义变量*/

today=TUE;/*变量today只能在上面定义范围内取值*/enumresponse{no,yes,none};enumresponseanswer;answer=yes;

enumresponse{no=-1,yes=1,none=0};其值为2其值为132/54四、运算符常见运算符算术运算符赋值运算符类型强转(强制类型转换)关系运算符逻辑运算符增1和减1位运算符33/54四、运算符运算符有三个属性:运算元数:最少1个,最多3个-1;3>2?3:2优先级:结合性:即指运算符与运算元结合方向,用于指导同级运算表示式:运算元与运算符组合式

a*b/c-2.2+'A'简化后优先级:1一级运算符2单变量运算符

3算术运算符4位运算符5关系运算符6位逻辑运算符7逻辑运算符8条件运算符

9赋值运算符

10逗号运算符高低34/54四、运算符—基本算术运算符操作符作用举例-减、单目取负3-2,-4+加、单目取正3+2,+4*乘3*2/除3/2%求余或取模(两侧均应为整型数)6%4++加1++a,a++--减1--a,a--当两个整数相除时,其结果为整数,即舍去小数部分。如:10/3=3;35/54四、运算符赋值运算符及赋值表示式简单赋值运算符用“=”表示属于双目运算符优先级较低,仅高于逗号含有右结合性由“=”连接式子称为赋值表示式功效是计算表示式值再赋予左边变量a=b=c=5可了解为a=(b=(c=5))赋值表示式值就是“=”号右侧值

x=(a=5)+(b=8)

36/54四、运算符复合赋值运算符

在赋值符“=”之前加上其它二目运算符可组成复合赋值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=

比如:

a+=5等价于a=a+5x*=y+7等价于x=x*(y+7)

r%=p等价于r=r%p能提升编译效率并产生质量较高目标代码37/54自动类型转换相同类型数据运算结果,还是该类型不一样类型数据运算结果,是两种类型中取值范围大那种double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高38/54自动类型转换取值范围小类型赋值给取值范围大类型是安全

doubled;floatf=1.5;d=f;反之是不安全若大类型值在小类型能容纳范围之内,则平安无事

doubled=1.5;floatf;f=d;若浮点数转为整数,会丢失小数部分,非四舍五入inti;floatf=1.64;i=f;(i值为1)反之,转换后结果必定是错误,详细结果与机器和实现方式相关doubled=123.456789e100;floatf;f=d;39/54Example:

intx=10; floaty; y=(float)x;

(float)10

10.000000x10y??10.000000消除从大到小警告

x=(int)y;经过下面方式把表示式值转为任意类型

(类型)表示式不改变x强制类型转换40/54Example:

inttotal,number; floataverage; … average=total/number;

15/2

7total15number2average??7.000000两个整数运算结果还是整数,不是浮点数强制类型转换41/54Example:

inttotal,number; floataverage; … average=(float)total/number;

15.000000/2

7.500000total15number2average??7.500000强制类型转换42/54增一和减一运算符n++,n--,++n,--n++让参加运算变量加1,--让参加运算变量减1作为后缀(postfix)运算符时,先取n值,然后加/减1m=n++;m=n;n++;43/54n++,n--,++n,--n++让参加运算变量加1,--让参加运算变量减1作为后缀(postfix)运算符时,先取n值,然后加/减1作为前缀(prefix)运算符时,先加/减1,然后取n值m=++n;n++;

m=n;增一和减一运算符44/54比如:j=++i-2i5等价于:i=i+1;j=i–2;j??46增一和减一运算符45/54比如:j=i++-2i5等价于:j=i–2;i=i+1;j??36增一和减一运算符46/54例:输出结果和变量a值?inta=3;printf("%d",-a++);a3等价于:printf("%d",-a);a=a+1;4增一和减一运算符47/54例题:main(){inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);printf("%d,%d,%d,%d",p,q,i,j);}解析:对p=(i++)+(i++)+(i++)应了解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i最终值为8。而对于q值则不然,q=(++j)+(++j)+(++j)应了解为q先自增1,再参加运算,因为q自增1三次后值为8,三个8相加和为24,j最终值仍为8。48/54四、运算符逗号运算符和逗号表示式

功效是把两个表示式连接起

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论