XXXX学院《C语言程序设计》期末考试过关复习提纲doc文档格式.docx
《XXXX学院《C语言程序设计》期末考试过关复习提纲doc文档格式.docx》由会员分享,可在线阅读,更多相关《XXXX学院《C语言程序设计》期末考试过关复习提纲doc文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
(单选)
9、不同类型数据间的混合运算。
参见P54的内容和例了。
10、赋值过程中的类型转换。
参见P62的内容和例子。
11、o格式符的使用:
以八进制整数形式输出数据。
x符的使用:
以十六进制整数形式输出数据。
具体内容参见P73的内容和例了。
12、在程序中实现两个变量的值交换的算法。
13、a&
&
b&
c和allbllc的运算过程。
参见P95的具体内容和例子。
14、(m=a>
b)&
(n=c>
d),该式中n的值为多少。
15、判断大写字母的表达式:
(ch>
=,A,&
ch<
=,Z,)
16、判断小写字母的表达式:
=,a,&
=,z,)
15、判断数字字符的表达式:
=,0,&
chv=9)
17、大写字母转换为小写字母:
+32
18、小写字母转换为大写字母:
・32
19、P111习题3:
求逻辑表达式的值。
20、除了可以川数组元索作为函数参数外,还可以川数组名作为函数参数(包括实参和形参)。
如果用数组元素作为实参,则向形参变量传递的是数组元素的值;
如果用数组名作为实参,则向形参变量传递的是数组首元素的地址。
21、三种局部变最的存储位置是不同的:
白动变量存储在动态存储区屮,静态局部变量存储在静态存储区中,寄存器变量存储在CPU的寄存器中。
22、我们将地址形象化地称为“指针”。
23、指针变量的值是地址(即指针)。
24、如果指针变量pl和p2都指向同-澈组,如执行p2-pl,结果是p2-pl的值(两个地址Z差)除以数组元素的长度。
而两个地址不能相加,即p2+pl是无实际意义的。
25、可以引用结构体变量中成员的值,具体的引用方式为:
结构体变量名•成员名。
如:
student1.name=5,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、全局变量:
在函数Z外定义的变虽称为外部变虽,外部变虽是全局变虽。
全局变量可以为文件屮的其他函数所共用,其有效范用为从定义该变最的位置开始到源文件结束。
18、数据的存储类别:
数据的存储类别是指数据在内存中存储的方式,有静态存储和动态存储Z分。
19、自动变量:
对于在函数屮定义的动态局部变量,当该函数被调用时,系统会给它们分配存储空间,在函数调用结束时就H动释放存储空I'
可,这样的局部变量称为白动变量。
白动变量用关键字auto作存储类別的声明。
20、静态局部变量:
対于函数中定义的静态局部变量,当该函数的调用结束后,系统并不释放它们的存储空间,在卜•一次调川该函数时,这些变量屮己经有值了,就是上一次函数调川结束时的值。
静态局部变量用关键字s⑻ic进行声明。
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语言提供了六种关系运算符,分别为<、v二、>、>二、二二、!
=。
其中,前四种运算符的优先级相同且为高优先级,后两种运算符的优先级相同且为低优先级。
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),fo「语句的貝体执行过程为:
(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的执行过程中,又调用了另一个函数CoKlJ函数的递归调用其实是一种特殊的嵌套调用,即在函数的嵌套调用的过程中,出现了函数A直接或间接地调用其本身(即函数A)。
14、静态存储方式和动态存储方式的区别?
静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式,而动态存储方式则是在程序运行期间根据需耍进行动态的分配存储空间的方式。
在静态存储方式小,数据存储在静态存储区中,在整个程序的执行过程中均冇效;
而在动态存储方式中,数据存储在动态存储区中,只在整个程序的执行过程中的某一个时间段有效。
15、C语言中冇哪些存储类别?
答:
C语言中有四种不同的存储类别,分别为自动的(auto).静态的(static).寄存器的(register)s外部的(extern)<
>
16、什么是共用体类型?
所谓共用体类型就是将多个变虽的内存空间组合在一起,通过使用覆盖技术,使后一个数据的存储覆盖前一个数据的存储,从而实现多个变最共享同一段内存空间,这种逻辑结构类型称为共用体类型。
17、什么是枚举类型?
所谓枚举类型就是指把可能的值一一列举出來,变量的值只限于列举出來的值的范围内。
18、什么是文件?
所谓文件一般指存储在外部存储介质上的数据的集合。
19、文件关闭的含义是什么?
“关闭”文件就是撤消文件信息区和文件缓冲区,使文件指针变量不再指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原來与其联系的文件进行读写操作,除非再次打开,使该指针变量重新指向该文件。
五、程序填空题
1、求多项式1-1/2+1/3-1/4+……+1/99-1/100的值。
程序:
#include<
stdio.h>
intmain()
{
intsign=l,deno=2;
doublesum=1.0,term;
while(deno<
=10())
sign=-sign;
term=1.0*sign/deno;
sum=sum+term;
deno=deno+l;
}
p「intf(“%f\n"
sum);
return0;
2、用数组处理求Fibonacci数列问题。
P146的例6.2
intf[20]={l,l};
inti;
for(i=2;
i<
20;
i++)
f[i]=f[i-l]+f[i-2];
for(i=0;
if(i%5==0)printf(u\nM);
printf(M%12dH,f[i]);
printf(n\nM);
3、冇10个数,要求将它们按从小到大的顺序进行排序。
P147的例6.3
#includc<
intmain()
inta[10];
int
printf(Hinput10numbers:
\nM);
10;
scanf(”%d”,&
a[i]);
printf(”\n”);
for(j=0;
j<
9;
j卄)
9-j;
if(a[i]>
a[i+l])
{t=a[i];
a[i]=a[i+1];
a[i+l]=t;
printf("
thesortednumbersAn"
);
ivl0;
printf(”%d”,a[i]);
4、求矩阵的转秩。
即将一个矩阵的行和列互换。
P152的例6.4
inta⑵⑶二{{1,2,3},{4,5,6}};
intb[3J[2],i,j;
printf(Harraya:
\n"
=l;
for(j=0j<
=2;
j++)
printf(”%5d”,a[i]|j]);
b[j][i]=a[i][j];
}printf(n\nn);
printf(Harrayb:
\nH);
printf(”%5d”,b[i]|j]);
*);
rctum0;
5、有一个3X4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
P153的例6.5
#inckidc<
inta⑶[4]二{{1,2,3,4},{9,8,7,6},{・1(),1(),・5,2}};
inti,j,max,row,colum;
max=a[0][0];
row=0;
colum=0;
for(j=()j<
=3;
if(a[i][j]>
max)
max=a[i][j];
row=i;
colum=j;
printf(nmax=%d\nrow=%d\ncolum=%d\n"
max,row,colum);
6、有一个3X4的矩阵,耍求编程序求出其中值最小的那个元素的值,以及其所在的行号和列号。
inta[3][4]={{l,2,3,4},{9,8,7,6},{・10,10,-5,2}};
inti,j,min,row,colum,m,n;
min=a[0][0];
row=0;
m=3;
n=4;
m;
for(j=OJ<
n;
if(a[i][j]vmin)
min=a[i][j];
rovv=i;
printf(nmin=%d\nrow=%d\ncolum=%d\nl\min,row,colum);
7、有一个3X4的矩阵,要求编程序求出其各个元素的平均值。
intij,sum,m,n;
doubleavg=0.0;
sum=0;
for(i=();
ivm;
sum=sum+a[i][j];
avg=1.0*sum/(m*n);
printf(Msum=%d\nM,sum);
printf(,,avg=%f\n"
avg);
8、输入一行字符,统计其中有多少个单词,单词Z间用空格分隔开。
charstring[81];
inti,num=0,word=0;
charc;
gcts(string);
(c=string[iJ)!
=,\0,;
if(c=='
'
)word=0;
elseif(word==0)
word=1;
num++;
printf(HThereare%dwordsinthisline.\nn,num);
或者
inti,num=0;
gets(string);
(c=string[i])!
=,\(),;
i++)if((c!
='
'
i==0)ll(c!
string[i-l]=='
*))num++;
printf(HThereare%dwordsinthisline.\nH,num);
9、用递归方法求n!
。
intfac(intn);
intn,y;
inputanintegernumber:
"
scanf(”%d“,&
n);
y=fac(n);
printf(,,%d!
=%d\n'
,n,y);
intfac(intn)
intf;
if(n<
0)
printf(Hn<
0,dataerror!
elseif(n==0lln==l)
f=l;
else
f=fac(n-l)*n;
returnf;
10、有一个一维数组,内放10个学生的成绩,写一个函数,当主函数调用该函数后,能求出平均分、最高分和最低分。
P201的例7.14。
floatMax=0,Min=0;
floataverage(floatarray[]Jntn);
floatave,score]10];
inti;
printfC'
Plcascenter10scores:
scanf(n%f'
\&
score[ij);
ave=average(scoreJ0);
printf(,,max=%6.2f\nmin=%6.2f\naverage=%6.2f\n,,,Max,Min,ave);
floataverage(floatarray[]3ntn)
floataver,sum=array10];
Max=Min=aiTay[0J;
for(i=l;
if(array[i]>
Max)
Max=array[iJ;
elseif(array[i]<
Min)Min=array[i];
sum=sum+array[iJ;
aver=sum/n;
returnaver;
六、编程题
1、输入两个正整数m和n,求其最大公约数和最小公倍数。
intm,n,max,minj,mO,nO;
printf(M请输入两个正整数m和n:
”);
scanf(”%d,%d”,&
m,&
mO=m;
n()=n;
if(m<
n)
{inttemp;
temp=m;
m=n;
n=temp;
do
r=m%n;
n=r;
}while(r!
=0);
max二m;
min=mO*n0/max;
printf(”最大公约数为:
%d\n"
max);
printf(H最小公倍数为:
min);
2、输入一行字符,分别统计出其屮英文字母、空格、数字和其他字符的个数。
charstr[20];
intalp=0,space=0,dig=05other=0;
printfC*请输入一行字符:
”);
gets(str);
i=0;
while(str[i]!
\O'
)
if((str[i]>
=A'
str[i]<
=,Z,)ll(str[i]>
str[i]v='
z'
))
alp++;
elseif(str[i]=='
space++;
elseif(str[i]>
0'
str[ij<
9,)
dig卄;
othcr++;