搜档网
当前位置:搜档网 › C语言程序设计基础知识期末复习

C语言程序设计基础知识期末复习

C语言程序设计基础知识期末复习
C语言程序设计基础知识期末复习

C语言程序设计基础知识期末复习一、C语言与算法

1.程序:一组计算机能识别和执行的指令。

2.C语言的特点:运算符丰富(共有34种运算符)、数据类型丰富、具有结构化的控制语句。

3.C语言程序的结构特点:

(1).一个程序由一个或多个源程序文件组成:一个源程序文件中可以包括三个部分:预处理指令、全局声明、函数定义

(2).函数是C程序的主要组成部分:一个C程序是由一个或多个函数组成的必须包含一个main 函数(只能有一个);每个函数都用来实现一个或几个特定功能;被调用的函数可以是库函数,也可以是自己编制设计的函数。

(3).一个函数包括两个部分函数首部和函数体(声明部分:定义在本函数中所用到的变量;对本函数所调用函数进行声明;执行部分:由若干个语句组成,指定在函数中所进行的操作)(4). 程序总是从main函数开始执行

(5). C程序对计算机的操作由C语句完成

(6.)数据声明和语句最后必须有分号

(7.)C语言本身不提供输入输出语句

(8.)程序应当包含注释,增加可读性

4、算法(1)算法+ 数据结构= 程序

(2)顺序结构、选择结构、循环结构是表示一个良好算法的基本结构

(3)算法的特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性

(4)算法流程图:一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明。

流程线不要忘记画箭头,否则难以判定各框的执行次序。

算法流程图的结构特点:只有一个入口;只有一个出口(一个判断框有两个出口;一个选择结构只有一个出口)结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它;结构内不存在“死循环”。

二、顺序结构设计

5、标识符:用来标识变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。

C语言对标识符的规定:

(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线

(2)长度:在TC中最多允许32个字符,建议不要超过8个

如果系统规定标识符长度为8,那么x1234567A和x1234567B会被视为同一标识符。

(3)在C语言中,标识符大小写敏感。如ABC、aBC、abc分别代表3种不同的标识符

(4)标识符不能与C语言的保留字、系统标准库函数同名。

program to_ _to file_2 ab1_c3 为合法标识符

非法字符举例:yes? (含有不合法字符“?”)123(第一个字符不能为数字)go to(标识符中不允许有空格)

a_80%(出现非法字符“%”)if与关键字相同)

6、常量与变量

注意:以下变量定义形式是错误的int a,int b; int a;b;

(1)整型常量

-2

,95,11,0如:,可带正负号0~9·十进制整型:能出现数字

·八进制整型:以数字0开头的数字串,能出现数字0~7 如:011(十进制9),0111(十进制73)

·十六进制整型:以0x开头的,能出现数字0~9,字母a~f或A~F 如:0x11(十进制17),0xa5(十进制165)

(2)整型变量基本类型int

(3)浮点型

·浮点型常量十进制小数形式:由数字与小数点组成(必须有小数点)。

如1.23,-123.,0.0123,.0,0.

3注意字母e或123×10E之前必须有数字,后面必须指数形式,如123e3或123E3都代表是整数E-5,.1234e1.2,6.5E为非法的浮点型常量

·浮点型变量float double

(4)字符型

1)字符常量:分为两类

·用单撇号括起来的一个字符如:'a','9',''(空格)是合法字符常量

”a”,'99'是非法字符常量

·转义字符:以\(反斜杠)开头的特殊形式的字符。如:'\n' ,'\r' ,'\123' ,'\x3b'

2)字符变量:char,占1个字节空间,只能存放一个字符。

存储特点:在字符变量中实际上存储的是字符的ASCII码,其存储形式与整数的存储形式相同。注意:

I.字符数据与整型数据可相互赋值,直接运算。

II.大小写字母转换

小写字母减32得到相应的大写字母,如:‘a'-32 得到‘A'

大写字母加32得到相应的小写字母如:‘B'+32 得到‘b'

(5)字符串常量

定义:用一对双撇号(””)括起来的字符序列。如:”hello””Mary””\\aaa\'\n ”

存储:每个字符串尾自动加一个‘\0'作为字符串结束标志

(6)变量赋初值

格式:类型说明符变量1=常数1[,变量2=常数2[,···]];int x=1,y=1,z=1;

int x=y=z=1;(语法错误)

7、算数运算符和算术表达式

(1)运算符的注意事项

·除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。如果x,y是整型,则结果为整型,小数部分被略去。如果x,y其中一个为浮点型量,则结果为浮点型。

·“%”是求余运算。a%b计算a除以b后的余数,也是a模b的值。它要求两个运算对象必须是整型,其结果也是整型量。

(2)书写算术表达式的注意事项

·将方括号改成圆括号,即算术表达式内所有的括号均为圆括号,*(乘法)不能省略

·其中π为非字母字符,要用浮点型常量代替

·其中不能出现分数,改用除法运算符,圆括号不能缺少

(3)算数运算符的优先级

优先级:高----->* / % -----> + -低注意:可以用( )来改变运算的顺序.

(4)

(3) (2)

8、自增、自减运算符

后缀i++(i--)先使用i的值,再使i的值加(减)1

前缀++i (--i)先使i的值加(减)1 ,再使用i的值

自增、自减运算只能用于变量,不能用于常量和表达式。

自增、自减运算符高于基本算术运算符。

9、赋值运算符

(1)简单赋值运算符运算符:= 表达式格式:变量=表达式

·赋值运算符左边必须是变量而不能是表达式;

·赋值表达式的值是赋值号左边变量被赋值后的值;

(2)算术运算符“+ —* / %”和赋值运算符“=”结合起来,形成复合赋值运算符。

+= :加赋值运算符; 如a+=3,等价于a=a+3 -=、*=、/=、%= 与此类似·复合运算符在书写时,两个运算符之间不能有空格。

·复合运算符右边的表达式计算完成后才参与复合赋值运算;

10、当表达式中的数据类型不同时,要进行类型转换。

转换方式自动(隐式)转换:系统自动把数据由低级类型向高级转换。

强制转换:将表达式的运算结果强制转换成指定的数据类型。

自动转换规则强制转换格式:(目标类型名)(表达式)double←long←unsigned←int

↑↑

float 高←低char short

逗号运算符与逗号表达式:运算优先级最低为15级

求解过程先求表达式1的值,再求表达式2的值,···,直至求出表达式n的值。整个表达式的值为表达式n的值。

x=5*8, 6+9 先把x赋值为40,表达式的值为15

11、字符数据的简单输入和输出

(1)putchar函数(字符输出函数)形式:putchar(c)

·c可以是字符常量、字符变量或整型变量。putchar(100);

·用putchar函数也可输出转义字符。putchar(‘\n'); /*输出一个换行符*/

putchar(‘\\'); /*输出一个反斜杠\ */

·该函数包含在stdio.h库中,因此应在使用该函数的程序开头加入:#include (2)getchar作用:从终端(如键盘)输入一个字符。

形式:getchar( ) 无参数

说明:该函数只能接收一个字符,其函数值可以赋给一个字符变量或整型变量,也可作为表达式的一部分,该函数包含在stdio.h中。

(3)格式输出函数格式:printf(格式控制,输出表列)

格式控制是用双撇号括起来的字符串,也称“转换控制字符串”,包括2种信息。

1)格式说明:% [<附加格式字符>]格式字符

将输出列表中的数据转换为指定格式输出。

2)普通字符:原样输出。

输出表列:需要输出的数据列表,彼此间用逗号分隔。它可是任意合法的表达式。

printf(a+b = %5.2 f , c )

(4)格式字符

1)d 格式符,用来输出十进制整数

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

,则左侧补m代表某个数字,指定输出数据的最小宽度。若数据的位数小于m %md 与%md类似,只是左对齐空格(右对齐),若大于m则按实际位数输出。%-md

%-mc 格式符:用来输出一个字符%c %mc 2)c

格式符:用来以十进制小数形式输出实数(float,double)3)f小( %m.nf 输出数据最小占m列,其中包括n位小数和1位小数点,右对齐与上面类似,只是左对齐数点也算占一列) %-m.nf

S 格式符:用来输出一个字符串4)m列,右对齐,左补空格%ms 输出字符串最小占%s 按字符串原长输出

m列,左对齐,右补空格%-ms 输出字符串最小占

n个字符,右对齐字符串占m列,但只取左端%m.ns

个字符,左对齐字符串占m列,但只取左端n %-m.ns

使用说明:

)格式控制中的格式说明符,必须按从左到右的顺序,与输出表中的每个数据一一对应,1 否则出错。f= 1717986918,i=0.000000

显示:printf(“f=%d, i=%f\n”, 5.6,3);

。2)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出),都是普通字符。和f,第三个fc=%c, f=?\n“, ‘a',1.5); 其中的第一个cprintf(”scanf(格式控制字符串,地址列表)scanf函数(5)printf函数类似。格式控制与以逗号隔开),可以是变量的地址,或字符串的首地址。地址列表是由若干个地址组成的表列(,&a,&b,&c); scanf(“%d%d%d”键、回车键作分隔符。最后的回车键代)格式符中无普通字符时,可用空格、Tab 1 表输入结束)用c格式符输入字符时,空格、回车、转义字符等均为有效字符。

2char a,b,c; 例:

%c%c%c, &a, &b, &c); scanf(‘C'b=‘B',c=ABC 则a=‘A',正确的输入方法:键入B'),c=‘空格a=‘A',b=‘'( 若键入:A B C 则

(换行\n'',b=‘C 未送,系统已经认为输入结束了则:a=‘A 若键入 A B

B',c=‘符)则综合上述规则若不同类型输入则应按顺序原样输入。)在格式控制中除格式说明符外若还有其它字符3, )可以指定输入数据所占列数,系统自动按它截取所需数据。4 ”附加说明符,用来表示跳过相应的数据。%后的“*5)1234567 则将12?a,67 ”,&a,&b); 输入?b,345被跳过-%*3d-如:scanf(“6)输入数据时不能规定精度。如:scanf(“%7.2f”,&a);错误

7)double类型的变量输入时,要用%lf%le(必须记住!!!)

如:

double x;

scanf(“%lf”,&x);

三、选择结构程序设计

1、if语句实现选择

if (表达式) 语句1 表达式可以是关系表达式、逻辑表达式、数值表达式

2 语句else

最常用的3种if语句形式:

(1)if (表达式) 语句1 (没有else子句)

(2).if (表达式) 语句1

(3)else 语句2 (有else子句)

(4)if(表达式1)语句1

else if(表达式2)语句2

else if(表达式3)语句3

else if(表达式m)语句m

else 语句m+1

(在else部分又嵌套了多层的if语句)

说明:

(1)整个if语句可写在多行上,也可写在一行上,但都是一个整体,属于同一个语句

(2)“语句1”…“语句m”是if中的内嵌语句内嵌语句也可以是一个if语句

(3)“语句1”…“语句m”可以是简单的语句,也可以是复合语句

2、关系运算符

(1)关系运算符:

用来对两个数值进行比较的比较运算符

C语言提供6种关系运算符:

①<(小于) ②<= (小于或等于) ③>(大于) ④>= (大于或等于)

优先级高

⑤== (等于) ⑥!= (不等于) 优先级低

(2)关系表达式

用关系运算符将两个数值或数值表达式连接起来的式子,关系表达式的值是一个逻辑值,即“真”或“假”,在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

3、逻辑运算符与逻辑表达式

3种逻辑运算符:&&(逻辑与)||(逻辑或)!(逻辑非)

判断年龄在13至17岁之内?age>=13 && age<=17

逻辑运算符的优先次序! →&& →|| (!为三者中最高)

逻辑表达式的值应该是逻辑量“真”或“假”

编译系统在表示逻辑运算结果时以数值1代表“真”,以0代表“假”

但在判断一个量是否为“真”时以0代表“假”,以非0代表“真”注意:将一个非零的数值认作为“真”

在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。

4、条件运算符与条件表达式

条件表达式的一般形式为:表达式1?表达式2: 表达式3

条件运算符的执行顺序:

求解表达式1

若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值

若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值

条件运算符的结合方向为“自右至左”

5、switch语句

语句的作用是根据表达式的值,使流程跳转到不同的语句switch

switch语句的一般形式:

switch(表达式)整数类型(包括字符型)

{ case 常量1 :语句1;break

case 常量2 :语句2

┇┇┇

case 常量n :语句n

default : 语句n+1

}

优先级顺序:赋值运算符→&& 和||→关系运算符→算术运算符→!

四、循环结构程序设计

1、用while语句实现循环

while语句的一般形式如下:

while (表达式) 语句→循环体

循环条件表达式“真”时执行循环体语句“假”时不执行

while循环的特点是:先判断条件表达式,后执行循环体语句

while循环的作用:实现“当型”循环

使用说明:

在while的循环体中一定要有使循环趋于结束的语句;否则将形成死循环;

注意循环操作的范围、花括号、分号的使用;

注意给循环变量赋初值的位置及初值的正确性

2、用do...while语句实现循环

do---while语句的特点:先无条件地执行循环体,然后判断循环条件是否成立

do---while语句的一般形式为:

do

语句

while (表达式);

while和do...while语句的比较

当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同;否则不相同(1). 循环体内必须有使循环趋于终止的条件

while (i<=100) do

{ sum=sum+i; { sum=sum+i;

i++; i++;

} } while (i<=100);

(2)注意循环初值与循环条件

i=1; i=0;

while (i<=100) while (i<100)

{ sum=sum+i; { i++;

i++; sum=sum+i;

} }

(3)do_while 循环的循环体至少执行一次, while循环的循环体可能一次也不执行。(4)在循环体至少执行一次的前提下,do_while与while 循环等价。

语句实现循环for、3

for语句的一般形式为

for(表达式1;表达式2;表达式3)

语句

表达式1:设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值执行

表达式2:循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环

表达式3:作为循环的调整器,例如使循环变量增值,它是在执行完循环体后才进行的for语句说明:

1)表达式1可省略,但分号不能省;

如:int i=1,sum=0;

for (;i<=100;i++)

sum=sum+i;

2)若表达式2省略,循环条件永远为真;

如: for(i=1; ;i++)

printf(“%d,”,i); 死循环自己编程序时不建议采用,

3)表达式3也可省略,但应设法保证循环正常结束;但要能看懂别人的程序

如:for (i=1;i<=100;)

{ sum=sum+i;

i++;

}

4)可只给循环条件;

i=1;

for (;i<=100;)

{ sum=sum+i;

i++;

}

5)三个表达式都可省;

for (;;) 相当于while (1)

6)表达式1和表达式3可以是逗号表达式;

如:for (i=1,sum=0;i<=100;i++)

sum=sum+i;

7)表达式2一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零就执行循环体。

如:for (;(c=getchar( ))!='\n';)

printf(%c,,c);

注: 尽量避免用实型变量控制循环次数。

4、改变循环的执行状态

(1)用break语句提前终止循环

break语句作用:

1) 从循环体内跳出,即提前结束循环,接着执行循环下面的语句;

2) break语句只能用于循环语句和switch 语句

注意:

在循环中使用了break语句后,循环语句的结束可能有两种:

由于循环条件表达式为假:正常结束(正常出口)1.

2. 非正常结束(异常出口):由break语句引起

(2)continue语句提前结束本次循环

结束本次循环,即跳过循环体语句中下面尚未执行的语句,接着执行下一次是否执行循环的判

定:for (n=100;n<=200;n++)

{ if (n%3= =0) continue;

printf(”%d”,n); 这段程序等价于if (n%3!=0) printf(”%d”,n);

}

for语句中执行的是表达式3

(3)break语句和continue语句的区别

continue语句只结束本次循环,而不是终止整个循环的执行

break语句结束整个循环过程,不再判断执行循环的条件是否成立

四、利用数组处理批量数据

1、一维数组

(1)定义一维数组

定义一维数组的一般形式为:类型符数组名[常量表达式];

说明:

类型符:数组元素的类型。

数组名:即数组的名称,其命名方法同变量名。

在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。

注意:

1)在定义数组时,只能使用整常量表达式表明数组的大小,即数组元素的个数,不能是变量。也就是说,C语言不允许对数组的大小作动态定义.

注意:

int n=10;

int arr[n];

错误,n不是常量而是变量

数组说明中其他常见的错误:

①float a[0]; /* 数组大小为0没有意义*/

②int b(2)(3); /* 不能使用圆括号*/

③int k, a[k]; /* 不能用变量说明数组大小*/

一维数组的存储方式:每个元素都有一个编号(从0开始),称为下标。

(2)引用一维数组

一次只能引用一个数组元素不能引用整个数组所有元素!也不能引用多个元素

引用数组元素的表示形式为:数组名[下标]

一个数组元素就是一个普通变量,跟普通变量一样使用。a[3]=a[2]%4

注意:

引用数组元素时,下标可以是整型常量、变量或整型表达式

对数组中所有元素逐个引用时,通常可使用循环结构。

(3)一维数组的初始化

数组的初始化:在定义数组的同时,给各数组元素赋值

格式:

};

初值表]={类型符数组名[表达式

补齐int a[8]={ 0,1,2,3,4 }; 后面的用0给部分元素赋初值。例

[ ]]={ 0,1,2,3,4};注意:只有在初始化时给全部元素赋初值时可不指定数组的长度。int a[

中可以空着。其他情况不行,例如:int a[ ],b[ ];是错误的2、二维数组];常量表达式][常量表达式二维数组定义的一般形式为类型符数组名[(1)定义二维数组

行、列下标都是从0开始列下标] (2)引用二维数组数组名[行下标][ 二维数组在内存中按行存放二维数组的存储方式

二维数组初始化通常是按行进行的(3)二维数组的初始化

};表达式1][表达式2]={初值表类型符数组名[ 给全部元素赋初值。9,10,11}};

例或写成: int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11}

给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。

#define N 10

#define M 6

若有定义:

int a[N][M];

二维数组按行输入标准模板:

for(i=0; i

for(j=0; j

scanf(%d, &a[i][j]);

二维数组按行输出标准模板:

for(i=0; i

{ for(j=0; j

printf(%d, a[i][j]);

printf(\

);

}

3、字符数组

(1)字符数组的定义:定义字符数组的方法与定义数值型数组的方法相同,使用关键字char 格式:

char 数组名[常量表达式],···;

(2)字符数组的初始化一维字符数组初始化1)逐个字符赋给数组中的各元素

2)用字符串常量初始化数组中的各元素

字符串在实际存储时,是用字符数组存储的,系统会自动的在其尾部添加一个结束标志'\0'二维字符组初始化二维字符数组的初始化,可以采用逐个字符式或者字符串常量的方式(3)引用字符数组引用字符数组中的元素,与引用其他类型数组元素相同

只能是一个一个字符地引用

(4)字符数组的输入输出

1、利用getchar、putchar逐个处理(用循环结构)

利用格式符%c 逐个输入、输出字符for( i=0; i<9; i++)

捳湡?尠挥,&str[i] );

,可以一次输入、输出整个字符串。%s可利用格式符,当字符数组存字符串时.

(不用循环结构)

scanf(“%s”,字符数组名); 用于输入一个字符串

printf(“%s”,字符数组名); 用于输出一个字符串

如果一个字符数组中包含多个'\0',则遇第一个'\0'时输出就结束

scanf函数中的输入项是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度char str[10];

捳湡?╜屳,str );

printf(%s\n, str );用字符数组名,不要加&,遇空格、TAB、回车结束输入

自动加1个‘\0',输入串长度小于数组长度

怎样输入带空格的字符串?使用%c格式符

for(i=0;(c=getchar())!=‘\n';i++)

str[i]=c;

使用字符串处理函数gets(str);

利用字符串输入输出函数

字符串输入函数gets

格式:gets(字符数组名)

功能:从键盘接收一个字符串放入字符数组中,

自动加‘\0',只以回车符作为输入的结束

说明:输入串长度应小于字符数组元素的个数

字符串输出函数puts

格式:puts(字符数组名或字符串常量)

功能:向显示器输出一个字符串(输出完,自动换行)

说明:字符数组必须以‘\0'结束

gets()函数可以接收包含空格、tab的字符串。scanf(“%s”,…)不能接收空格

puts( )函数一次输出一个字符串,并自动换行。

printf(“%s”,…)函数可以同时输出多个字符串,并且能灵活控制是否换行。

strcat函数----字符串连接函数

其一般形式为:

strcat(字符数组1,字符串2)

其作用是把两个字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中

字符串拷贝函数strcpy

格式:strcpy(字符数组1,字符串2)

作用:将字符串2复制到字符数组1中。

注意:

(1)字符数组1必须足够大,以便容纳字符串2的内容。

(2)字符串2可以是字符数组名或者字符串常量。当字符串2为字符数组名时,只复制第一个'\0'前面的内容(含'\0'),其后内容不复制。

(3)不能使用赋值语句为一个字符数组赋值

strcmp函数----字符串比较函数

一般形式: strcmp(字符串1,字符串2)

作用:比较字符串1和字符串2

strcmp(str1,str2);

strcmp(”China”,”Korea”);

strcmp(str1,”Beijing”);

比较的结果由函数值带回

如果字符串1=字符串2,则函数值为0

如果字符串1>字符串2,则函数值为一个正整数

如果字符串1<字符串2,则函数值为一个负整数

注意:

字符串比较不能用“==”、“<”、“>等关系运算符直接比较,要用strcmp函数进行比较

if(“ad”>”ac”) printf(“ad”);

strlen函数----测字符串长度的函数

一般形式:strlen (字符串)

作用: 它是测试字符串长度的函数

函数的值为字符串中的实际长度,它的返回值是字符串中字符的个数(不包含'\0')

strlwr函数----转换为小写的函数

一般形式: strlwr (字符串) 函数的作用: 将字符串中大写字母换成小写字母

strupr函数----转换为大写的函数

一般形式: strupr (字符串) 函数的作用: 将字符串中小写字母换成大写字母

用函数实现模块化程序设计六、1、可以使用哪些函数?

一个C程序由两种函数构成:

标准函数(库函数):

系统提供的,实现各种不同的功能。如printf, scanf, sqrt, fabs ,strlen,等等

使用它们要包含相应的头文件

自定义函数:

用户自己定义的函数。

用户可以把一些具有独立功能的代码定义成函数,有利于程序的模块化和代码的“重用”

2、说明

(1)一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件

(2)一个源程序文件由一个或多个函数以及其他有关内容(如预处理指令、数据声明与定义等)组成

(3)C程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。

(4)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。即函数不能嵌套定义

3、定义函数

(1)C语言要求,在程序中用到的所有函数,必须先定义,后使用

指定函数的名字,以便以后按名调用

指定函数类型,即函数返回值的类型

指定函数参数的名字和类型,以便在调用函数时向它们传递数据

指定函数的功能。这是最重要的,这是在函数体中解决的

(2)定义方法

[函数的类型] 函数名称(形式参数列表)函数首部

{

数据说明部分

函数体可执行语句}

定义无参函数:

定义无参函数的一般形式为

(void) 类型名函数名函数名( ) 类型名{

{

函数体函数体

} }

定义有参函数: 定义有参函数的一般形式为

) (形式参数表列类型名函数名{

函数体

}

、函数的调用4) 实参表函数名(调用一般形式

函数调用语句(1)

;这时不要求函数带回值,只要求函数完成printf_star(), 如把函数调用单独作为一个语句一定的操作函数表达式2)(如函数调用出现在另一个表达式中,

c=max(a,b)+2;

m = jiecheng(4)*2;

这时要求函数带回一个确定的值以参加表达式的运算函数参数(3)如函数调用作为另一函数调用时的实参,

max(a,max(b,c)); m =

,jiecheng(9));

%f”printf(“max另一次调用的实参其中max(b,c)是一次函数调用,它的值作为当要使用函数的返回值时用函数表达式或函数当用不到函数的返回值时用函数调用语句

参数4)函数调用时的数据传递(.形式参数和实际参数

形参(形式参数)是函数定义时,参数表中的参数。形式参数只能是变量。

例如:float max( float x,float y )

{ ···}

float ftoc ( float temp)

{ ···}

在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。

实参(实际参数)是函数调用时主调函数传送给被调用函数形参的实际值。实参可以是常量、变量和表达式,实参必须有确定的值。

实参和形参间的数据传递

在调用函数过程中,系统会把实参的值传递给被调用函数的形参,或者说,形参从实参得到从实参到形参的值传递是可以参加被调函数中的运算,该值在函数调用期间有效,一个值,

单向的!没有返回的过程!单向值传递!

实、形参个数相同,类型应一致(相同或赋值兼容)。

例:int n;

n=max(4,20);

n=max(3.5,7.3); 转化为:n=max(3,7);

(5)函数的调用过程

在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。在发生函数调用时,函数的形参被临时分配内存单元。

调用结束,形参单元被释放实参单元仍保留并维持原值,没有改变

如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值!

(6)函数的返回值

希望通过函数调用使主调函数能得到一个确定的值, 这就是函数值(函数的返回值)

函数的返回值是通过函数中的return语句获得的return语句后面的括号可以不要

一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用return后面的值可以是一个表达式。

例如: max(int x,int y)

{return(x>y?x:y);}

在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。

如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。

对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。

5、对被调用函数的声明和函数原型

(1)在一个函数中调用另一个函数需要具备如下条件:

被调用函数必须是已经定义的函数(是库函数或用户自己定义的函数)

如果使用库函数,应该在本文件开头加相应的#include指令

如果使用自己定义的函数,而该函数的位置在调用它的函数后面,应该进行函数声明

(2)函数声明

作用:

告诉编译系统函数类型、参数个数及类型,以便检查

形式:

函数类型函数名(类型1 形参1,类型2 形参2,….. );

函数类型函数名(类型1,类型2,…..);

函数类型函数名();传统方法

函数声明位置:

主调函数内部开头

或整个文件的开头(所有函数之前)

6、函数的嵌套调用

7、函数的递归调用

(1)直接调用本函数(2)间接调用本函数应使用if语句控制结束调用

8、数组作为函数的参数

除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)

用数组元素作实参时,向形参变量传递的是数组元素的值,单向值传递

用数组名作函数实参时,向形参传递的是数组首元素的地址

说明:

且类型应一致,在主调函数与被调函数分别定义数组.

形参数组大小可不指定:C编译系统不检查形参数组的大小

最好设计一个参数,来指定形参数组大小,也方便确定数组元素个数

数组名做参数,参数传递的是地址:形参数组名只是获得了实参数组的首地址

注意:

数组名做函数参数时,可以用来存储函数的返回值。

当一个函数有多个同类型的结果时,可用数组做参数来保存结果。

9、局部变量和全局变量

(1)局部变量

·在一个函数内部定义的变量只在本函数范围内有效

·在复合语句内定义的变量只在本复合语句范围内有效

·在函数内部或复合语句内部定义的变量称为“局部变量”

说明:

·main中定义的变量,只在main中有效。

·函数形参是函数的局部变量。

·不同函数中可以定义同名的变量,它们互不干扰。

(2)全局变量

在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,外部变量是全局变量

(也称全程变量)全局变量可以为本文件中其他函数所共用;有效范围为从定义变量的位置开始到本源文件结束

全局变量没有赋初值时,系统自动赋为0

同一个.c文件中,全局与局部变量同名时,外部变量被屏蔽,即局部优先。

10、变量的存储方式和生存期

从变量值存在的时间(即生存期)观察,变量的存储有两种不同的方式:静态存储方式和动态存储方式

静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式

动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式

程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中占据固定的存储单元

函数调用开始时分配,函数结束时释放。在程序执行过程中,这种分配和释放是动态的

不要误认为对外部变量加static声明后才采取静态存储方式,而不加static的是采取动态存储

声明局部变量的存储类型和声明全局变量的存储类型的含义是不同的

对于局部变量来说,声明存储类型的作用是指定变量存储的区域以及由此产生的生存期的问题,而对于全局变量来说,声明存储类型的作用是变量作用域的扩展问题

用static 声明一个变量的作用是:

对局部变量用static声明,把它分配在静态存储区,该变量在整个程序执行期间不释放,其所分配的空间始终存在。

对全局变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。

注意:用auto、register、static声明变量时,是在定义变量的基础上加上这些关键字,而不能单独使用。

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

Java语言程序设计基础篇前三章课后习题要点

第1章计算机、程序和Java概述 1.1(显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun。 程序: 显示: 1.2(显示五条消息)编写程序,显示Welcome to Java五次 程序: 显示: 1.3(显示图案)编写一个程序,显示下面的图案:

程序: 显示: 1.4(打印表格)编写程序,显示以下表格: 程序: 显示:

1.5(计算表达式)编写程序,显示(9.5x4.5- 2.5x3)/(45.5- 3.5)的结果 程序: 显示: 1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果 程序: 显示: 1.7(近似求π)可以使用以下公式计算π: Π=4x(1-1/3+1/5-1/7+1/9-1/11+1/13+...) 编写程序,显示4x(1-1/3+1/5-1/7+1/9-1/11+1/13...)的结果。在程序中用1.0代替1 程序: 显示:

第2章基本程序设计 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换华氏温度,并显示结果。转换公式如下所示: Fahrenheit-=(9/5)*celsius+32 (华氏度=(9/5)*摄氏度+32) 程序: 显示: 2.2(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱体的体积 面积=半径x半径xπ 体积=面积x高 程序: 显示:

2.3(将英尺转换为米)编写程序,读入英尺数,将其转换为米数并显示结果。一英尺等于0.305米。 程序: 显示: 2.4(将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换成千克并显示结果。1磅等于0.454千克。 程序: 显示: 2.5(财务应用程序:计算小费)编写一个程序,读入一笔费用与酬金率,就算酬金和总钱数。例如,如果用户读入10作为费用,15%作为酬金率,计算结果显示酬金为$1.5,总费用为$11.5. 程序:

C语言程序设计基础试题及答案

第一部分C语言基础 一、选择题 1、以下正确得C语言标识符就是() A。%X B。a+b?C.a123 D.test! 2、已定义int a,b;则以下不正确得C语句就是() A.a*=5;??B。b/=2;? C.a+=1、75;?D.b&&=a; 3、若x、i、j与k都就是整型变量,则执行下面表达式后x得值为( ) x=(i=4,j=16,k=32) A.4?B.16 ?C.32 D.52 4、C语言中得标识符只能由字母、数字与下划线三种字符组成,且第一个字符( ) A.必须就是字母???B.必须为下划线? C.必须为字母或下划线D.可以就是字母、数字、下划线中得任一字符 5、下面正确得字符常量就是( ) A.“c”? B。’\\”? C.‘w’??D.” 6、设int a=2,b=0,c;则执行语句c+=b&&a--后, c得结果为( )。 A.0,1B.1,0 ?C.2,0 D.不确定 7、以下不正确得C语言标识符就是()?A) int B)a_1_2?C)ab1exe D)_x 8、以下就是正确得C语言标识符就是( )。?A)#define?B)_123 C) %d D) \n 9、下列四组字符串中都可以用作C语言程序标识符得一组就是() 。?A) prin tB)i\am C)Pxq D)str_l ???oodbs tart$it line# _3d one_half My-〉bookCpp ? pow 10、下面各选项组中,均就是C语言关键字得组就是()。?A)auto,enu

m,include B)switch,typedef,continue?C)signed,union,scanf?D)if,s truct,type 11、下列不属于C语言关键字得就是( ) 。 A)default?B)register C)enum ?D)external 12、C语言程序从main()函数开始执行,所以这个函数要写在( )。?A) 程序文件得开始?B)程序文件得最后?C)它所调用得函数得前面 D) 程序文件得任何位置 13、下列关于C语言得叙述错误得就是( ) A)大写字母与小写字母得意义相同?B) 不同类型得变量可以在一个表达式中 C)在赋值表达式中等号(=)左边得变量与右边得值可以就是不同类型?D) 同一个运算符号在不同得场合可以有不同得含义 14、在C语言中,错误得int类型得常数就是( ) 。?A)32768?B)0 C)037?D) 0xAF 15、将字符g赋给字符变量c,正确得表达式就是( )。 A) c=\147 ?B)c="\147" ?C)c='\147' 16、下列转义字符中错误得一个就是( )。 A) ’\000’ B)'\0014' ?C) ’\x111’ D) ’\2’ 17、将空格符赋给字符变量c,正确得赋值语句就是( )。 A) c=’\0’ B) c=NULL C)c=0 D)c=32 18、已知:char a=’\70’;则变量a中()。 A)包含1个字符?B)包含2个字符?C) 包含3个字符?D) 说明非法 19、字符串"\”EOF\n=-\61\””得长度就是( )。 A)8 ?B) 9?C)14?D)非法字符串

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"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

年C语言程序设计基础期末考试试卷‘B’及答案

年C语言程序设计基础期 末考试试卷‘B’及答案 The following text is amended on 12 November 2020.

一、单项选择题 1. 在C语言中,下面字符串能用作变量名的是( )。 A、a+b B、auto C、2-and D、a2 2. 若double x=2,y;则执行y=x+3/2;后,y的值是( )。 A、 B. C. D. 3 3. 下列关于C语言中字符常量与字符串常量的叙述中,错 误的是( )。 A、字符常量是用单撇号括起来的一个字符 B、空格字符也可用作字符常量 C、字符串常量是用单撇号括起来的一个字符序列 D、字符串常量是用双撇号括起来的一个字符序列 4. 若有以下变量说明和数据的输入方式,则正确的输入语 句为( )。

变量说明:float x1,x2; 数据的输入方式:<回车> <回车> A、scanf(“%f,%f”,&x1,&x2); B、scanf(“%f%f”,&x1,&x2); C、scanf(“%,%”,&x1,&x2); D、scanf(“%%”,&x1,&x2); 6. 在一个源文件中定义的全局变量的作用域为()。 A. 本文件的全部范围 B. 从定义该变量开始至本文件结束 C. 本函数的全部范围 D. 本程序的全部范围

7. 当调用函数时,实参是一个数组名,则向函数传送的是( )。 A、数组的长度 B、数组的首地址 C、数组每一个元素的地址 D、数组每个元素中的值 8.若j为整型变量,则下面while循环( )。 j=10; while(j!=0) j=j-1; A、执行0次 B、执行1次 C、执行10次 D、执行无限次 9. 在while(x)语句中的x与下面条件表达式等价的 是:( )。 A、x!=0 B、 x==1 C、x!=1 D、x==0 10. 以下对C语言函数的描述中,正确的是( )。 A、调用函数时,参数可以是表达式

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

(完整版)《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语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

C语言程序设计基础

题型及分数: 单选题:25分 判断题:10分 填空题:15分 程序分析题:20分 编程题:30分 其中:课后习题及复习大纲中相类似题所占比例在70%-80%。 带*号的内容和复习题为较难部分,为非重点考察内容。 第一章C语言程序设计基础(出题比例4-6%) 1.程序设计语言的基本概念 ?程序 ?程序设计语言 ?常用程序设计语言及其类型 ?源程序、编译、目标文件、连接、可执行程序 ?编程的步骤 2.C语言程序的基本结构 (1) C源程序的框架 C源程序的框架,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 (2) C语言源程序的书写规则: ?C源程序是由一个主函数和若干个其它函数组成的; ?函数名后必须有小括号,函数体放在大括号内; ?C程序对大、小写字母书写敏感; ?每句的末尾加分号; ?可以一行多句; ?可以一句多行; ?可以在程序的任何位置加注释,注释的方式。 3.C语言程序设计的的基本步骤和调试过程 复习题:/***** 1. 每个C语言程序中有且仅有一个函数,它是程序的入口和出口。 2. 引用C语言标准库函数,一般要用预处理命令将其头文件包含进来。 3. C语言属于() A.高级语言 B. 低级语言 C.中级语言 D. 机器语言 4. C语言规定了若干有特定意义、为C语言专用的单词,称为关键字。 5. C语言的语句以结尾。 6. C语言源程序经过编译以后生成文件,生成的文件名后缀为,经过连接后生成文件,后缀为 7.C语言中不能使用关键字作为标识符。(√)

第二章基本数据类型,运算符与表达式(出题比例20-30%) 关键知识点: 1.常量,变量: a)标识符的命名规则 b)常量,变量的概念:直接常量,符号常量,变量必须先定义后使用 c)变量名和变量值的区别。 2.C语言中的基本数据类型 a)各种数据类型的数据在内存中的存放方式 b)掌握各种数据类型数据的常量使用方法,特别注意字符常量和字符串常量的区别使 用 c)整型,字符型,浮点型变量的定义和引用方法 d)数据的数据类型,数据的取值范围,数据在内存中存放方式三者之间的联系 3.运算符和表达式的使用方法 a)自增、自减运算符 b)赋值运算符 c)算术运算符及表达式 d)逗号运算符及表达式 e)*位运算符及表达式 f)sizeof运算符及表达式 g)*强制数据类型转换符及表达式 4.运算符的优先级和结合性 本章复习题: 课后习题:一、单选题,二、填空题 1. C语言的标识符命名规则中,第一个字符可以为字符‘#’或‘&’ .(×)。 2.下列全部属于合法的用户标识符的是() A.A1 P_0 dS B. float 2la _A C. *a hy kk D. _123 temp main 3. C语言对字母的大小写不敏感。(×) 4. C语言中,符号常量由宏定义命令#define来定义。(√) 5. 在VC 6.0中,数据类型int,char,float和double所占的内存字节数分别是、、和。 6.下列四个选项中,均是合法的整型常量的选项是A A.160 –0XFFFF 011 B。-0XCDF 01A 0XE C.-01 986,012 0688 D。-0X48a 2e5 0x

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

C语言程序设计基础测试题-答案

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2] 下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4] 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6] C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8] 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

《C语言程序设计基础》 试卷A及参考答案

《c语言程序设计基础》试卷 (A卷) 考试时间:90分钟闭卷任课老师: 班级:学号:姓名:成绩: (每小题2分,共30分) 、由C++源文件编译生成的目标文件的缺省扩展名为() A、cpp B、exe C、obj D、lik 2、下列中,不是C++合法的标识符() A、2mn B、m123 C、kk D、a_1 3、C++中,基本数据类型不包括() A、int B、float C、char D、class 4、x和y均为bool量,则x| |y为真的条件是() A、它们均为真 B、其中一个为真 C、它们均为假 D、其中一个为 5、C++中,一个字符型数据在内存中占()字节。 A、4 B、2 C、1 D、8 6、字符串常量”hello”的长度是() A、5 B、6 C、7 D、8 7、以下语句,int i=2,j=2,m,n;m=i++;n=++j;则m,n,i,j的值分别为() A、2,3,2,2 B、2,3,3,3 C、2,2,3,3 D、3,3,2,2 8、假定a为一个整型数组名,则元素a[4]的字节地址为()

A、a+4 B、a+8 C、a+16 D、a+32 9、 x>0 || y==5的相反表达式为()。 A、 x<=0 || y!=5 B、 x<=0 && y!=5 C、 x>0 || y!=5 D、 x>0 && y==5 10、在下面的函数声明中,存在着语法错误的是() A、void BC(int a , int) B、void BD(int , int) C、void BE(int , int=5) D、int BF(int x ; int y) 11、循环体至少被执行一次的语句为()。 A、for循环 B、while循环 C、do循环 D、任一种循环 12、已知一函数中有下列变量定义,其中属于静态变量的是() A、int a=5; B、static double b; C、register char c; D、auto short d; 13、do语句能够改写为()语句。 A、复合 B、if C、switch D、 while 14、要使语句: p=new int[10]; 能够正常执行,p应定义为() A、int p; B、int p[10]; C、int *p; D、int (*p)[10]; 15、编写C++程序一般需经过的几个步骤依次是( )。 A、编译、编辑、连接、调试 B、编辑、编译、连接、调试 C、编译、调试、编辑、连接 D、编辑、调试、编辑、连接 二、填空题(每小题1分,共10分) 1、使用const 语句定义一个标识符常量时,则必须对它同时进行。 2、用于输出表达式值的标准输出流对象是_________,用于从键盘上为变量输入

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

相关主题