文档库 最新最全的文档下载
当前位置:文档库 › C语言专升本辅导

C语言专升本辅导

C语言专升本辅导
C语言专升本辅导

第一章C语言程序设计初步

一、主要知识点

(一) 程序设计语言的发展

1、机器语言

2、汇编语言

3、面向过程的语言

4、面向对象的程序设计语言

(二) C程序设计语言的执行过程

1、编辑

2、编译

3、连接

4、执行

(三) 用库函数组装C程序

例1:计算 2.1715的正弦值。

#include ―math.h‖

main( )

{

flo at a; /*定义a为实型变量*/

a=sin(2.1715);/*调用sin函数*/

print f(―%f\n‖,a); /*调用print f函数,输出a的值*/

}

详解:

1、在本例中用到的sin函数称为数学函数,它是为了用户使用方便,由一批厂家开发编写的函数,并不是C语言的一部分。在使用数学函数时,往往要用到函数执行时所需的一些信息(例如宏定义),这些信息包含在―math.h‖中。因此在程序开头用#i nclude ―math.h‖将有关的标头文件包括到程序中。

2、一个C语言源程序文件由一个或多个函数组成,C语言的基本组成单位是函数。一个完整的C 语言程序有且只有一个称为主函数的main函数,程序总是从main函数开始执行,调用其它函数后再回到main函数,在main函数中结束整个程序的运行。

3、main是函数名称,没有参数可以不写,但圆括号不能省略,main()后面有一对花括号,花括号内的部分称为函数体,main函数可以在程序的任意位置。

4、C规定每个语句以分号(;)结束,分号是语句不可缺少的组成部分,每行中可以写多条语句。

5、/*与*/之间为注释信息,对程序运行结果不发生影响,也不被编译,注释说明可以放在语句的任意位置。

6、float a;此语句是把a定义为一个实型变量。

7、C语言本身没有输入、输出语句,本例使用prinft函数输出数据。prin ft函数的括号内包括两部分内容:双引号内的部分、双引号外的部分。双引号内的部分是“格式字符串”,用于指定输出双

引号外的变量的打印格式。此例中双引号中有一个‖%f‖,它是输出一个保留小数点后6位数字的格式字符,小数点前的位数不指定。

二、练习

(一) 选择题

1、以下叙述正确的是_C___。

(A)在C程序中,main函数必须位于程序的最前面

(B)C程序的每行中只能写一条语句

(C)C语言本身没有输入输出语句

(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

2、C语言规定:在一个源程序中,main函数的位置___C_。

(A)必须在最开始

(B)必须在系统调用库函数的后面

(C)可以任意

(D)必须在最后

3、一个C语言程序是由____B。

(A)一个主程序和若干子程序组成

(B)函数组成

(C)若干过程组成

(D)若干子程序组成

4、一个C程序的执行是从A____。

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

(C)本程序的main函数开始,到本程序文件的最后一个函数结束

(D)本程序文件的第一个函数开始,到本程序main函数结束

5、以下叙述不正确的是__D__。

(A)一个C源程序可由一个或多个函数组成

(B)一个C源程序必须包含一个main函数

(C)C程序的基本组成单位是函数

(D)在C程序中,注释说明只能位于一条语句后面

(二) 填空题:

1、一个C源程序中至少包括一个__main函数____。

2、在一个C源程序中,注释部分两侧的分界符分别为____/*____和_*/_______。

第二章数据描述与基本操作

一、主要知识点

(一) C的基本数据类型节短整型(short)

整型整型(int)

基本类型字符型(char) 长整型(long)

实型(浮点型)单精度型(float)

枚举类型双精度型(double)

数据类型构造类型数组类型

结构类型(struct)

指针类型共用类型(union)

空类型(void) 文件类型(FILE)

(二) 常量和符号常量

1、常量定义:在程序运行过程中,其值不能被改变的量称为常量。常量常区分不同的类型,如1

2、0、-3为整型常量,‘a‘、‘D‘为字符常量。

2、符号常量:用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。常量不同于变量,它的值在作用域内不能改变,也不能再被赋值。

例1:已知商品的单价及数量求商品的总价值。

#define P RICE 30

main( )

{

int nu m=10,tot al;

total=nu m*P RICE;

print f(―total=%d‖,total);

}

输出结果:total=300

详解:

1、程序中用#define命令行定义P RICE代表常量30,此后凡在此文件中出现的P RICE都代表30,

可以和常量一样进行运算。

2、符号常量不同于变量,它的值在其作用域内不能改变,也不能再被赋值。如再用以下赋值语句给P RICE赋值:P RICE=40;是错误的。

(三) 变量

1、变量定义:其值可以改变的量称为变量。

2、标识符的命名规范

和其它高级语言一样,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符,C语言中的标识符命名规范为:

①变量名只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

②C语言中标识符的长度(字符个数)无统一规定,随系统而不同。许多系统(如IBM P C的MS C)取前7个字符,假如程序中出现的变量名长度大于7个字符,则只有前面7个字符有效,后面的不被识别。

③C语言有32个关键字(例如i f、el se、wh ile)它们已有专门含义,不应用采用与它们同名的变量名。

④C语言将大写字母和小写字母认为是两个不同字。

例2:在下列符号中,可以选用哪些作变量名?哪些不可以?

a3B3aB ∏+a -b *x $ _b5_if nex t_day e_2OK? int eger M AXNUM BER i*j

答案:_b5_ a3B next_ day e_2M AX NUMBER可作变量名,其它的作变量名不可以。

详解:

①M AXNUMBER可作变量名。习惯上符号常量名用大写,变量名用小写以示区别,但大写字母作变量名并无错误。

②i f、int eger属于保留字,保留字不可作变量名。

③∏+a -b *x $OK? i*j不可作变量名,因为变量名只能由字母、数字和下划线三种字符组成。

④3aB不可作变量名,因为变量名的第一个字母必须为字母或下划线。

(四) 整型数据

1、整型常量

整型常量即整常数。C语言整常数可用以下三种表示形式。

①十进制表示。如231、-56.478

②八进制表示。以0开头的数是八进制数。如0123即(123)8=1*82+2*81+3*80=64+16+3=83。

③十六进制表示。以0x开头的数是16进制。如0x123即(123)

=1*162+2*161+3*160=256+32+3=291。

16

2、整型变量

整型变量分为:基本型、短整型、长整型、和无符号型四种。

①基本型,以int表示

②短整型,以short int表示或以short表示

③长整型,以lon g int表示,或以long表示

④无符号型,存储单元中全部二进制位(bit)用作存放数本身,而不包括符号。无符号型中又分为

无符号整型、无符号短整型和无符号长整型,分别以unsi gned int 、unsi gn ed short 和unsi gned lon g 表示。

3、整型数据的取值范围

C标准没有具体规定各类型所占内存字节数,各种机器处理上有所不同,以IBM P C为例,数的范围如表 2.1所示。

表 2.1

所占位数数的范围

Int 16 -32768~32767 即-215~(215-1)short[int]16 -32768~32767 即-215~(215-1)

Lon g[int] 32 -2147483648~2147483647 即-231~(231-1)

Unsi gned[int]16 0~65535 即0~(216-1)

Unsi gned short16 0~65535 即0~(216-1)

Unsi gned lon g32 0~4294967295 即0~(232-1)

4、整型常量的分类

①一个整常量,如果其值在-32768~32767范围内,认为它是int型,它可以赋值给int型和long int

型变量。

②一个整常量,如果其值超过了上述范围,而在-2147483648~2147483647范围内,则认为它是lon g

int型,可以将它赋值给一个lon g int型变量。

③如果某一计算机系统的C版本确定的short int与int型在内存中占据的长度相同,则一个int型

的常量出同时一个short i nt型常量。

④常量中无unsign ed型。但一个非负值的整常量可以赋值给unsi gned型整变量,只要它的范围不

超过变量的取值范围即可。例如:将50000赋给一个unsi gn ed int型变量是可以的,而将70000赋给它是不行的(溢出)。

⑤在一个整常量后面加一个字母l或L,则认为是long int型常量。

(五) 实型数据

1、实型常量

实数在C语言中又称为浮点数。实数有两种表示形式:

①十进制形式。它由数字和小数点组成(注意必须有小数点)。例如:0.123、.123、123.0、0.0都是十进制数形式。

②指数形式。如123.56e4或123.56E4都代表123.56*104。但字母e(或E)之前必须有数字,e 后面指数必须为整数。例如:e3、2.1e3.5、.e3、e等都不是合法的指数形式。

例3:下面四个选项中,均是不合法的浮点数的选项是_____。

(A)160. 0.12 e3 (B)123 2e4.2 .e5

(C)-.18 123e40.0 (D)-.e3 .234 1e3

答案:B

详解:

①160. 0.12 -.18 123e4 0.0 .234 1e3是实数的十进制形式或指数形式。

②e32e4.2 .e5 -.e3不是正确的指数形式。因为正确的字母e(或E)之前必须有数字,e 后面指数必须为整数。对于数据表示形式.e5以及-.e3,e前的.与-.不是有效的数字表示形式。

③123是整数形式。

2、实型变量

C实型变量分为单精度(flo at型)和双精度(double型)两类。

在一般系统中,一个单精度型数据在内存中占4个字节(32位),一个double型数据占8个字节。一个单精度型变量能接收7位有效数字,一个d ouble型变量能接收17位有效数字,数值的范围随机器系统而异。在IBM P C中,单精度实数的范围约为±(3.4E10-38~3.4E1038),双精度实数的范围约为±(1.7E10-308~1.710308)。

例4:

main( )

{ float a;

a=111111.666666;

print f(―%f‖,a);

}

输出结果:111111.640621

详解:

①一个实型常量不分flo at型和double型。一个实型常量可以赋给一个flo at型或double型变量。根据变量的类型截取实型常量中相应的有效位数字。

②由于flo at型变量只能接收7位有效数字,因此在把111111.666666赋给a时,a只接收了111111.6,由于输出函数print f中的%f格式表示输出小数点后的6位小数,所以111111.6后的40621属于无意义数字。

③如果a改为double型,则能全部接收上述12位数字。

(六) 字符型数据

1、字符常量:

①普通形式的字符常量:用引号(即撇号)括起来的一个字符,如‘a‘、‘D‘、‘$‘、‘?‘等都是字符常量。

②转义符:以“\”开头的字符序列。

常用的以“\”开头的特殊字符见表 2.2

表 2.2

字符形式功能

\n 换行

\t横向跳格

\v 竖向跳格

\b退格

\r 回车

\f 走纸换页

\\ 反斜杠字符

\‘单引号字符

\ddd1到3位8进进制所代表的字符

\xhh1到2位16进制数所代表的字符

例5:若有说明语句:char c=‘\729‘;则变量c_____。

(A)包含1个字符(B)包含2个字符

(C)包含3个字符(D)说明不合法

答案:D

详解:‖\‖后可以有1到3位8进制所代表的字符,本题中‖\‖后的‖72‖属于8进制所代表的字符,而‖9‖则不属于8进制位所代表的字符,则‘\729‘中包含了两个字符常量‘\72‘和‘9‘。而字符常量是用引号(即撇号)括起来的一个字符,所以答案为D。

2、字符变量

字符变量是用来存放字符常量的存储单元。

3、字符数据在内存中的存储形式

将一个字符常量存放到一个字符变量中,实际上并不是把该字符本身存放到内存单元中去,而是将该字符的相应的ASCII码值存放到存储单元中去。

例6:将小写字母转换成大写字母

main( )

{ ch ar c1=‘a‘;

c1=c1-32;

print f(―%c‖,c1);

}

输出结果:A

详解:

①‘a‘的ASCII码为97,所以c1=‘a‘;语句的功能是把97赋值给了c1。

②c1=c1-32;语句的功能是把97-32的值65赋值给c1。

③print f函数中的%c格式表示以字符方式输出。ASCII码值为65的字符为A,所以运行结果为:A

(七) 字符串常量

字符常量是用一对双引号括起来的零个或多个字符序列。C规定以字符‘\0‘作为字符串结束标志。所以字符串‖a‖实际上包含2个字符:‘a‘、‘\0‘,因此下面的语句:

c=‖a‖;

把一个串赋值给一个字符变量c是错误的。

例7:下面不正确的字符串常量是______。

(A)‘abc‘ (B)‖12‘12‖(C)‖0‖(D)‖ ‖

答案:A

详解:‘abc‘是用单引号引来的,所以‘ab c‘不是正确的字符串常量。

(八) 算术运算符和算术表达式

1、基本算术运算符

①C语言中有5个基本算术运算符:

+(加法运算符。如3+5、+3)

-(减法运算符。如5-2、-3)

*(乘法运算符,如3*5)

/(除法运算符,如5/3,5.0/3)

%(求余运算符,要求%两侧均为整型数据)

例8:在C语言中,要求运算数必须是整型的运算符是____。

(A)/ (B)++ (C)!= (D)%

答案:D

详解:对于%运算符来说,要求两侧均为整型数据,所以表达式 3.5%2与3%2.0是错误的。

例9:写出下列程序的输出结果

main( )

{

pr int f(―%d,%d\n‖,5/3,5%3);

print f(―%d,%d\n‖,-5/-3,-5%-3);

print f(―%d,%d\n‖,-5/3,-5%3);

print f(―%d,%d\n‖,5/-3,5%-3);

}

输出结果:

1,2

1,-2

-1,-2

-1,2

详解:两个同号整数相除时结果为正整数,如5/3、-5/-3的结果值为1。两个异号整数相除时结果为负整数,多数机器采取“向零取整”法,即-5/-3=-1,5/-3=-1,但如果参加运算的两个数中有一个数为实数时结果为实数。对于求余(%)运算,运算结果与第一个数的符号相同。

②优先级别:先*、/、%后+、-

③运算量:双元运算量,%前后必须为整数。

④左右结合性:自左至右参预运算。

2、自加自减运算符

①C语言中有4种形式的自加自减运算符:

++i (先使i加1后使用)

i++(先使用后使i加1)

--i (先使i减1后使用)

i--(先使用后使i减1)

②优先级别:高于算术运算。

例10:若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为______,n 的值为______。

x+=n++

答案:10 6

详解:根据优先级别选运算表达式n++,因为n++是后缀表示形式,所以n先参预运算,再运算表达式x+=n,则x为10,最后n自加为6。

例11:

main( )

{

int x,y,m,n;

x=2;y=2

m=x++*5;

n=++y*5;

print f(―%d,%d,%d,%d‖,x,y,m,n);

}

输出结果:3,3,10,15

详解:对于后缀来说是先使用后运算,所以m的值为x在自加以前的2*5得10赋值给m后,x 自加变为3。对于前缀来说是先运算后使用,所以m的值为x在自加以后的3*5得15赋值给n。

③运算量:单元运算量,此运算量必须为变量,所以表达式5++、(x+y)++是错误的。

④左右结合性:自右至左参预运算。

(九) 关系运算

1、C语言提供的关系运算符有:

>(大于)>=(大于或等于)<(小于)

<=(小于或等于)==(等于)是!=(不等于)

2、优先级别:关系运算符的优先级别低于纯算术类,高于赋值类。后两个的优先级小于前四个。如表达式a+b

3、运算量:关系运算符是双元运算符,整型、实型、字符都可以参预运算。

4、左右结合性:从左向右的结合方向

5、关于关系运算符的进一步说明:

①关系表达式的值是整型数0或1,故也可以将其看成一种整型表达式。例如:

int i=1,j=7,a;

a=i+(j%4!=0);

的执行结果为:a的值为2。

②要说明x在区间[a,b]中,普通数学中使用表达式a≤x≥b。但C语言中应写成a<=x&&x<=b。

③表达式5>2>7>8在数学上是不允许的,而在C中是允许的。按自左至右求解。

④字符数据的比较按其ASCII码值进行。

⑤在判定两个浮点数是否相等时,由于存储上的误差,会得出错误的结果。例如:

1.0/3.0*3.0==1.0

该表达式的值为0。

(十) 逻辑运算

1、C语言提供的逻辑运算符:

&&(逻辑与)||(逻辑或)!(逻辑非)

2、优先级别:&&与||的优先级别低于关系运算符,高于条件运算符,&&的优先级别高于||,!的优先级别与自加运算符(++)、自减运算符(--)同级。

3、运算量:&&和||是双元运算符,!是单元运算符。

例12:已知x=43,ch=‘A‘,y=0;则表达(x>=y&&ch<‘B‘&&!y)的值是______。

(A)0 (B)语法错(C)1 (D)“真”

答案:C

详解:C语言不提供逻辑性数据“真”和“假”,在进行逻辑运算时,结果不是1就是0。

4、左右结合性:&&和||运算符的结合方向为自左至右,!的结合方向为自右至左。

5、关于逻辑运算符的进一步说明:

①在一个&&表达式中,若&&的一端为0,则不必再计算另一端,该表达式的值肯定为0。

②在一个||表达式中,若||的一端为0,则不必再计算另一端,该表达式的值肯定为1。

例13:写出下面程序的输出结果。

main( )

{

int x,y,z;

x=y=z=0;

++x&&++y||++z;

print f(―%d,%d,%d‖,x,y,z);

x=y=z=0;

++x||++y&&++z;

print f(―%d,%d,%d‖,x,y,z);

}

输出结果:

1,1,0

1,0,0

详解:

①因为&&的优先级别高于||,所以表达式++x&&++y||++z是一个或表达式,根据||的一端为0,则不必再计算另一端的原则,先计算表达式++x&&++y的值为1,因为1或任何值都为1,所以表达式++z 没有运算,输出结果为:1,1,0。

②表达式++x||++y&&++z也是一个或表达式,同样根据||的一端为0,则不必再计算另一端的原则,先计算表达式++z的值为1,因为1或任何值都为1,所以表达式++y&&++z没有运算,输出结果为:1,0,0。

(十一) 赋值运算

1、基本的赋值运算符:

=(将赋值运算符右侧的表达式赋给左侧的变量)

2、自反算术赋值运算符

C语言中有5个基本自反算术赋值运算符:

+=(a+=3 等价于a=a+3)

-=(a-=3 等价于a=a-3)

*=(a*=3 等价于a=a*3)

/=(a*=3 等价于a=a*3)

%=(a%=3 等价于a=a%3)

3、优先级别:赋值运算符与自反算术赋值运算符属于同等级别,低于条件运算符,高于逗号运算符。如对于表达式x%=y+3完全等价于x%=(y+3)。

例14:若有以下定义,则能使值为3的表达式是______。

Int k=7,x=12;

(A)x%=(k%5) (B)x%=(k-k%5)

(C)x%=k-k%5 (D)(x%=k)-(k%=5)

答案:D

详解:表达式(x%=k)-(k%=5)完全等价于(x=x%k)-(k=k%5)等价于5-2,此表达式的结果为3。

4、运算量:双元运算量,赋值运算符与自反算术赋值运算的第一个量必须为变量,且%=前后必

须为整型数据。如对于表达式a*3+=2是错误的。因为此表达式完全等价于(a*3)=(a*3)+2。

5、左右结合性:自右至左参预运算。

例15:若a是int型变量,且a的初值为6,则计算表达式后a的值为______。

a+=a-=a*a

答案:-60

详解:表达式从左向右运算,先计算表达式a=a-36后a为-30,再计算表达式a=a+a后a的值变为-60。

(十二) 条件运算:

1、条件运算符的基本形式及功能:

条件运算是一种在两个表达式的值中选择一个的操作。它的一般形式为:

e1?e2:e3

它的操作过程为,若e1为真,则表达式的值为e2,若为假表达式的值为e3。

2、优先级别:低于逻辑运算,高于赋值运算。

3、运算量:三元运算量,e1一般为算术表达式,e2、e3可以是任意类型的表达式,条件表达式的值的类型为e2与e3二者中类型较高的。

例16:若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是______。

答案:exp!=0

详解:对于表达式e1?e2:e3 ,e1一般为算术表达式、逻辑表达式、关系表达式,结果为1(真)或0(假)。也可以为数值exp,结果为结果为非0(真)或0(假)在本例中与exp完全等价的表达式是exp!=0。

4、左右结合性:自右至左运算。

例17:以下程序的运行结果是______。

main()

{

int k=4,a=3,b=2,c=1;

print f(―%d‖,k

}

答案:1

详解:条件表达式是从右向左运算,所以在本例中先计算表达式c

(十三) 逗号运算

1、逗号运算符的基本形式及功能:

逗号表达式的一般形式为:表达式1,表达式2。逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个表达式的值是表达式2的值。

2、优先级别:逗号运算符是所有运算符中级别最低的。

例18:以下符合C语言语法的赋值表达式是______。

(A)d=9+e+f=d+9(B)d=(9+e,f=d+9)

(C)d=9+e,e++,d+9(D)d=9+e++=d+7

答案:B

解析:表达式d=9+e+f=d+9中9+e+f=d+9是不正确的表示形式,因为赋值号(=)左边不能是表达式。表达式d=9+e,e++,d+9是逗号表达式,因为赋值运算符(=)的优先级别高于逗号运算符(,)。表达式d=9+e++=d+7中9+e++=d+7是不正确的表达式,因为赋值号(=)左边不能是表达式。

3、运算量:二元运算量。

4、左右结合性:从左向右运算。

例19:假设所有变量均为整型,则表达式a=2,b=5,b++,a+b的值是______。

答案:8

解析:根据逗号运算符从左向右运算的原则,首先把2和5分别赋值给了a,b。再计算表达式b++,b变为6,再计算表达式a+b的值,最后整个表达式的值是8。

(十四) 强制类型转换

1、强制类型一般形式及功能:

可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:(double) a(将a转换成double 类型)其一般形式为:

(类型名)(表达式)

2、优先级别:强制类型转换运算符与逻辑非(!)、自加(++)、自减(--)属于同等级别,高于算术运算符。

3、运算量:单元运算量

4、关于强制类型转换运算符的进一步说明:

①强制转换表达式时,表达式应该用括号括起来。如果写成(int )x+y则只将x转换成整型,然后与y相加。

②如果x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分(截去小数部分),而x的类型不变(仍为flo at型)。

例20:

main( )

{

flo at x=3.6;

int i;

i=(int)x

print f(―x=%f,i=%d‖,x,i);

}

输出结果:x=3.600000,I=3

解析:变量x进行强制类型运算后,其类型仍为fl oat型,值仍为 3.6。

(十五) pri ntf函数

print f函数可以输出任意类型的多个数据。

1、print f函数的一般格式

print f(格式控制,输出表列)

①“格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:格式说明和普通字符。格式说明是由“%”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由‖%‖字符开始的。普通字符即需要原样输出的字符。

②输出表列是指需要输出的一些数据,可以是表达式,它们之间用“,”隔开。

2、格式控制的完整格式:

% -0 m.n l或h 格式字符

下面对组成格式说明的各项加以说明:

①%:表示格式说明的起始符号,不可缺少。

②-:有-表示左对齐输出,如省略表示右对齐输出。

③0:有0表示指定空位填0,如省略表示指定空位不填。

④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

⑤l或h:l对整型指lon g型,对实型指double型。h用于将整型的格式字符修正为short型。

3、格式字符:

格式字符用以指定输出项的数据类型和输出格式。

①d格式:用来输出十进制整数。有以下几种用法:

%d:按整型数据的实际长度输出。

%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则

按实际位数输出。

%ld:输出长整型数据。

②o格式:以无符号八进制形式输出整数。对长整型可以用“%lo”格式输出。同样也可以指定字段宽度用“%mo”格式输出。

例21:

main()

{ int a=-1;

print f(―%d,%o‖,a,a);

}

运行结果:-1,177777

程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。

③x格式:以无符号十六进制形式输出整数。对长整型可以用“%l x”格式输出。同样也可以指定字段宽度用“%mx”格式输出。

④u格式:以无符号十进制形式输出整数。对长整型可以用“%lu”格式输出。同样也可以指定字段宽度用“%mu”格式输出。

⑤c格式:输出一个字符。

⑥s格式:用来输出一个串。有几中用法

%s:例如:print f(―%s‖,‖CHINA‖)输出“CHINA”字符串(不包括双引号)。

%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。

%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

%f:不指定宽度,整数部分全部输出并输出6位小数。

%m.n f:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。

%-m.n f:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。

⑧e格式:以指数形式输出实数。可用以下形式:

%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

%m.ne和%-m.ne:m、n和‖-‖字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。

4、关于print f函数的进一步说明:

如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:

print f(―%f%%‖,1.0/3);

输出0.333333%。

(十六) scanf函数

scan f函数可以用来输入任何类型的多个数据。

1、scan f函数的一般格式

scan f(格式控制,地址表列)

①“格式控制”的含义同print f函数。普通字符即需要原样输入的字符。

②地址表列是指由若干个地址组成的表列,它们之间用“,”隔开。

2、格式控制的完整格式:

% * m l或h 格式字符

①格式字符与print f函数中的使用方式相同,以%d、%o、%x、%c、%s、%f、%e,无%u格式、%g 格式。

②可以指定输入数据所占列宽,系统自动按它截取所需数据。如:

scan f(―%3d%3d‖,&a,&b);

输入:123456

系统自动将123赋给a,456赋给b。

③%后的“*”附加说明符,用来表示跳过它相应的数据。例如:

scan f(―%2d%*3d%2d‖,&a,&b);

如果输入如下信息:1234567。将12赋给a,67赋给b。第二个数据‖345‖被跳过不赋给任何变量。

④输入数据时不能规定精度,例如:

scan f(―%7.2f‖,&a);

是不合法的,不能企图输入:12345.67而使a的值为12345.67。

3、输入数据流分隔

①根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。如:

scan f(―%d%c%f‖,&a,&b,&c);

如果输入如下信息:

1234r1234.567

则scan f函数在接收数据时发现‖r‖类型不匹配,于是把‖1234‖转换成整型赋值给a,把‖r‖赋给变量b,最后把‖1234.567‖转换成实型数据赋给c。

②根据格式项中指定的域宽分隔出数据项。如语句:scan f(―%2d%3f%4f‖,&a,&b,&c);

如果输入如下信息:

123456789012345

则scan f函数在接收数据时根据域宽把12赋值给a,345赋值给b,6789赋值给c。

③隐示分隔符。空格、跳格符(‘\t‘)、换行符(‘\n‘)都是C语言认定的数据分隔符。

④显示分隔符。在scan f函数的两个格式说明项间有一个或多个普通字符,那么在输入数据时,在两个数据之间也必须以这一个或多个字符分隔。如语句:

scan f(―a=%d,b=%f,c=%f‖,&a,&b,&c);

则输入数据应该为:

a=1234,b=67.8,c=98.123

4、关于scan f函数的进一步说明:

①scan f函数中的“格式控制”后面应当是变量地址,而不应是变量名。例如,如果a、b为整型变量,则

scan f(―%d,%d‖,a,b);

是不对的,应将‖a,b‖改为‖&a,&b‖。

②如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。例如:

scan f(―%d,%d‖,&a,&b);

输入时应输入:3,4。3与4之间的逗号应与scanf函数中的“格式控制”中的逗号相对应,输入其它符号是不对的。

③在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。

scan f(―%c%c%c‖,&c1,&c2,&c3);

如输入:a b c 。字符‘a‘赋给c1,字符(空格)‘ ‘赋给c2,字符‘b‘ 赋给c3。

5、scan f的停止与返回

①格式参数中的格式项用法----正常结束。

②发生格式项与输入域不匹配时----不正常退出:

(十七) getchar、putchar函数

1、get char函数

getch ar函数是从终端输入一个字符。getch ar函数没有参数,其一般形式为:getch ar( )。

2、putchar函数

putchar函数的作用是向终端输出一个字符。

二、练习

(一)选择题

1、下面四个选项中,均是不合法的用户标识符的选项是____。

(A)A P_0 do (B)flo at la0 _a

(C)b-a goto int (D)_123 temp INT

2、若x,i,j和k都是int型变量,则计算下面表达式后,x的值为______。x=(i=4,j=16,k=32)

(A)4 (B)16 (C)32 (D)52

3、下列四个选项中,均是不合法的整型常量的选项是______。

(A)--0f1-0xffff 0011

(B)-0xcd f 017 12,3456

(C)-018 999 5e2

(D)-0x48eg -068 03f

4、下面四个选项中,均是合法浮点数的选项是______。

(A)1e1 5e-9.4 03e2

(B)-.60 12e-4 -8e5

(C)123e 1.2e-.4 2e-1

(D)-e3 .8e-4 5.e-0

5、下面四个选项中,均是合法字符的选项是______。

(A)‘\‘‘ ?\\‘ ?\xf‘ (B)‘\‘ ?\017‘ ?\n‘

(C)‘\018‘ ?\f‘ ?xab‘(D)‘\0‘ ?\101‘ ?xl f‘

6、以下不正确的叙述是______。

(A)在C程序中,逗号运算符的优先级最低。

(B)在C程序中,AP H和aph是两个不同的变量

(C)若a和b类型相同,在计算机了赋值表达式a=b后,b的值不变。

(D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数据。

第三章C程序的流程设计

一、算法

1、算法的概念

为解决某一个问题而采取的方法和步骤,就称为算法。

2、算法的性质

①有穷性:一个算法应包含有限的操作步骤

②一个初始:此动作序列只有一个初始动作

③确定性:算法中的每一个步骤都应当是确定性的,仅有一个后继动作。

④有一个或多个输出:序列终止表示问题得到解答或问题没有解答,没有输出的算法是没有意义的。

二、选择型程序设计

1、i f 语句的形式

①i f(条件表达式)语句

②i f(条件表达式)语句1 else 语句 2

注意:

①i f语句中的条件表达式一般为逻辑表达式或关系表达式,但也可以是任意的数值类型(包括整型、实型、字符型、指针类型),例如下列语句也是合法的。

i f(?a‘)p rint f(―%d‖ ,‘a‘);

②在i f语句中,分号是语句的结束标志。

③在i f和el se后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。

例1:以下不正确的i f语句形式是()。

A)i f(x>y&&x!=y);

B)i f(x==y) x+=y;

C)i f(x!=y) scan f(―%d‖,&x) el se scan f(―%d‖,&y);

D)i f(x

C语言程序设计复习题(专升本)

《C语言程序设计》复习题(专升本) 一、填空题 1、关系操作的特点是操作。 2、按照软件测试的一般步骤,集成测试应在测试之后进行。 3、软件工程三要素包括方法、工具和过程,其中,支持软件开发的各个环节的控制和管理。 4、E-mail地址由用户和域名两部分组成,这两部分的分隔符为。 5、在二维表中,元组的不能再分成更小的数据项。 6、设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式。 7、在DOS环境下,表示打印机的设备文件名为。 8、数据的逻辑结构有线性结构和两大类。 9、顺序存储方法是把逻辑上相邻的结点存储在物理位置的存储单元中。 10、一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的。 11.是C程序的基本单位,一个C程序总是从开始执行。 12.C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或。 13.著名计算机科学家沃思提出的一个公式:数据结构+=程序 14.表达式 !!5的值是______。 15.下列程序段的输出结果是______。 printf("%xn", (0x19 <<1) & 0x17); 16.下列程序段的输出结果是_____。 int k, s; for(k=0, s=0; k<10; k++) if (s>k) break ; else s += k; printf("k=%d s=%d", k, s); 17.下列程序段的输出结果是_____。 #define MIN(x,y) (x)<(y)?(x) : (y)

printf("%d",10*MIN(10,15)); 18.下列程序在运行时可能会出错,原因是______。 # include void main( ) { char *s; gets(s); puts(s); } 19. 表达式1<0<5的值是。 20. 表达式 ~(10>>1^~5) 的值是。 二、选择题 1、以下叙述中正确的是 A. C语言比其他语言高级 B. C语言可以不用编译就能被计算机识别执行 C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D. C语言出现的最晚,具有其他语言的一切优点 2、C语言中用于结构化程序设计的三种基本结构是 A.顺序结构、选择结构、循环结构 B. if、switch、break C. for、while、do-while D. if、for、continue 3、在一个C程序中 A.main函数必须出现在所有函数之前 B. main函数可以在任何地方出现 C. main函数必须出现在所有函数之后 D. main函数必须出现在固定位置 4、下列叙述中正确的是 A.C语言中既有逻辑类型也有集合类型 B. C语言中没有逻辑类型但有集合类型 C. C语言中有逻辑类型但没有集合类型 D. C语言中既没有逻辑类型也没有集合类型 5、下列关于C语言用户标识符的叙述中正确的是 A.用户标识符中可以出现在下划线和中划线(减号) B.用户标识符中不可以出现中划线,但可以出现下划线

完整word版单片机C语言应用程序设计第五版马忠梅课后习题答案

第一章单片机由哪几部分组成?、80511可P2P0和个8位并行I/O口(其中8位中央处理器CPU、片内振荡电器及其时钟电路,4,个中断优先级)个中断源(具有2位定时器/计数器,5 用于外部存储器的扩展),2个16 全双工串行口,布尔处理器。单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?、80512 表P7 1-3个特殊功能寄存器,在物理 上是分散在片内各功能部件中,在数218051单片机内部有答:中,以便能使用统一的直接寻址方式80H~FFH学上把它们组织在内部数据存储器地址空间来访问。这些特殊功能寄存器颁 在以下各个功能部件中:主要完;DPH两个8位寄存器组成)PSW、SP、DPTR(由DPL和(1)CPU:ACC、B、成运算和逻辑判断功能;完成中断管理IP、IE;(2)中断系统:完成 定时或者计数功能、TH1;TCOM、TL0、TH0、TL1(3)定时器/计数器:TMOD、口带有可选的纵向拓展I/O完成I/O口功能,其中部分P1P0、、P2、P3(4)并行I/O口:功能。主要完成数据的串行发送和接收SBUF、PCON5)串行口:SCON、(、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的3 内容是什么信息?它的内容是下一条 将要执行的不是特殊功能寄存器,它是16位寄存器,是程序计数器PC,程序的地址的用途是什么?它由哪几个特殊功能寄存器组DPTRDPTR是什么特殊功能寄存器?4、成?位)和8DPL (数据指针低是16位数据指针寄存器,它由两个8位特殊功能寄存器DPTR位地址,作地址寄存器用,可寻址外部16DPTR用于保存DPH(数据指针高8位)组成,数据存储器,也可寻址程序存储器。线?它们和单片机对外的地址总线和数据总线有什么关系?地址的引脚有多少I/O5、8051 总线和数据总线各是多少位?线可以在外扩存储器时分时复根I/OP0口8I/O8051单片机的40个引脚中有32根口线,和P3.6位地址总线,P2口作为高8用作为外部存储器的低8位地址 总线和8位数据总线,位。16位,数据总线为8P3.7分别作为外部存储器的写和读控制线。地址总线单片机堆栈的最大容量不能超过多少字8051、什么是堆栈?堆栈指针SP的作用是什么? 6 节?堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启 用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作 数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051 的堆栈区是比较小的,使用时要注意到这个限制。 8、8051内部RAM低128字节可分为几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少? 8051内部RAM的低128字节可以分为通用寄存器区、位寻址区、便签(工作或者堆栈RAM)1 中的个字节。设置PSW区和特殊功能寄存器区。通用寄存器区的地址从00H到1FH共3212816个字节RS1可以切换当前通用寄存器组。位寻址区地址从20H到2FH共位RSO和127. 0到位,占用地址8051单片机对外有几条专用控制线?其功能是什么?9、,高电位有效,当有条专用控制线。它们是复位信号线RST一般的说法是8051单片机有4,低电平有效,当此复位信号从此线输入时,使单片机复位。访问外部存贮器控制信号EA先使用片单片机全部使用外部指令存贮器,而当此控制线为高电平时,控制线为低电平时,1000H(地址为,在4KB范围之外,才使用指令存贮器FFFFH内的4KB指令存贮器(0000H-)和外部地址锁存器允PSEN-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号。前者是低电平有效,在读外部程 序存贮器时使用。后者是高电平有效,在锁存ALE许信号P0口输出的低8位地址时使用。端必须怎样处理?为什么?10、8031的/EA为有效时,/EA访问内部ROM,当端是访问外部程序

c语言程序设计第五版习题答案()

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100;

a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include <> main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** *

专升本C语言历年考试题及答案2

专升本C语言历年考试题及答案一、单项选择题 1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为__C____的文件。 A、”.c” B、“.obj” C、“.exe” D、“.bas” 2. 以下选项中不正确的整型常量是_C____。 A、 12L B、 -10 C、 1,900 D、 123U 3. 表达式___C___的值是0。 A、3%5 B、3/ C、3/5 D、3<5 4. 表达式 !(x>0||y>0) 等价于__D___。 A、!x>0||!y>0 B、!(x>0)||!(y>0) C、!x>0&&!y>0 D、!(x>0)&&!(y>0) 5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。 A、4&&3 B、+a C、a=b=5 D、int 6. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,___B___是正确的输入。 A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,40 7. 执行语句printf(” __D____”, 2); 将得到出错信息。 A、%d B、%o C、%x D、%f 8. 设变量定义为“int s[ ]="hello\nworld\n";”,则数组s中有__B____个元素。 A、12 B、13 C、14 D、15 9. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___B__。 A、2 B、3 C、4 D、&a[0]+1 10. 若变量已正确定义并赋值,表达式 -k++ 等价于__A____。 A、-(k++) B、(-k)++ C、-(k+1) D、-(++k) 11. 在C 语言程序中,在函数内部定义的变量称为__D____。

标准C语言程序设计第五版课后练习题答案

课后练习题答案 Chapter 1 1.1×√×√√×√××√ 1.2b c 1.3ad 1.4semicolon printf math、h \n Chapter 2 2、1 ×√××√√×√××√× 2、2 typedef 255 external const Chapter 3 3、1 ×√××√√×××√√√ 3、2 integer modula 6 logical sizeof paratheses typeconversion precedence 3、3 F F T F F F 3、4 F T T T F 3、5 (b) (c) 3、6 0 -2 7 10、25 false 3 3 1 3、10 0 1 1 1 1 3、11 d } 100 3、12 110 111 3、13 1 3、14 200 3、15 x<=y 3、16 TRUE 3、19 2 1 4 3、20 -40 40 Chapter 4 4、1 ×√√√√√××√√√× 4、2 %hd %x ctype、h %l %*d [^] blank 6 - %e 4、4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c); (c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);

4、5 (a)10x1、230000 (b)1234x 1、23 (c)1234 456、000000 (d) “123、40 ” (e) 1020 1222(乱码) 4、7 (a)1988 x (b)乱码 (c)120 乱码 (d)乱码 x 4、8 (a)1275 -23 5、740000 (b) 1275 -235、740000 (c) 0 0、000000 (d) 1275xxxx-235、74 (e)Cambridge (f)1275 Cambridge 4、10 1988 无无 Chapter 5 5、1 √×√××××××√ 5、2 && switch break if-else x=y 5、4 (a)x = 2; y = 0; (b) x = 1; y = 0; 5、5 (a) if (grade <= 59) if (grade >= 50) second = second + 1; (b) if (number > 100) printf(“out of range”); else if (number < 0) printf(“out of range”); else sum = sum + number; (c) if (T > 200) printf(“admitted”); else if (M > 60) {if (M > 60) printf(“admitted”);} else printf(“not admitted”); 5、6 F T F T 5、8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0) (c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5) 5、9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1 (c) x = 5; y = 0; z =0 (d) 无变化 5、10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0; 5、12 8 5、13 Delhi Bangalore END 5、14 2 4 4 8 5、15 0 0 2 5、16 25 5、17 Number is negative 5、18 ABC

湖北师范学院2010年专升本《C语言程序设计》试卷

湖北师范学院2010年“专升本”招生考试 《C语言程序设计》试题 一、选择题(本题共20小题,每题2分,共40分) 1.以下不合法的用户标识符是()。A)S2_KEY B)Int C) 4s D)_char 2.设有 int x=11; 则表达式 (++x)%3 的值是()。A)0 B)1 C)2 D)3 3.C语言源程序名的后缀是()。 A).exe B).cp C).obj D).c 4.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。 A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c); C)scanf("%d",p); D)scanf("%d",&p); 5.C语言中运算对象必须是整型的运算符是()。 A) %= B)/C) =D) 〈= 6.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是()。A)a[0][4] B)a[0][3] C)a[1][4] D)a[1][3] 7.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是 A)#define N 10 Int a[N]B)#define n 5 Int a[2*n]C)int a[5+5]D)int n=10,a[n] 8.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是()。(说明:'\b'是退格符) A)re'hi'you B)abre'hi'y\bou C)a\bre\'hi\'y\bou D)a\bre\'hi\'y\\\bou 9.下列程序执行后的输出结果是()。 A)A B) B C) F D) G void main() { int x='f'; printf("%c \n",'A'+(x-'a'+1)); } 10.若变量已正确定义,有以下程序段

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

最新专升本c语言程序设计模拟试卷资料

计算机科学与技术专业《基础知识》模拟试卷(考试时间150分钟,满 分300分,共三部分) 第一部分 C语言程序设计(共100分) 一、单项选择题(本大题共30小题,每小题2分,共60分) 1. 下列各选项中,均是合法有效的标识符的是【】 A. 3day B.lower C.day_3 D.ab Sum _days abcde student_name _of lotus_1_2_3 default M.D.john 2. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 3. 下列程序的输出结果是【】 #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++;b++; break; case 3: a++;b++; break; } printf(“%d,%d\n”,a,b); } A.1,1 B.2,1 C.1,0 D.2,2 4. 以下关于switch语句和break语句的描述中,只有正确的是【】 A.在switch语句中必须使用break语句 B.在switch语句中,可以根据需要使用或不使用break语句

D.break语句是switch语句的一部分 5. 下面程序的输出是【】。 main() { int x=0x23; printf(“%d\n”,- -x); } A.18 B.19 C.34 D.35 6. 下列函数的输出结果是【】 #include int f1(int xb) { extern int xa; return (xa * xb); } void main(void) { extern int xb; int xa=5; printf(“xa=%d,xb=%d,result=%d”,xa,xb,f1(xa)); return 0; } int xa=3,xb=4; A. 3,4,12 B. 5,4,20 C. 5,4,15 D. 3,4,15 7. c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 A. 地址传递 B. 由实参传给形参,再由形参传回给实参 C. 单向值传递 D. 由用户指定传递方式 8. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其原因是【】void main() { int *p,a; p=&a; scanf(“%d”,*p);

2020年普通专升本《C语言程序设计》考试大纲

2020 年普通专升本《C 语言程序设计》考试大纲 本考试的目的是选拔部分高职高专毕业生进入本校计算机科学与技术专业本科阶段学习,考查考生是否具有综合运用 C 语言编程解决实际问题的能力以及学生对算法和编程基础知识的掌握程度,既测试学生的综合能力,也测试学生的基础知识。 一、考试科目名称:《C 语言程序设计》 二、考试方式:笔试、闭卷 三、考试时间:90 分钟 四、试卷结构:总分100 分 (一)单项选择题:15 题(每题 2 分,共30 分) (二)判断题:15 题(每题 2 分,共30 分) (三)简答题:4 题(每题 5 分,共20 分) (四)程序设计题:3 题(第一、二小题每题6 分,第三小题 8 分,共20 分) 五、考试的基本要求 了解高级程序设计语言的特点,熟练掌握结构化程序设计的方法,了解常用C 语言输入/输出语句、一维数组等各项语法的正确使用方法,并能进行程序的调试和纠错。 六、考试范围 第一章为什么要学C语言 了解C 语言的发展及其特点;掌握C 语言程序的结构;了 解 C 语言的特点。 第二章 C 数据类型 掌握 C 语言数据类型分类,掌握如何定义各种数据类型的

变量,以及他们的赋值方法;掌握常量与变量区别;掌握赋值运算符的使用方法。 第三章简单的算数运算和表达式 掌握算术运算符和运算表达式,以及符合赋值运算符的计算表;重点掌握是自增(+ +)和自减(--)运算符的使用。 第四章键盘输入和屏幕输出 掌握单个字符的输入输出;掌握数据的格式化屏幕输出;掌握数据的格式化键盘输入。 第五章选择结构程序设计 了解基本的算法概念及描述方法;掌握关系运算符和关系表达式;掌握单分支控制的条件语句、双分支控制的条件语句以及多分支选择的控制语句的使用。 第六章循环控制结构 掌握循环结构与循环语句的基本组成;掌握计数控制的循环结构;掌握条件控制的循环结构;掌握循环的嵌套使用方法。 第七章函数 掌握函数的分类和定义;掌握向函数传递值和从函数返回值的方法;了解模块化程序设计的基本原则。 第八章数组 掌握数组的概念及分类;掌握一维数组的定义和初始化。 七、参考教材 《C 语言程序设计》(第3 版),苏小红、王宇颖、孙志岗等编著,高等教育出版社。

《C语言程序设计》考试大纲(专升本).doc

《C语言程序设计》考试大纲(专升本) 基本要求 1.熟练掌握C语言的基本知识; 2.具备基本的C语言程序设计能力,能熟练地阅读、理解和编制简短的C语言程序; 3.掌握C语言的编译和调试。 考试范围和要求 一、源程序结构 1.理解C程序的组成; 2.熟练掌握主函数main。 二、数据定义 1.基本类型:整型、实型、字符型。 (1)熟练掌握基本数据类型的常量表示,包括:整数的十进制、八进制、十六进制;实数的十进制小数形式和指数形式;字符常量和字符串常量; (2)熟练掌握变量的命名规则; (3)熟练掌握整型、实型、字符型变量定义、赋值和使用。 2.构造类型:数组、结构体。 (1)熟练掌握一维数组的定义、初始化及一维数组元素的引用; (2)掌握二维数组的定义、初始化及二维数组元素的引用; (3)熟练掌握字符数组的定义和初始化方法; (4)熟练掌握字符串的存储,字符串的处理; (5)能应用一维数组解决简单的应用问题,如遍历、检索、排序等; (6)能应用二维数组处理矩阵运算; (7)掌握结构体类型定义、结构体变量的定义和初始化,正确引用结构体变量成员,掌握结构体的简单应用编程。 3.指针 (1)正确理解指针的概念;

(2)熟练掌握指向各种类型的指针变量的定义和初始化,指针变量的一般使用; (3)理解指针与一维数组的关系; (4)熟练掌握指针在字符串处理中的应用; (5)了解指向指针的指针(二级指针)。 4.变量的存储类别、作用域和生存期 (1)了解变量的存储类别,包括auto 自动型、static 静态型、extern 外部参照型; (2)能正确运用全局变量和局部变量。 三、运算符与表达式 1.熟练掌握运算符的功能、目数、优先级和结合性。包括:算术运算符、自增(++)和自减(--)运算符、关系运算符、逻辑运算符、赋值运算符、复合赋值运算符、逗号运算符、条件运算符、位操作运算符。 2.熟练掌握隐式类型转换和强制类型转换; 3.熟练掌握各类表达式的计算规则及应用。 四、预处理命令 1.理解编译预处理; 2.正确定义和使用宏,包括不带参数的宏、带参数的宏; 3.正确使用文件包含命令; 4.了解条件编译。 五、流程控制 1.熟练掌握表达式语句、空语句、复合语句; 2.熟练掌握选择控制语句及应用(if…else…, switch…); 3.熟练掌握循环控制语句及应用(while, do while, for) 4.正确理解break,continue语句的含义,并能熟练运用。 六、函数 1.自定义函数 (1)正确定义函数; (2)正确理解函数形参与实参的关系,能熟练运用函数参数传递,包括指

c语言程序设计(科学出版社)课后习题解答

第3章习题解答 第1章 1.C 语言程序主要由预处理命令、函数、注释等组成。 2.填空 (1)分号 (2)main (3)stdio.h 3. 源程序: #include main( ) { printf(“*************************\n”); printf(“Hello World!\n”); printf(“*************************”); } 4. 源程序: #include main( ) { int a, b, c; /* 定义变量*/ scanf(“%d”, &a); /* 输入第一个整数*/ scanf(“%d”, &b); /* 输入第二个整数*/ c=a-b; /* 计算差*/ printf(“%d-%d=%d”,a,b,c); /* 输出结果*/ } 5. (1) (2)x=10; (3)printf(“s=%d\n”,s); 第2章 1. (1) c (2) a (3) b g (4) a d e (5) d 2. a. 5 b. 295 c. 4 d. 29 e. 9 3. a.x=4,y=6

b. x=4,y=3 f.x=3,y=6 4. 16 5. #include main() { int a,b,c; scanf("%d%d",&a,&b); c=a*b; printf("%d*%d=%d",a,b,c); } 第3章 1. (1) b (2) b (3) d (4) a (5) b 2. (1)&a,&b (2)l,s 3. printf(“x=%.2f,y=%.2f\n”,x,y); 4. #include main() { int num1,num2,num3,sum; float average; scanf("%d%d%d",&num1,&num2,&num3); sum=num1+num2+num3; average=sum/3.0; printf("sum=%d,average=%.2f\n",sum,average); } 5. #include main() { int hour,minute,second,total; /* 定义变量代表时、分、秒和总秒数*/ scanf("%d",&total); hour=total/3600; minute=total%3600/60; second=total%3600%60;

C语言程序设计1(专升本) 期末考试试题及参考答案

C语言程序设计复习题1(专升本) 一、选择题 1.用C语言编写的代码程序()。 A)可立即执行B)是一个源程序 C)经过编译即可执行D)经过编译解释才能执行 2.在C语言中,下列属于构造类型的是() A)整型B)字符型C)实型D)数组类型 3.C语言中,运算对象必须是整型数的运算符是()。 A)% B)\ C)% 和\ D)** 4.下列常数中,合法的C 常量是()。 A)-0. B) '105' C)'AB' D)"35" 5.设整型变量a值为9,则下列表达式中使b的值不为4的表达式()。 A)b=a/2 B)b=a%2 C)b=8-(3,a-5) D)b=a>5?4:2 6.下列符号中,可以作为变量名的是()。 A)+c B)*X C)_DAY D)next day 7.有以下程序 main() { char a,b,c,d; scanf("%c,%c,%d,%d",&a, &b, &c, &d); printf("%c,%c,%c,%c\n",a, b, c, d); } 若运行时从键盘上输入:6,5,65,66。则输出结果是()。 A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6 8.以下叙述中错误的是()。 A)C语句必须以分号结束 B)复合语句在语法上被看作一条语句 C)空语句出现在任何位置都不会影响程序运行 D)赋值表达式末尾加分号就构成赋值语句 9. 以下叙述中正确的是()。 A)调用printf函数时,必须要有输出项 B)使用putchar函数时,必须在之前包含头文件stdio.h C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码10能正确表示逻辑关系“a≥=10或a≤0”的C语言表达式是()。 A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 && a<=0 D)a>=10‖a<=0 11 逻辑运算符的运算对象的数据类型()。 A)只能是0或1 B)只能是T或F C)只能是整型或字符型D)任何类型的数据 12以下程序的运行结果是()。 main( ) { int c, x, y; x=1; y=1; c=0; c=x++||y++;

《C语言程序设计》专升本考试大纲.

《C语言程序设计》专升本考试大纲 一、总要求 本课程地位:本课程是计算机专业的核心课程之一。 本课程性质:本课程是计算机专业的专业基础课程 本课程了解、熟悉、掌握的主要内容:了解C语言的主要特征、常用算法描述以及其它相关基础知识;掌握C语言中顺序程序设计、选择程序设计、循环程序设计、指针、结构体共用、函数、文件操作等。 二、内容 第一章 C语言概论 ?了解C语言的主要特征,掌握C语言程序的基本结构 ?掌握高级语言程序的上机实现过程 第二章数据类型、运算符与表达式 ?掌握C语言中的数据类型及其常量的表示方法; ?理解各类数值型数据间的混合运算规则 ?掌握基本运算符的功能,表达式的概念 第三章顺序程序设计 ?掌握用传统流程图进行算法描述; ?掌握结构化程序设计的三种基本结构 ?掌握getchar()、putchar()、printf()、 scanf()函数的使用 ?掌握顺序结构程序的设计方法 第四章选择结构程序设计 ?掌握关系运算符和逻辑运算符的功能及用法 ?掌握基本条件和复合条件语句的使用 ?掌握switch语句的使用 ?掌握选择结构程序的设计方法 第五章循环结构程序设计 ?掌握循环概念及循环的构成要素 ?掌握while语句用法 ?掌握do-while语句的用法 ?掌握for语句的用法 ?掌握break、continue语句 ?掌握多重循环的概念及其程序描述方法 ?掌握循环结构程序设计的基本方法 第六章数组

?掌握数组的基本概念。 ?掌握一维、二维数组的定义和使用。 ?掌握字符数组的使用,了解基本的字符和字符串处理库函数的功能和使用 ?能利用数组进行程序设计 第七章函数 ?掌握函数定义的一般形式 ?理解形参和实参的概念 ?掌握函数的调用方法 ?了解函数的嵌套调用和递归调用。 ?了解数组作函数参数的使用 ?了解局部变量和全局变量的概念 ?了解变量的存储类别和作用域,库函数的分类和调用 ?了解内部函数和外部函数的概念 第八章编译预处理 ?掌握宏定义的概念和使用 ?了解文件包含处理 ?了解条件编译 第九章指针 ?掌握指针的基本概念及其使用规则 ?掌握用指针实现对数组和函数的访问方法 ?掌握指针的运算 ?了解多级指针的概念及带参数命令行源程序的编制方法 ?掌握指针与数组、指针与函数的关系 第十章结构体和共用体 ?掌握结构体类型的定义方法 ?了解枚举类型的定义和使用 ?掌握结构体类型变量的定义初始化和引用 ?了解指向结构体类型数据的指针的使用 ?掌握结构体数据类型的使用(以链表为例) ?掌握共同体的概念 ?掌握位运算符的功能及使用方法 第十一章文件 ?了解文件的基本概念 ?掌握文件打开和关闭的方法 ?了解文件读写和定位函数的功能 三、试卷结构 1、试卷内容比例 第一章 C语言概论5% 第二章数据类型、运算符与表达式5% 第三章顺序程序设计5% 第四章选择结构程序设计10%

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

专升本C语言程序设计试卷

专升本C语言程序设计试卷(二) 一、单项选择题(1~30题每小题1分,31~45题每小题2分,共60分) 1. 以下合法的用户自定义标识符是(D)。 A、b-b B、float C、<fr> D、_isw 2. 若变量已正确定义并赋值,以下不符合C语言语法的表达式是(B)。 A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. 下列不正确的字符常量是(C) A、'n' B、'1' C、"a" D、'101' 4. 在C 语言中,表示逻辑值“真”用(B) A、1 B、非0 的数 C、非1 的数 D、大于0 的数 5. 把x、y定义成float类型变量,并赋同一初值3.14是(C) A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14; 6. 若变量已正确定义,值不为2的表达式是(C) A、2&3 B、1<<1 C、a==2 D、1^3 7. 若变量已正确定义,和语句“if(a>b) k=0; else k=1;”等价的是(C) A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 8. 设变量定义为“int a, b;”,执行下列语句时,若a和b的值都是10,则应输入(D) scanf("a=%d, b=%d",&a, &b); A、10 10 B、10, 10 C、a=10 b=10 D、a=10, b=10 9. 下列程序的输出结果是(D) fun(int a, int b, int c) { c =a*b; } void main( ) { int c; fun(2,3,c); p rintf(”%dn”,c); } A、0 B、1 C、6 D、无法确定

专升本插班生《c语言程序设计》试卷讲课教案

2011专升本插班生《C语言程序设计》 试卷

韩山师范学院2011年专升本插班生考试试题教育技术学专业 C语言程序设计试卷(A卷) 一、填空题(每空1分,共10分) 1.C程序的基本单位是________。 2.C语言源程序文件的后缀是________。 3.标识符的第一个字符必须是_______或________。 4.表达式10%3的结果是_________。 5.当打开的文件被成功关闭后,函数fclose()返回。6.在每个C语句和数据定义的最后必须有一个____________。 7.若有定义:double A[3][5];则A数组中行下标的下限为 _____________,列下标的上限为_____________。 8.若x=2,y=3,则 x|y<<2的结果是___________。 二、单项选择题(每小题1.5分,共30分)

1.算法是指为解决某个特定问题而采取的正确且有限的步骤,下面不属于算法的5个特性的是( )。 A.高效性 B.有穷性 C.有零个输入或多个输入 D.确定性2.C语言程序的三种基本结构是()。 A.顺序结构、选择结构、循环结构 B.递归结构、循环结构、转移结构 C.嵌套结构、递归结构、顺序结构 D.循环结构、转移结构、顺序结构 3.有下面的程序段 char a[3],b[]=“China”; a=b; printf(“%s”,a); A.运行后将输出China B.运行后将输出Ch C.运行后将输出Chi D.编译出错 4.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。 A.x=n%2.5 B.x=y==5 C.x+n=i D.x=5=4+1 5.若执行以下程序时从键盘上输入9,则输出结果是()。

2014专升本精通C语言精编100题(answer)

C语言精编100题 一、单选题 1.由C语言编写的代码程序( B ) A. 可直接执行 B. 是一个源程序 C. 经过编译即可执行 D. 经过编译解释才 能执行 2.按照C语言规定的用户标识符命名规则,不能出现在标识符中 的是( B ) A. 大写字母 B. 中划线 C. 数字字符 D. 下划线 3.下列选项中,不能用作标识符的是( D ) A. _1234_ B. _1_2 C. int_2_ D. 2_int_ 4.以下选项中合法的用户标识符是( B ) A. long B. _2Test C. 3Dmax D. A.dat 5.以下不能定义为用户标识符的是( D ) A. Main B. _0 C. _int D. sizeof

6.下列定义变量的语句错误的是( D ) A. int _int; B. double int_; C. char For; D. float US$; 7.在C语言中,合法的实型常数是( C ) A. 5E2.0 B. E-3 C. 2E0 D. 1.3E 8.在C语言中,合法的实型常数是( C ) A. 1.2E0.5 B. 3.14159E C. 5E-3 D. E15 9.以下选项中,不能作为合法常量的是( B ) A. 1.234e04 B. 1.234e0.4 C. 1.234e+4 D. 1.234e0 10.以下不合法的数值常量是( C ) A. 011 B. le1 C. 8.0E0.5 D. 0xabcd 11.在C语言中,非法的字符常量是( C ) A.‘\t’ B.‘\17’ C. "\n" D.‘\xaa’ 12.以下不合法的字符常量是( A ) A.‘\018’ B.‘\"’ C.‘\\’

相关文档
相关文档 最新文档