XXXX学院《C语言程序设计》期末考试过关复习提纲.docx

上传人:b****3 文档编号:5298987 上传时间:2022-12-15 格式:DOCX 页数:25 大小:25.24KB
下载 相关 举报
XXXX学院《C语言程序设计》期末考试过关复习提纲.docx_第1页
第1页 / 共25页
XXXX学院《C语言程序设计》期末考试过关复习提纲.docx_第2页
第2页 / 共25页
XXXX学院《C语言程序设计》期末考试过关复习提纲.docx_第3页
第3页 / 共25页
XXXX学院《C语言程序设计》期末考试过关复习提纲.docx_第4页
第4页 / 共25页
XXXX学院《C语言程序设计》期末考试过关复习提纲.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

XXXX学院《C语言程序设计》期末考试过关复习提纲.docx

《XXXX学院《C语言程序设计》期末考试过关复习提纲.docx》由会员分享,可在线阅读,更多相关《XXXX学院《C语言程序设计》期末考试过关复习提纲.docx(25页珍藏版)》请在冰豆网上搜索。

XXXX学院《C语言程序设计》期末考试过关复习提纲.docx

XXXX学院《C语言程序设计》期末考试过关复习提纲

《C语言程序设计》复习提纲

一、单项选择题和填空题的知识点

1、函数是C程序的主要组成部分,函数是C程序的基本单位。

一个C语言程序是由一个或多个函数组成的,其中必须包含一个main函数(且只能有一个main函数)。

2、程序总是从main函数开始执行的。

C语言本身不提供输入输出语句。

3、识别不同的常量。

(1)整型常量,如100,0,-12

(2)实型常量,有两种表示形式。

第一,十进制小数形式,如12.45、-56.79。

第二,指数形式,即科学计数法。

如12.34e-4,其中,字母e前面的部分称为尾数,可以用实型数据表示,后面的部分称为指数,只能用整型数据表示,而字母e既可以是小写的e,也可以是大写的E。

(3)字符常量,有两种形式:

普通字符和转义字符。

普通字符如’a’,注意字符常量中只能包含一个字符。

转义字符是以字符\开头,如’\n’,注意它表示的是一个字符。

(4)字符串常量,如”Nanjing”。

(5)符号常量,是用#define指令定义的。

如#definePI3.1416。

一旦定义以后,凡是使用PI的地方,实际上使用的3.1416。

4、合法标识符和非法标识符的识别。

5、

数据类型

占用的内存字节数

int(基本整型)

4

unsignedint(无符号基本整型)

4

short(短整型)

2

unsignedshort(无符号短整型)

2

long(长整型)

4

unsignedlong(无符号长整型)

4

signedchar(有符号字符型)

1

unsignedchar(无符号字符型)

1

float

4

double

8

longdouble

16

6、%运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。

如8%3的结果为2。

7、除%以外的运算符的操作数都可以是任何算术类型。

8、自增、自减运算符的使用。

参见P53的内容和例子。

(单选)

9、不同类型数据间的混合运算。

参见P54的内容和例子。

10、赋值过程中的类型转换。

参见P62的内容和例子。

(单选)

11、o格式符的使用:

以八进制整数形式输出数据。

x符的使用:

以十六进制整数形式输出数据。

具体内容参见P73的内容和例子。

12、在程序中实现两个变量的值交换的算法。

13、a&&b&&c和a||b||c的运算过程。

参见P95的具体内容和例子。

14、(m=a>b)&&(n=c>d),该式中n的值为多少。

参见P95的具体内容和例子。

15、判断大写字母的表达式:

(ch>=’A’&&ch<=’Z’)

16、判断小写字母的表达式:

(ch>=’a’&&ch<=’z’)

15、判断数字字符的表达式:

(ch>=’0’&&ch<=’9’)

17、大写字母转换为小写字母:

+32

18、小写字母转换为大写字母:

-32

19、P111习题3:

求逻辑表达式的值。

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

如果用数组元素作为实参,则向形参变量传递的是数组元素的值;如果用数组名作为实参,则向形参变量传递的是数组首元素的地址。

21、三种局部变量的存储位置是不同的:

自动变量存储在动态存储区中,静态局部变量存储在静态存储区中,寄存器变量存储在CPU的寄存器中。

22、我们将地址形象化地称为“指针”。

23、指针变量的值是地址(即指针)。

24、如果指针变量p1和p2都指向同一数组,如执行p2-p1,结果是p2-p1的值(两个地址之差)除以数组元素的长度。

而两个地址不能相加,即p2+p1是无实际意义的。

25、可以引用结构体变量中成员的值,具体的引用方式为:

结构体变量名.成员名。

如:

student1.name=”wang”;

26、结构体变量所占内存长度是各成员所占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。

27、根据数据的组织形式,数据文件可分为ASCII文件和二进制文件。

28、用fopen函数打开数据文件。

29、使用文件的方式:

见P335的表10.1。

三、名词解释

1、程序:

程序就是一组计算机能识别和执行的指令,每一条指令使计算机执行特定的操作。

2、高级语言:

高级语言是接近于人类习惯使用的自然语言和数学语言,又能够被计算机识别和运行的计算机语言。

高级语言不依赖于具体的机器,但其不能被计算机直接识别,而必须已经“翻译”。

3、常量:

常量是指在程序的运行过程中其值不能被改变的量。

4、标识符:

在计算机高级语言中,用来对变量、符号常量、函数、数组、类型等命名的有效字符序列统称为标识符。

5、C算术表达式:

用算术运算符和括号将运算对象(即操作数)连接起来,符合C语言语法规则的式子称为C算术表达式。

6、输出:

输出是指从计算机向输出设备输出数据。

7、输入:

输入是指从输入设备向计算机输入数据。

8、关系运算:

所谓关系运算就是比较运算,将两个数值进行比较,判断其比较的结果是否符合给定的条件。

9、关系表达式:

用关系运算符将两个数值或数值表达式连接起来的式子称为关系表达式。

10、逻辑表达式:

用逻辑运算符将关系表达式或其他逻辑表达式连接起来的式子称为逻辑表达式。

11、数组:

数组是一组有序数据的集合。

在数组中,各个数据的排列是有一定规律的,下标代表了数据在数组中的序号。

12、函数:

函数就是功能,每一个函数用来实现一个特定的功能,函数的名字应反映其代表的功能。

13、形式参数:

在定义函数时函数名后面括号中的变量称为形式参数,也称为虚拟参数。

14、实际参数:

在主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数,简称实参。

实际参数可以是常量、变量或表达式。

15、值传递:

值传递是单向传递,数据只能由实参传给形参,而不能由形参传给实参。

16、局部变量:

在一个函数内部定义的变量只在该函数范围内有效,在复合语句中定义的变量也只在该复合语句范围内有效,这些只能在局部范围内有效,超出其所在范围就无效的变量称为局部变量。

17、全局变量:

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

全局变量可以为文件中的其他函数所共用,其有效范围为从定义该变量的位置开始到源文件结束。

18、数据的存储类别:

数据的存储类别是指数据在内存中存储的方式,有静态存储和动态存储之分。

19、自动变量:

对于在函数中定义的动态局部变量,当该函数被调用时,系统会给它们分配存储空间,在函数调用结束时就自动释放存储空间,这样的局部变量称为自动变量。

自动变量用关键字auto作存储类别的声明。

20、静态局部变量:

对于函数中定义的静态局部变量,当该函数的调用结束后,系统并不释放它们的存储空间,在下一次调用该函数时,这些变量中已经有值了,就是上一次函数调用结束时的值。

静态局部变量用关键字static进行声明。

21、寄存器变量:

为了提高代码的执行效率,C语言允许将局部变量的值存放在CPU中的寄存器中,需要使用时直接从寄存器中取出,而不必再到内存中存取。

这种变量称为寄存器变量。

寄存器变量用关键字register进行声明。

22、变量的作用域:

如果一个变量在某个文件或函数范围内是有效的,就称该范围为该变量的作用域。

23、指针:

一个变量的地址称为该变量的“指针”。

24、指针变量:

如果一个变量专门用于存放另一个变量的地址(即指针),则该变量就是“指针变量”。

24、结构体类型:

在C语言中允许用户自己建立由若干个不同类型数据组成的组合型的数据结构称为结构体。

用户使用结构体自定义的数据类型称为结构体类型。

25、数据流:

输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象地称为流。

四、简答题

1、高级语言经历了哪些发展阶段?

答:

高级语言经历了非结构化语言、结构化语言和面向对象语言三个不同的发展阶段。

非结构化语言没有严格的规范要求,程序中可以随意的跳转。

在结构化语言中,程序必须由顺序结构、分支结构和循环结构的基本结构构成,在程序中不能随意的跳转。

面向对象语言支持面向对象程序设计方法,适合于处理规模较大的复杂问题。

2、一个函数包括哪几个部分?

试分别简述之。

答:

一个函数包括函数首部和函数体两个部分。

函数首部包括函数名、函数类型、函数属性、函数参数名和参数类型。

函数体包括声明部分和执行部分,其中声明部分包括函数内部局部变量的声明和所调用的函数的声明,执行部分为若干个语句组成的语句组。

3、简述标识符的组成规则。

答:

C语言规定标识符只能由字母、数字和下划线三类字符组成,且第一个字符必须是字母或下划线。

4、C语言中基本数据类型有哪些?

答:

C语言中的基本数据类型包括整型类型和实型类型两大类。

其中,整型类型又分为基本整型(int)、短整型(short)、长整型(long)和字符型(char);实型类型又分为单精度实型(float)和双精度实型(double)

5、什么是顺序结构?

答:

在顺序结构中,程序中的各个语句是按照自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断。

6、简述关系运算符及其优先次序。

答:

C语言提供了六种关系运算符,分别为<、<=、>、>=、==、!

=。

其中,前四种运算符的优先级相同且为高优先级,后两种运算符的优先级相同且为低优先级。

7、C语言中逻辑值的表示方法。

答:

C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以数值0代表“假”;但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。

8、什么是逻辑运算符的短路问题?

答:

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

9、while循环和do-while循环的区别?

答:

while循环是先判断循环条件,后执行循环体;而do-while循环是先执行循环体,后判断循环条件。

因此,while循环的循环体有可能不执行,即while循环的循环体最少被执行0次,而do-while循环的循环体至少被执行一次。

10、for语句的执行过程?

答:

for语句的一般形式为:

for(表达式1;表达式2;表达式3),for语句的具体执行过程为:

(1)求解表达式1;

(2)求解表达式2,如果表达式2的值为真,则执行循环体;如果为假,则结束循环的执行,转(5)执行。

(3)执行循环体;

(4)求解表达式3,转

(2)继续执行。

(5)循环结束,执行for语句的后一个语句。

11、break语句和continue语句的区别?

答:

continue语句是结束本次循环的执行,直接进入下一次循环的执行,而不是终止整个循环的执行。

而break语句是结束整个循环的执行,不在判断执行循环的条件是否成立,即直接从循环体内跳转到循环体外。

12、定义一个函数应包括哪些内容?

答:

定义函数应包括以下内容:

(1)指定函数的名字,以便通过该函数名调用该函数。

(2)指定函数的类型,即函数返回值的类型。

(3)指定函数的参数名和类型,以便在调用函数时通过它们传递数据。

对无参函数不需要这项。

(4)指定函数应当完成的操作。

13、函数嵌套调用和递归调用的区别?

答:

函数的嵌套调用是指一个函数A在其执行过程,调用了另一个函数B,依次类推,在函数B的执行过程中,又调用了另一个函数C。

而函数的递归调用其实是一种特殊的嵌套调用,即在函数的嵌套调用的过程中,出现了函数A直接或间接地调用其本身(即函数A)。

14、静态存储方式和动态存储方式的区别?

答:

静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式,而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。

在静态存储方式中,数据存储在静态存储区中,在整个程序的执行过程中均有效;而在动态存储方式中,数据存储在动态存储区中,只在整个程序的执行过程中的某一个时间段有效。

15、C语言中有哪些存储类别?

答:

C语言中有四种不同的存储类别,分别为自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。

16、什么是共用体类型?

答:

所谓共用体类型就是将多个变量的内存空间组合在一起,通过使用覆盖技术,使后一个数据的存储覆盖前一个数据的存储,从而实现多个变量共享同一段内存空间,这种逻辑结构类型称为共用体类型。

17、什么是枚举类型?

答:

所谓枚举类型就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。

18、什么是文件?

答:

所谓文件一般指存储在外部存储介质上的数据的集合。

19、文件关闭的含义是什么?

答:

“关闭”文件就是撤消文件信息区和文件缓冲区,使文件指针变量不再指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其联系的文件进行读写操作,除非再次打开,使该指针变量重新指向该文件。

五、程序填空题

1、求多项式1-1/2+1/3-1/4+……+1/99-1/100的值。

程序:

#include

intmain()

{

intsign=1,deno=2;

doublesum=1.0,term;

while(deno<=100)

{

sign=-sign;

term=1.0*sign/deno;

sum=sum+term;

deno=deno+1;

}

printf(“%f\n”,sum);

return0;

}

2、用数组处理求Fibonacci数列问题。

P146的例6.2

#include

intmain()

{

intf[20]={1,1};

inti;

for(i=2;i<20;i++)

f[i]=f[i-1]+f[i-2];

for(i=0;i<20;i++)

{

if(i%5==0)printf("\n");

printf("%12d",f[i]);

}

printf("\n");

return0;

}

3、有10个数,要求将它们按从小到大的顺序进行排序。

P147的例6.3

#include

intmain()

{

inta[10];

inti,j,t;

printf("input10numbers:

\n");

for(i=0;i<10;i++)

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

printf("\n");

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf("thesortednumbers:

\n");

for(i=0;i<10;i++)

{

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

}

printf("\n");

return0;

}

4、求矩阵的转秩。

即将一个矩阵的行和列互换。

P152的例6.4

#include

intmain()

{

inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("arraya:

\n");

for(i=0;i<=1;i++)

{

for(j=0;j<=2;j++)

{

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

b[j][i]=a[i][j];

}

printf("\n");

}

printf("arrayb:

\n");

for(i=0;i<=2;i++)

{

for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");

}

return0;

}

5、有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

P153的例6.5

#include

intmain()

{

inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

inti,j,max,row,colum;

max=a[0][0];row=0;colum=0;

for(i=0;i<=2;i++)

for(j=0;j<=3;j++)

if(a[i][j]>max)

{

max=a[i][j];

row=i;

colum=j;

}

printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);

return0;

}

6、有一个3×4的矩阵,要求编程序求出其中值最小的那个元素的值,以及其所在的行号和列号。

#include

intmain()

{

inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

inti,j,min,row,colum,m,n;

min=a[0][0];row=0;colum=0;

m=3;n=4;

for(i=0;i

for(j=0;j

if(a[i][j]

{

min=a[i][j];

row=i;

colum=j;

}

printf("min=%d\nrow=%d\ncolum=%d\n",min,row,colum);

return0;

}

7、有一个3×4的矩阵,要求编程序求出其各个元素的平均值。

#include

intmain()

{

inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

inti,j,sum,m,n;

doubleavg=0.0;

sum=0;

m=3;n=4;

for(i=0;i

for(j=0;j

sum=sum+a[i][j];

avg=1.0*sum/(m*n);

printf("sum=%d\n",sum);

printf("avg=%f\n",avg);

return0;

}

8、输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

#include

intmain()

{

charstring[81];

inti,num=0,word=0;

charc;

gets(string);

for(i=0;(c=string[i])!

='\0';i++)

if(c=='')word=0;

elseif(word==0)

{

word=1;

num++;

}

printf("Thereare%dwordsinthisline.\n",num);

return0;

}

或者

#include

intmain()

{

charstring[81];

inti,num=0;

charc;

gets(string);

for(i=0;(c=string[i])!

='\0';i++)

if((c!

=''&&i==0)||(c!

=''&&string[i-1]==''))num++;

printf("Thereare%dwordsinthisline.\n",num);

return0;

}

9、用递归方法求n!

#include

intmain()

{

intfac(intn);

intn,y;

printf("inputanintegernumber:

");

scanf("%d",&n);

y=fac(n);

printf("%d!

=%d\n",n,y);

return0;

}

intfac(intn)

{

intf;

if(n<0)

printf("n<0,dataerror!

");

elseif(n==0||n==1)

f=1;

else

f=fac(n-1)*n;

returnf;

}

10、有一个一维数组,内放10个学生的成绩,写一个函数,当主函数调用该函数后,能求出平均分、最高分和最低分。

P201的例7.14。

#include

floatMax=0,Min=0;

intmain()

{

floataverage(floatarray[],intn);

floatave,score[10];

inti;

printf("Pleaseenter10scores:

");

for(i=0;i<10;i++)

scanf("%f",&score[i]);

ave=average(score,10);

printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);

return0;

}

floataverage(floatarray[],intn)

{

inti;

floataver,sum=array[0];

Max=Min=array[0];

for(i=1;i

{

if(array[i]>Max)

Max=array[i];

elseif(array[i]

Min=array[i];

sum=sum+array[i];

}

aver=sum/n;

returnaver;

}

六、编程题

1、输入两个正整数m和n,求其最大公约数和最小公倍数。

#include

intmain()

{

intm,n,max,min,r,m0,n0;

printf("请输入两个正整数m和n:

");

scanf("%d,%d",&m,&n);

m0=m;n0=n;

if(m

{inttemp;temp=m;m=n;n=temp;}

do

{

r=m%n;

m=n;

n=r;

}while(r!

=0);

max=m;

min=m0*n0/max;

printf("最大公约数为:

%d\n",max);

printf("最小公倍数为:

%d\n",min);

return0;

}

2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include

intmain()

{

charstr[20];

intalp=0,space=0,dig=0,other=0;

inti;

printf("请输入一行字符:

");

gets(str);

i=0;

while(str[i]!

='\0')

{

if((str[i]>='A'&&

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1