《C语言程序设计》总复习.docx
- 文档编号:18363035
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:26
- 大小:606.55KB
《C语言程序设计》总复习.docx
《《C语言程序设计》总复习.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》总复习.docx(26页珍藏版)》请在冰点文库上搜索。
《C语言程序设计》总复习
《C语言程序设计》第一轮复习讲议
第一部分程序设计基础(11月24日)
一、程序设计基本概念
程序:
源程序:
目标程序:
可执行程序:
汇编程序:
编译程序:
连接程序:
二、程序设计语言的发展
三、程序的转换
四、例题分析
(2007年4月)下列叙述中错误的是
A、计算机不能直接执行用C语言编写的源程序
B、C程序经编译后,生成后缀为.Obj的文件是一个二进制文件
C、后缀为.Obj的文件,经连接程序生成后缀为.Exe的文件是一个二进制文件
D、后缀为.Obj和.Exe的二进制文件都可以直接运行
(2006年4月)以下叙述中错误的是
A、C语言源程序经编译后生成后缀为.OBJ的目标程序
B、C程序经过编译、连接步骤之后才能形成一个真正可以执行的二进制机器指令文件
C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D、C语言中的每条可执行语句和非执行语句最终都将转换成二进制的机器指令
(2008年9月)计算机能直接执行的程序是
A、源程序
B、目标程序
C、汇编程序
D、可执行程序
(2007年9月)C语言源程序的后缀是
A、.exe
B、.c
C、.obj
D、.cp
(2006年9月)以下说明中正确的是
A、C语言比其它语言高级
B、C语言可以不用编译就能被计算机执行
C、C语言以接近英语和数学言语作为语言的表达式
D、C语言出现最晚,具有其它语言的一切优点
以下叙述中正确的是
A、C语言的源程序不必通过编译就可以直接运行
B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C、C程序经编译形成的二进制代码可直接执行
D、C语言中的函数不可以单独进行编译
第二部分算法(11月25日)
一、算法的概念
指为解决某个特定问题而采取的确定且有限的步骤。
二、算法特性
三、算法的表示方法
–算法的表示方法有自然语言
–传统流程图
–结构化流程图
–伪代码
–PAD图
例2.1:
求1×2×3×4×5
步骤1:
先求1×2,得到结果2
步骤2:
将步骤1得到的乘积2再乘以3,得到结果6
步骤3:
将6再乘以4,得24
步骤4:
将24再乘以5,得120
如果要求1×2×…×1000,则要写999个步骤太繁琐
可以设两个变量:
一个变量代表被乘数,一个变量代表乘数。
不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。
设p为被乘数,i为乘数。
用循环算法来求结果,算法可改写:
S1:
使p=1
S2:
使i=2
S3:
使p×i,乘积仍放在变量p中,可表示为:
p×ip
S4:
使i的值加1,即i+1i。
S5:
如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。
最后得到p的值就是5!
的值。
四、应用举例
例2.3判定2000~2500年中的每一年是否闰年,将结果输出。
分析:
闰年的条件是:
(1)能被4整除,但不能被100整除的年份都是闰年,如1996,2004年是闰年;
(2)能被100整除,又能被400整除的年份是闰年。
如1600,2000年是闰年。
不符合这两个条件的年份不是闰年。
设y为被检测的年份,算法可表示如下:
S1:
2000y
S2:
若y不能被4整除,则输出y“不是闰年”。
然后转到S6。
S3:
若y能被4整除,不能被100整除,则输出y“是闰年”。
然后转到S6。
S4:
若y能被100整除,又能被400整除,输出y“是闰年”,否则输出“不是闰年”。
然后转到S6。
S5:
输出y“不是闰年”。
S6:
y+1y
S7:
当y≤2500时,转S2继续执行,如y>2500,算法停止。
以上算法中每做一步都分别分离出一些范围(巳能判定为闰年或非闰年),逐步缩小范围,直至执行S5时,只可能是非闰年。
“其它”包括能被4整除,又能被100整除,而不能被400整除的那些年份(如1990)是非闰年。
美国国家标准化协会ANSI(AmericanNationalStandardInstitute)规定了一些常用的流程图符号:
将求5!
的算法用流程图表示
判定闰年的算法用流程图表示
用N--S流程图表示算法
1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。
在这种流程图中,完全去掉了带箭头的流程线。
全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。
这种流程图又称N--S结构化流程图。
N--S流程图用以下的流程图符号:
的求5!
算法用N--S图表示
判定闰年的算法用N--S图表示
第三部分C程序的结构及VisualC++6.0集成开发环境(11月26日)
一、C语言程序构成
1、源程序的构成
(1)函数是构成C语言程序的基本单位。
即C语言的源程序是由函数组成的,构成程序的若干函数中有且只有一个主函数main()。
C程序总是从main()函数开始执行。
(2)函数名后必须有一对圆括号(),函数体由一对{}中的语句组组成。
(3)函数体中的每个语句必须由;结束。
(4)程序的注释部分放在“/*……*/”之间。
(5)C程序书写格式自由,一行内可以写几个语句,各个语句间用“,”间隔;一个语句也可以写在多行上,用“\”作续行符。
(6)预处理命令以“#include”或“#define”开始。
2、编译、连接、运行
二、VisualC++6.0集成开发环境
1、创建“Win32ConsoleApplication”工程
2、新建“C++SourceFile”源程序。
3、编辑C源程序
4、编译源程序(CompileCtrl+F7)
5、执行(BuildExecuteCtrl+F5)
第四部分标志符、常量、变量(11月30日下午)
一、标志符
标识符是用来标识变量、符号常量、函数、数组、类型、标号以及一些具有专门含义的有效字符序列。
通俗地讲,标识符就是一个名字。
C语言的关键字有:
32个
(1)数据类型关键字(12个):
char,double,enum,float,int,long,short,signed,struct,union,unsigned,void
(2)控制语句关键字(12个):
break,case,continue,default,do,else,for,goto,if,return,switch,while
(3)存储类型关键字(4个):
auto,extern,register,static
(4)其它关键字(4个):
const,sizeof,typedef,volatile
预定义标识符
预定义标识符:
一般指C语言提供的库函数名和编译预处理命令。
预定义标识符最好不要用来作为用户标识符使用。
比如系统库函数名printf、scanf以及编译预处理命令define等。
C语言允许用户把这类标识符另作它用,但是,这将使这些标识符失去原来的意义。
为了编程时方便、可靠、避免误解,一般把这些标识符固定使用。
标志符的命名规则
•组成:
–只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线
–大小写敏感
–不能使用关键字
•长度:
最长32个字符(随系统不同而相异TC2.032
•VC中255)
•命名原则:
–见名知意
–不宜混淆如l与I,o与0
•例:
判断下列标识符号合法性
•sumSumM.D.JohndayDate3days
•student_name#33lotus_1_2_3
•chara>b_above$123
(2006年9月)下列定义变量的语句中错误的是—
A、int_int;
B、doubleint_;
C、charFor;
D、floatUS$;
(2005年9月)以下叙述中错误的是——
A、用户所定义的标识符允许使用关键字
B、用户所定义的标识符应尽量做到“见名知意”
C、用户所定义的标识符必须以字母或下划线开头
D、用户定义的标识符中大、小写字母代表不同标识
(2006年4月)下列不合法的用户标识符是——
A、j2_KEY
B、Double
C、4d
D、_8_
(2007年4月)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是:
——
A、大写字母
B、连接符
C、数字字符
D、下划线
(2007年9月)可在C程序中用做用户标识符的一组标识符是——
(2008年4月)以下选项中不合法的标识符是——
A、print
B、FOR
C、&a
D、_00
二、常量
定义:
程序运行时其值不能改变的量(即常数)
分类:
符号常量:
用标识符代表常量
定义格式:
#define
例符号常量举例
#definePRICE30
main()
{
intnum,total;
num=10;
total=num*PRICE;
printf("total=%d",total);
}
直接常量:
整型常量、实型常量、字符常量、字符串常量
&整型常量(整常数)
三种形式:
十进制整数:
由数字0~9和正负号表示.如123,-456,0
八进制整数:
由数字0开头,后跟数字0~7表示.如0123,011
十六进制整数:
由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff
问题:
0123=()10
0x123=()10
0Xff=()10
&实型常量(实数或浮点数)
表示形式:
十进制数形式:
(必须有小数点)如0.123,.123,123.0,0.0,123.
指数形式:
(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5
实型常量的类型
默认double型
在实型常量后加字母f或F,认为它是float型
&字符常量
定义:
用单引号括起来的单个普通字符或转义字符.
字符常量的值:
该字符的ASCII码值
转义字符:
反斜线后面跟一个字符或一个代码值表示
转义字符及其含义:
&字符串常量
定义:
用双引号(“”)括起来的字符序列
存储:
每个字符串尾自动加一个‘\0’作为字符串结束标志
三、变量(ppt第64页)
概念:
其值可以改变的量
变量的定义
变量的使用:
先定义,后使用
&整型变量
•占字节数随机器不同而不同,一般占一个机器字
•short≤int≤long
•可用sizeof(类型标识符)测量
&实型变量
•float:
占4字节,提供7位有效数字
•double:
占8字节,提供15~16位有效数字
&字符型变量
•字符变量存放字符ASCII码
•char与int数据间可进行算术运算
四、基本数据类型间的转换
&隐式转换
•什么情况下发生
&运算转换-----不同类型数据混合运算时
&赋值转换----把一个值赋给与其类型不同的变量时
&输出转换------输出时转换成指定的输出格式
&函数调用转换------实参与形参类型不一致时转换
•运算转换规则:
不同类型数据运算时先自动转换成同一类型
&显式转换(强制转换)
▪一般形式:
(类型名)(表达式)
例(int)(x+y)
(int)x+y
(double)(3/2)
(int)3.6
说明:
强制转换得到所需类型的中间变量,原变量类型不变
例main()
{floatx;
inti;
x=3.6;
i=(int)x;
printf(“x=%f,i=%d”,x,i);
}
结果:
x=3.600000,i=3
五、真题分析
(2007年4月)有以下程序,其中%u表示按无符号整数输出,程序运行后的输出结果是:
65535
#include“stdio.h”
main()
{
unsignedintx=oxFFFF;
/*x的初值为16进制数*/
printf(“%u\n”,x);
}
2006年4月)下列不合法的数值常量是——C
A、011
B、1e1
C、8.0E0.5
D、0xabcd
(2005年9月)以下程序运行后的输出结果是88
main()
{intx=0210;printf("%X\n",x);
}
1、以下选项中,不能作为合法常量的是——B
A、1.234e04
B、1.234e0.4
C、1.234e+4
D、1.234e0
2、以下选项中,可作为C语言合法整数的是——C
A、1011B
B、0386
C、0xffa
D、x2a2
(2006年9月)以下选项中值为1的表达式是——B
A、1-'0'
B、1-'\0'
C、'1'-0
D、'\0'-'0'
答案解析:
1是整型,’0’、’\0’、’1’都是字符型。
‘0’换成整型的ASCII码值为48,’1’为49
‘\0’是转义字符,表示0或空。
设有定义:
floatx=123.4567;,则执行下列语句printf("%f\n",(int)(x*100+0.5)/100.0);
后的输出结果是——123.460000
答案解析:
(int)(x*100+0.5)/100.0
(2005年9月)设有定义:
intk=1,m=2;floatf=7;则下列选项中错误的表达式是————
A、k=k>=k
B、-k++
C、k%int(f)
D、k>=f>=m
答案解析:
%(求余运算符)的两边都必须是整型。
f为float型,需要强制转换为int型。
正确
的写法为(int)f而不是int(f)
(2005年9月)已知字母A的ASCII码为65。
以下程序运行后的输出结果为——67G
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
解析:
1、有以下程序,程序运行后的输出结果为——B
main()
{unsignedinta;
intb=-1;
a=b;
printf(“%u”,a);
}
A、-1B、65535
C、32767D、-32768
2、以下程序运行后的输出结果是——252137
main()
{inta,b,c;
a=25;b=025;c=0x25;
printf(“%d%d%d\n”,a,b,c);
}
解析:
第五部分运算符与表达式(12月5日上午3-4节)
▪学习运算符应注意:
•运算符功能
•与运算量关系
–要求运算数个数
–要求运算数类型
•运算符优先级别
•结合方向
•结果的类型
一、算术运算符及算术表达式
(一)常见算术运算符的使用
1、基本的算术运算符有:
+、-(减法/取负)、*、/、%(取余数)
2、关于除法运算/
C语言规定:
两个整数相除,其商为整数,小数部分被
舍弃。
例5/2=2
-5/2.0=-2.5
3、关于求余数运算%
要求两侧的操作数均为整型数据,否则出错。
例5%2=1
-5%2=-1
1%10=1
5%1=0
5.5%2()
4、关于两边运算数类型不一致
系统将自动进行转换,使两边一致后再进行运算。
5、所有实型数的运算均以双精度方式进行,若是单精度,
则在尾数部分添0,转换为双精度。
6、算术表达式的概念
(1)表达式的概念
用运算符和括号将运算对象(常量、变量和函数等)连接
起来的、符合C语言语法规则的式子,称为表达式。
(2)算术表达式的概念
表达式中的运算符都是算术运算符。
例如:
3+6*9、(x+y)/2-1等,都是算术表达式。
7、强制类型转换表达式
转换格式为:
(要转换成的数据类型)(被转换的表达式)
double)a等价于(double)(a))
(int)(x+y)
(float)5/2等价于(float)(5)/2
(float)(5/2)
注意:
强制转换类型得到的是一个所需类型的中间量,原表达式类型
并不发生变化。
例如,(double)a只是将变量a的值转换成一个double
型的中间量,其数据类型并未转换成double型。
v真题分析
(2007年4月)以下选项中,当x为大于1的奇数时,数为0的表达式为——
A、x%2==1
B、x/2
C、x%2!
=0
D、x%2==0
解析:
%(求余运算符)的两边都必须是整型。
大于1的奇数除以2,余数必为1。
表达式成立时,整个表达式逻辑值为1
表达式不成立时,整个表达式逻辑值为0。
(2006年4月)下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。
请填空
intisprime(inta)
{inti;
for(i=2;i<=a/2;i++)
if(a%i==0)————;return0
————;return1
}
练习:
1、设变量x为float型且已经赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是——C
A、x=x*100+0.5/100.0
B、x=(x*100+0.5)/100.0
C、x=(int)(x*100+0.5)/100.0
D、x=(x/100+0.5)*100.0
2、若有语句
inti=-19,j=i%4;
printf(“%d\n”,j);
则输出结果是——(-3)
(二)算术运算符的优先级顺序
(2006年4月)表达式3.6-5/2+1.2+5%2的值是___D
A、4.3
B、4.8
C、3.3
D、3.8
(2005年9月)下列不能正确计算代数式sin2(1/2)/3值的C语言表达式是____A
A.1/3*sin(1/2)*sin(1/2)
B.sin(0.5)*sin(0.5)/3
C.pow(sin(0.5),2)/3
D.1/3.0*pow(sin(1.0/2),2)
1、设有定义:
floata=2,b=4,h=3;以下C语言表达式与代数式计算结果不相符的是——B
A、(a+b)*h/2
B、(1/2)*(a+b)*h
C、(a+b)*h*1/2
D、h/2*(a+b)
二、赋值表达式的求值规则(P94)
三、逗号表达式的运算规则
四、自加、自减运算符
五、关系运算、逻辑运算及条件表达式(P168)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 复习