版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言辅导班课表(09年3月),二级C语言培训班,QQ群1: 36880525南充)成都),通过NCRE四大法宝及五要求,1、 学习计划 2、 熟悉大纲 3、 上机练习 4、 模拟训练,要求,1、准备吃苦拼命(一个月左右) 2、不要旷课、认真听课、及时完成课后作业 3、力争做完上机100套,不要打游戏 4、考前2周强化公共基础记忆! 5、做24套模拟题(笔试),法宝,专题之一 C程序设计的基本概念,西南石油大学计算机科学学院 主讲:张耀文,本章内容,1.1 程序设计 1.2 C程序结构和格式 1.3 常量和变量 1.4 算术表达式 1.5 赋
2、值表达式 1.6 自加、自减运算符和逗号运算,考点考核说明,考点1 程序设计,源程序:高级语言编写的程序称为“源程序” 目标程序:由二进制代码表示的程序称为“目标程序” 编译程序:是指可以把源程序转换成目标程序的软件。 C源程序文件的后缀名为“.c”。C目标文件 “.obj”,C可执行文件 “.exe”,1、C程序,算法是指为解决某个特定问题而采取的确定且有限的步骤。 一个算法应当具有以下5个特性:,2、算法的5个特性,(1)有穷性 (2)确定性 (3)可行性 (4)有0个或多个输入 (5)有一个或多个输出,程序的三种基本结构 顺序结构、选择结构、循环结构 已经证明,任何程序均可只用这三种结构
3、实现 只用这三种结构的程序,叫结构化程序 程序“必须”符合结构化规则,3、结构化程序和“模块化”设计,结构化程序设计的核心思想:,采用“自顶向下、逐步求精”和模块化的方法进行结构化程序设计,【历年真题分析】,真题1:下列叙述中错误的是( )【2006.4】 A)C语言源程序经编译后生成后缀为.obj的目标程序 B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C)用C语言编写的程序称为源程序,它以ASC码形式存放在一个文本文件中 D)C语言中的每条可执行语句最终都将被转换成二进制的机器指令 真题2:下列叙述中错误的是( )【2006.4】 A)算法正确的程序最终一定会
4、结束 B)算法正确的程序可以有零个输出 C)算法正确的程序可以有零个输入 D)算法正确的程序对于相同的输入一定有相同的结果,真题3:下列叙述中错误的是( )【2006.4】 A)C程序必须由一个或一个以上的函数组成 B)函数调用可以作为一个独立的语句存在 C)若函数有返回值,必须通过return语句返回 D)函形参的值也可以传回给对应实参 真题5:计算机能直接执行的程序是【2008.9】 A)源程序 B)目标程序 C)汇编程序 D)可执行程序,考点2 C程序的结构和格式,任何一个有效的程序都有且只能有一个main()函数。 main函数具有以下3个特点: 1)C语言规定必须用main作为主函数
5、名。其后的一对圆括号中间可以是空的,但不能省略。 2)程序中main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。 3)一个C程序总是从主函数开始执行,到main函数体执行完后结束(而不论main函数在整个程序中的位置如何)。,1、main函数,先看一个简单的C程序例子,#include /*函数功能:计算两个整数相加之和*/ int Add(int a, int b) return (a + b); /*主函数*/ main() int x, y, sum = 0; printf(Input two integers:); scanf(%d%d, /
6、*输出x和y相加之和*/ ,在一个C程序中放在符号“/*”和“*/”之间的内容,称为对程序的注释。注释是对程序的说明。 编写注释时应遵循以下5条规则: 1)符号“/*”和“*/”必须成对出现,“/”和“*”两者之间不可以有空格。 2)注释可以用英文、中文,可以出现在程序中任意合适的地方。 3)在注释之间不可以再嵌套“/*”和“*/”。例如,/*/*/*/形式是非法的。 4)注释从“/*”开始到最近的一个“*/”结束,期间的任何内容都被编译程序忽略。换句话说,注释只是为了更好地看懂程序而做的标记,不对程序产生任何影响。 5)在VC环境也可以采用“/”注释,但只能注释一行。,2、程序中的注释,3、
7、源程序的书写格式 C程序书写格式自由。但是每个语句和数据定义的最后必须由一个分号“;”结束(分号是C语句的一部分,不是语句之间的分隔符)。 4、C语言的风格,5、标识符,所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。 C语言合法标识符的命名规则是: 1)标识符由字母、数字和下划线组成; 2)第一个字符必须为字母或下划线; 3)大写字母与小写字母被认为是两个不同的字符; 4)C语言规定了一个标识符允许的字符个数,即标识符的前若干个字符有效,超过的字符将不被识别。建议不要超过8个字符,C语言标识符可分为3类,(1)关键字 C语言预先规定了一批标识符,它们在程序中都代表着固定的含
8、义,不能另作他用。这些字符称为关键字。例如,int,double,if,else,while,for等。 (2)预定义标识符 即预先定义并具有特定含义的标识符。 (3)用户标识符 由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名,C语言关键字,由ANSI标准定义的共32个 : auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for s
9、igned void default goto sizeof volatile do if while static Turbo C2.0扩展的共11个 asm _cs _ds _es _ss cdecl far near huge interrupt pascal,预定义标识符,标准库函数 数学函数:sqrt,fabs,sin,cos,pow等 输入输出函数:scanf,printf, gets,puts等 编译预处理命令 define,endef,include,ifdef,endif,line,if,else等,C语言中, 库函数名和头文件中所定义的一些标识符都统称为预定义标识符. 用户
10、定义标识符时,应注意避免和预定义标识符重名.否则原预定义标识符就失去了原有的作用.,以下不能用作用户标识符的是: A)_26 B) case C) scanf D) Double,【注意】 合法的用户标识符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。 用户定义的标识符最好不要与预定义符号相同 关键字不能作为用户标识符。,答案:B,历年真题,真题7:下列叙述中正确的是( )【2007.9】 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函
11、数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数 真题8:以下叙述中正确的是( )。【2008.4】 A)C程序中的注释只能出现在程序的开始位置和语句的后面。 B)C程序书写格式严格,要求一行内只能写一个语句 C)C程序书写格式自由,一个语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中,历年真题,真题5:按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。【2007.4】 A)大写字母 B)连字符 C)数字字符 D)下划线 真题6:对于一个正常运行的C程序,下列叙述中正确的是( )【2007.4】 A)程序的执行总是
12、从main函数开始,在main函数结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束,历年真题,真题3:下列不合法的用户标识符是( )【2006.4】 A)j2_KEY B)Double C)4d D)_8_ 真题4:下列定义变量的语句中错误的是( )【2006.9】 A)int _int; B)double int_; C)char For; D)float US$; 真题4:可在C程序中用作用户标识符的一组是( )【2007.9】 A)a
13、nd B)Date _2007 y-m-d C)Hi D)case Dr.Tom Bigl,真题9:以上叙述中正确的是【2008.9】 A)C程序的基本组成单位是语句 B)C程序中的每一行只能写一条语句 C)简单C语句必须以分号结束 D)C语句必须在一行内写完 真题10: C源程序中不能表示的数制是【2008.9】 A)二进制 B)八进制 C)十进制 D)十六进制,考点3 常量和变量,1下面不能作为C语言常量的是( )。05年9月第12题 (A)0 xA5 (B)2.5e-2 (C)3487 (D)0583 2. 与十进制数200等值的十六进制数为 ()。 04年9月第1题A) A8 B) A
14、4 C) C8 D) C4 3 不能作为合法常量的是 ()。 05年4月第15题 A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 4 以下四组常量中均为合法的一组是: A) -1 B) 986,012 C) e3 D) 01x 12 -16 0 8 .E5 0778 01777 0 -5e3.5 0 xgf 0 xffef 0.0 0.35x102 OXabc,先看下面的例子,注意:,数值型常量各数值之间不能有其他字符如空格和逗号等 八进制数是以数字“0”开始的整型常量,十六进制是以“0 x”或者“0X”开始的整型常量 指数形式表示的数,e或E之前必须有
15、数字,之后必须是整数。如3.5e6或.3e-2,答案:1.D 2.C 3.B 4. A,常量(Constant),整型常量 18、-31 长整型常量 123l、123L、123456l、123456L 无符号型常量 123u、 123U 浮点常量 十进制小数形式 123.45、456.78 指数形式 1e-2、4.5e3 单精度实型常量 123.45f、 456.78F、1e-2f、4.5e3F 长双精度型常量 123.45l、 456.78L、1e-2l、4.5e3L,八进制与十六进制常量(进制转换),以数字“0”开始的整型常量是八进制数 022、-037 010和10大小不一样 因为八进制
16、并不常用,所以此种表示法比较少见 以“0 x”或者“0X”开始的整型常量是十六进制 AF和af用来表示十进制的1015 十六进制的形式比较常用,尤其在进行位一级的控制的时候 0 x12、-0 x1F, -0 x1f,字符(Character)常量,字符常量的表示方法 a,A,5,%,$ 单引号内只能有一个字符,除非用“”开头 就是一个普通整数,也可以参与各种数学运算 每个字符具有一个0255之间的数值,可从ASCII表查出 注意:5和整数5的区别 字符的数学运算在密码学内用得比较多,字符常量,转义字符 一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示,字符串(String)常量,用双引
17、号括住的由0个或多个字符组成的字符序列 I am a string 表示空字符串 转义字符也可以在字符串中使用 引号只作为字符串开始和结束的标志 C语言内部用0表示字符串的结束 除注释外,是唯一可以出现中文的地方 x和x是不同的 里定义了一系列专门的字符串处理函数,枚举(Enumeration)常量,一个被遗忘的角色 从程序来窥其一斑 enum weeks MON, TUE, WED, THU, FRI, SAT, SUN; enum weeks today; enum response no, yes, none; enum response answer; today = TUE; ans
18、wer = yes; if (answer = yes) printf(Today is Tuesday.n); else printf(Today is NOT Tuesday.n);,宏常量,宏常量 也称符号常量 一般采用大写字母表示 #define 标识符 字符串 不是语句,而是一种编译预处理命令 宏替换(Macro Substitulition),#include #define PI 3.14159 #define R 5.3 main() printf(area = %fn, PI * R * R); printf(circumference = %fn, 2 * PI * R);
19、 ,2007年10月省级考试第21小题,以下程序的输出结果是() #include #define f(x) (x*x) void main() int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf(%d,%dn,i1,i2); ,以下程序的输出结果是() #include #define f(x) x*x void main() int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf(%d,%dn,i1,i2); ,A)64,28 B)4,4 C)4,3 D)64,64,2007年10月省级考试第40小
20、题(3分),以下程序的输出结果是( ) #include #define FUN(x,y) xy?y:x void main() int x=5,y=10,z; z=10*FUN(x+y,x*y); printf(%dn,z); ,A) 100 B) 150 C) 15 D) 60,const常量,用const修饰定义的变量为常量 const float pi = 3.1425926; 常量只能在定义时赋值,然后不能再改变其值 常量、 const常量、宏常量和枚举常量,都可以用来表示一个永远不会改变的数 前者不建议直接使用,而用后三者代替,变量,变量的定义 其值可以改变的量称为变量。一个变量应
21、该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。 请注意区分变量名和变量值这两个不同的概念,见图,变量的赋值(初始化) 在c语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”。,int a, b; z=a+b;,int a, b; a=3,b=6;,历年真题,真题1:下列不合法的数值常量是( )。【2006.4】 A)011 B)lel C)8.0E0.5 D)0 xabcd 真题2:有下列程序: Main() int a=0,b=0; a=10; /*给a赋值 b=20;给b赋值*/ printf(a+b=dn,a+b);/*输出计算结果*/ 程序运行后的
22、输出结果是( )。【2006.9】 A)a+b10 B)a+b30 C)30 D)出错,真题3:有下列程序,其中%u表示按无符号整数输出。 main() unsigned int x=0 xFFFF;/* x的初值为十六进制数*/ printf(%un,x); 程序运行后的输出结果是( )。【2007.4】 A)-1 B)65535 C)32767 D)0 xFFFF 真题5:下列选项中,合法的一组C语言数值常量是( )。【2007.9】 A)028 B)12. C).177 D)0 x8A .5e-3 0 xa 234el.5 10,000 .0 xf 4.5e0 0abc 3.e5,真题6
23、:下列关于long、int和short类型数据占用内存大小的叙述正确的是( )。【2007.9】 A)均占4个字节 B)根据数据的大小来决定所占内存的字节数 C)由用户自己定义 D)由C语言编译系统决定 真题7:设变量已正确定义并赋值,以下正确的表达是( )。【2008.4】 A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,+y D)x=25%5.0,真题8:以下选项中不能作为C语言合法常量的是【2008.9】 A)cd B)0.1e+6 C)a D)011,考点4 算术表达式,+,-,*,/ 加、减、乘、除运算 四则混合运算中,先算乘除,后算加减,按从左向右的顺序计算
24、,左结合 % 求余运算,常用的标准数学函数,算术运算需要注意地方:,1).两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。 2).除数、被除数有一个为负数,一般采用“向零取整”。 3).参与+, -, *, /运算的两个数中有一个数为实数,则结果是double型。 4).求模运算“%” ,结果的符号由被除数决定。 5).如“%”运算符要求其两侧均为整型量。 若x为float型,则 “x%3”不合法,必须用: “(int)x % 3”。强制类型转换运算优先于%运算,算术表达式,用算术运算符和一对圆括号将运算数(或称操作数)连接起来的、符合C语言规则的表达式称为算术表达式。 算术表达
25、式的返算规则和要求如下: 在算术表达式中,使用多层圆括号,但左右括号必须配对。运算时从内层圆括号开始,由内向外依次计算。 在算术表达式中;若包含不同优先级的运算符,则按运算符的优先级由高到低进行;若表达式中运算符的级别相同,则按运算符的结合方向进行。,历年真题,真题1:下列不能正确计算代数式1/3sin2(1/2)值的C语言表达式是( )。【2005.9】 A) 1/3*sm(1/2)*sin(l/2) B)sln(0.5)*sin(0.5)/3 C)pow(sin(o.5),2)/3 D)1/3.0*pow(sin(1.0/2),2) 真题2:设有定义:int k=l,m2; f1oat f
26、=7;则下列选项中错误的表达式是( )。【2005.9】 A)k=k =k B) -k+ + C)kint(f) D)k =f =m,历年真题,真题8:下列选项中,值为1的表达式是( )。【2006.9】 A)1-0 B)1-0 C)1-0 D) 0-0 真题9:设有定义:f1oat x=123.4567;,则执行下列语句后的输出结果是。【2006.9】 printf(%f/n,(int)(x*10+0.5)/100.0); 真题10:下列选项中,当x为大于l的奇数时,值为0的表达式是( )。【2007.4】 A)x%2= =1 B)x2 C)x%2!=0 D)x%2= =0,真题11:以下不
27、能正确表示代数式 的C语言表达式是【2008.9】 A)2*a*b/c/d B)a*b/c/d*2 C)a/c/d*b*2 D)2*a*b/c*d,考点5 赋值表达式,1赋值运算符有: =(赋值) +=(自反加赋值) =(自反减赋值)*=(自反乘赋值) /= (自反除赋值) %= (自反模赋值) 类似的还有如 (注意其结合方向为自右向左) 例:c=b*=a+3 按自右向左原则,相当于下面三步 a+3 b=b*(a+3) c=b,举例:,例3:int a=12; 问:a+=a-=a*=a 之后,a 的值是多少? 例:main() int i=5; i+=i*=i+6; printf(%dn,i)
28、; 结果是什么?,例4: 设i、j初值分别为3和4,则执行 j+=i-=1;后i,j的值为多少?,(i=2,j=6),例5:若x=7;则x+=x-=x+x的值是多少?,解法:从右到左,先做x=x-(x+x)=-7,再做x=x+x=-14,思考题:,若题中各变量已正确定义并赋值,下面符合C语法的表达式是: A) a%=7.6; B) a+, a=7+b+c C) Int (12.3)%4 D) a=c+b=a+7,答案:B,2、赋值中的类型转换,1、实型数赋给整型变量,舍弃小数部分 2、整型数赋给实型变量,数值不变。 3、字符型、整型与无符号类型的赋值,如下:,内存字节数相同的,原样赋值 内存字
29、节数不同的:,4、字符型、整型与有符号类型的赋值,如下:,历年真题,真题1:下列叙述中错误的是( )【2005.9】 A)C语句必须以分号结束 B)复合语句在语法上被看作一条语句 C)空语句出现在任何位置都不会影响程序返行 D)赋值表达式末尾加分号就构成赋值语句 真题2:下列能正确定义且赋初值的语句是( )【2005.9】 A)int nl=n2=10; B)char c=32; C)float f=f+1.1 D)double x=12.3E2.5;,历年真题,真题3:若变量x、y已正确定义并赋值,下列符合C语言语法的表达式是( ) 【2006.9】 A)+ +x,y=x- B)x+1=y
30、C)x=x+10=xy D)double(x)/10 真题4:若变量均己正确定义并赋值,下列合法的C语言赋值语句是( )【2007.9】 A)x=y= =5; B)x=n%2.5; C) x+n=i; D)x=5=4+1; 真题5:以下定义语句中正确的是( )【2008.4】 A)int a=b=0; B)char A=65+1,b=b; C) f1oat a=1,b=b=1.1,真题6:以下选项中正确的定义语句是【2008.9】 A)double a;b; B)double a=b=7; C)double a=7,b=7; D)double,a,b; 真题7:设变量a和b已正确定义并赋初值。
31、请写出与a-=a+b等价的赋值表达式【2008.9】,考点6 自加、自减运算符和逗号运算,n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1 作为后缀运算符时,先取n的值,然后加/减1 作为前缀运算符时,先加/减1,然后取n的值 m = n+; 等价于 m=n; n+; m = +n; 等价于 n+; m=n;,自加、自减运算,又如: i=3; printf(“%d”,+i); 则输出“4”。 若改为 printf(%d,i+);则输出“3”。,注意:,(1)自增运算符(+)和自减运算符(- -),只能用于变量,而不能用于常量或表达式。(a+b)+能否实现?无变量可供存放。
32、,(2) +和- -的结合方向是“自右至左”。如果有-i+,负号运算符和“+”运算符同优先级,而结合方向为“自右至左”(右结合性),即它相当于-(i+),如果有printf(“%d”,-i+),则先取出i的值3,输出-i的值-3,然后i增值为4。,(3) +和- -优先级别高于算术运算符。,(4)自增(减)运算符常用于循环语句中,使循环变量自动加1,也用于指针变量,使指针指向下一个地址。这些将在以后的章节中介绍。,1 自动类型转换,整型、实型、字符型数据间可以混合运算 不同类型的数据要先转换成同一类型,然后才进行运算,数据类型转换,转换的规则: 1. 图中横向向左的箭头表示必定的转换 2. 图
33、中纵向的箭头表示当运算对象为不同类型时转换的方向,2 强制类型转换,1 必须把类型名放在一对括号内才能构成强制类型转换符。 2 若要把表达式的值进行强制转换,必须把整个表达式放在一对括号内。 3 强制类型转换符应出现在运算对象左边。 4 强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。,注意事项,例如: (double) a /* 将a转换成double型*/ (int) (x + y) /*将x+y转换成int型*/ (float) 5 / 2 /* 将5转换成实型,除以2(=2.5)*/,逗号表达式,C语言中逗号可作分隔符使用,将若干变量隔开 如 int a,b,c; 又可作运算符使用,将若干独立的表达式隔开,并依次计 算各表达式的值。其一般形式 表达式1,表达式2,表达式n 逗号表达式的求解过程:先求表达式1的值,再求表达式2 的值,最后求表达式n的值。整个逗号表达式的值是最后一 个表达式n的值。 在C语言所有运算符中,逗号表达式的优先级最低。,【例7】 main( ) int x,a; x=(a=3*5,a*4)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肿瘤化疗病人的健康宣教
- 《工业分析 Industrial Analysis》课件-钾肥分析(双语)
- 《工程测量》课件-测量工作的原则
- 中毒急救标准化流程
- 跨学科实践:制作简易直流电动机
- 配送站暂存作业委托协议
- 网络优化服务合同主体协议
- 退货逆向物流全程执行条款
- 2026天津市北方人力资源管理顾问有限公司河西分公司(代理制)天津高级中学-骨干教师及青年教师招聘笔试考试参考试题及答案解析
- 2025福建厦门外代国际货运有限公司海峡快线单证业务员岗社会招聘1人笔试考试备考题库及答案解析
- GB/T 4957-2003非磁性基体金属上非导电覆盖层覆盖层厚度测量涡流法
- GB/T 27806-2011环氧沥青防腐涂料
- GB/T 12618.1-2006开口型平圆头抽芯铆钉10、11级
- FZ/T 52051-2018低熔点聚酯(LMPET)/聚酯(PET)复合短纤维
- 设备吊装方案编制受力计算
- 食品工程原理概述经典课件
- 养老院机构组织架构图
- 财经法规与会计职业道德
- 会计学本-财务报表分析综合练习
- 传播学概论教学课件
- 《中国传统文化心理学》课件第五章 传统文化与心理治疗(修)
评论
0/150
提交评论