收藏 分销(赏)

2024年中央电大春季C语言程序设计期末复习指导本.doc

上传人:精**** 文档编号:8191259 上传时间:2025-02-07 格式:DOC 页数:17 大小:84.04KB 下载积分:8 金币
下载 相关 举报
2024年中央电大春季C语言程序设计期末复习指导本.doc_第1页
第1页 / 共17页
2024年中央电大春季C语言程序设计期末复习指导本.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
中央广播电视大学计算机科学与技术专业 C语言程序设计A课程考核阐明() 一、考核阐明 《C语言程序设计》课程是全国电大系统计算机科学与技术专业(本科)的一门基础必修课程。本课程是学习数据结构、操作系统、计算机网络、数据库、软件工程等课程的先修课,在整个专业教学体系中占有非常重要的作用。 本课程重要简介C语言的基本语法规则和程序设计措施,包括C语言程序结构和上机运行程序的基本过程,各种数据类型的常量和变量的定义与表示,各种运算符和体现式的表示与应用,各种流程控制语句的定义与作用,各种常用函数的定义格式与调用措施,用户函数的定义与调用,数组、指针、结构、文献等数据类型的定义与使用,结构化和模块化的程序设计措施等内容。 学习《C语言程序设计》需要理论与实践相结合,只重视课本知识是空洞的,只重视上机实践是迷茫的,必须二者结合循序渐进,通过课本知识指引实践,通过实践加深了解和吸取知识,以及利用知识处理问题的能力。 现将该课程考核的有关问题阐明如下: 1. 考查对象 全国电大系统开放教育计算机科学与技术专业(本科)的学生。 2.教学媒体 文字主教材《C语言程序设计》 任爱华主编 中央广播电视大学出版社出版。 录象教材 20讲 任爱华等主讲 中央广播电视大学音像出版社出版,时间待定。 IP网络课件 16讲 徐孝凯主讲 电大在线的该课程网站点播,9月。 复习资料 《C语言程序设计期末复习指引》中央电大教育杂志社出版发行。 平时考核 《C语言程序设计形成性考核册》 中央电大教育杂志社出版发行。 网上辅导 在电大在线《C语言程序设计》课程教学网页上刊登。 3. 命题依据 本考核阐明以中央电大计算机科学与技术专业《C语言程序设计》课程的教学大纲为依据编制。本考核阐明是考试命题的依据。 4. 考核要求 本课程是以掌握C语言知识并处理实际程序设计问题为目标。重要考核学生对C语言知识的掌握程度和对处理一般问题的程序设计能力。对C语言知识要在了解和应用的基础上加强记忆和掌握,不能死记硬背。 本课程教学内容包括了解、了解和应用三个层次,并且逐渐递进,详细含义如下: (1) 了解层次:记忆C语言中的基本概念和语法规则; (2) 了解层次:掌握C语言中的每个语法成份和语句的定义格式、含义及作用; (3) 应用层次:利用C语言,结合实际处理问题的需要,能够分析和编写程序。 5. 命题标准 (1) 在教学大纲和考核阐明所要求的知识范围内命题。在教学知识范围之内,需要灵活利用才能够处理问题的试题不属于超纲。 (2) 试题的取材要求覆盖面广、辨别度高。 (3) 试题兼顾各个能力层次,了解和了解约占40%,应用约占60%。 (4) 试题的难易程度和题量适当,按难易程度分为四个层次:轻易占20%,较易占40%,较难占30%,难占10%。题量安排以平时能够独立完成作业者,能在要求的考试时间内做完并有一定期间检查为标准。 6. 试题题型 选择:依照题意,从四种可选择的答案中选择适宜的一个答案。 填空:依照题意,在画有横线或空白括号内填写适宜内容。 写出程序运行成果:依照所给的C语言程序,写出运行后的输出成果。 指出程序或函数功效:依照所给的C语言程序或函数,指出运行程序或进行函数调用时所能实现的功效。 编写程序或函数:依照所给出的题目要求,编写出对应的程序或函数模块。 7. 考核形式: 本课程考核采取终止性考试与形成性考核相结合的方式。形成性考核分为两种,一个视形成性考核册作业完成情况和所要求的上机试验完成情况而定,占总成绩的20%;另一个为省级电大统一命题和组织的期末上机考核,占总成绩的10%,要求完成一个带有多个程序文献的程序项目标编写(或修改)并上机运行通过,上机考核时限为60分钟。形成性考核成绩由省级电大考核和确认。终止性考试采取书面和闭卷方式,考试成绩占总成绩的70%,由中央电大统一命题和考试时间,答卷时限为90分钟。总成绩满分为100分,合成成绩达成60及以上分数者可取得该课程要求的4学分,否则不取得该课程学分。 第二部分 考核内容及要求 第一章 C语言概述 考核内容(知识点): 1.程序、程序文献和函数的概念及其相互之间的关系。 2.函数的定义格式和作用,主函数的特殊地位和作用。 3.C语言简单语句和复合语句的语法格式。 4.#include预处理命令的格式与作用。 5.头文献的文献名格式、在程序中的使用措施和作用。 6.程序中两种注释标识的写法和作用。 7.标准输出函数printf()和标准输入函数scanf()的定义格式和详细应用。 8.C语言程序文献名、编译后生成的目标文献名和连接后生成的可执行文献名的命名规则,以及上机输入、编辑、编译、连接和运行程序的过程。 考核要求: 要求了解和了解以上内容。 第二章 数据类型和体现式 重点考核的内容(知识点): 1.C语言中的数据类型的分类。 2.各种整数类型的核心字表示,存储空间的大小和值域范围。 3.整型变量的定义和初始化,十进制整型常量的表示。 4.字符类型的核心字表示,存储空间的大小和值域范围;字符型常量的表示,回车、换行、单引号、双引号、反斜线、空字符等特殊字符的表示。 5.字符型变量的定义和初始化,字符型与整型的关系。 6.枚举的概念,枚举类型的定义,枚举变量的定义和初始化,枚举常量与整型常量的对应关系。 7.各种实数类型的核心字表示,存储空间的大小和有效位数。 8.单精度和双精度实数的定点表示和浮点(科学)表示,实型变量的定义和初始化。 9.加、减、乘、除、取余、赋值、增1、减1、取数据存储长度等算术运算符的表示、含义、运算对象个数和运算优先级。 10.关系运算符的定义和关系体现式的计算,逻辑运算符的定义与逻辑体现式的计算,依照任意体现式的值判断其逻辑值的措施。 一般考核的内容(知识点): 1.整型常量的八进制和十六进制表示。 2.符号常量的两种定义措施,它们之间的区分。 3.位操作符、复合赋值操作符的含义与使用。 4.求关系或逻辑体现式的相反体现式的措施。 考核要求: 了解和掌握以上重点考核的内容,了解和了解以上一般考核内容。 第三章 流程控制语句 考核内容(知识点): 1.C语言程序中的次序、分支和循环这三种基本结构,每种结构的执行过程。 2.简单if语句、带else子句的if语句、多分支结构的if语句的定义格式、执行过程和在处理问题中的详细应用。 3.switch语句的定义格式、执行过程和在处理问题中的详细应用。 4.if语句与switch语句之间的功效比较,if语句与switch语句之间的转换。 5.for循环、while循环和do-while循环的定义格式、执行过程和在处理问题中的详细应用。 6.三种循环结构不一样特点。 7.Break语句在switch语句和各种循环语句中的作用,continue语句在各种循环语句中的作用。 8.goto语句和return语句的定义格式和功效。 考核要求: 了解和掌握本章的所有内容,并能够灵活应用。 第四章 数组和字符串 考核内容(知识点): 1.一维数组的含义、定义格式及初始化格式。 2.数组长度、数组元素、元素下标的含义,访问数组元素的语法格式,下标运算符的操作对象和操作成果。 3.数组元素的下标变化范围,数组元素所占存储空间大小和整个数组所占存储空间大小的计算,各元素对应存储空间的排列情况,每个元素的存储地址的计算。 4.利用一维数组存储数据,按元素值的升序或降序排列数据,按给定条件或功效对数组元素依次进行访问和处理。 5.二维数组的含义、定义格式及初始化格式。 6.二维数组的行数和列数的概念,数组长度(即所含元素个数)的计算。 7.访问二维数组元素的语法格式,每个下标运算符的操作对象和操作成果。 8.二维数组中的所有元素在存储空间中的排列情况,每个元素的存储地址的计算。 9.利用二维数组存储矩阵数据,按给定条件或功效对数组元素依次进行访问和处理。 10.字符串常量的定义格式,字符串的存储格式,字符串长度的概念。 11.一维字符数组、二维字符数组与字符串之间的关系,一维字符数组与二维字符数组的初始化。 12.strlen、strcpy、strcmp、strcat等字符串函数的申明格式及功效。 13.利用typedef语句定义数据类型的措施。 考核要求: 了解和了解一维数组、二维数组和字符串的概念的使用措施,会利用它们存储和处理数据。 第五章 指针 考核内容(知识点): 1.指针的概念,指针变量的定义和初始化。 2.指针赋值(=)、取对象(变量)地址(&)、访问指针所指对象(*)、指针比较(==、!=、>、<等)、指针算术运算(+、-、+=等)、指针增1或减1(++、--)等各种运算的含义和使用。 3.数组名的指针含义。 4.一维数组元素的下标访问方式与指针访问方式及其之间的转换。 5.二维数组元素的下标访问方式与指针访问方式及其之间的转换。 6.动态存储分派函数malloc()和calloc()以及动态存储空间释放函数free()的定义格式与调用措施。 考核要求: 了解指针的概念,掌握利用指针访问简单数据和数组元素的措施,掌握进行动态存储分派与释放的措施。 第六章 函数 考核内容(知识点): 1.函数的定义格式。 2.函数调用体现式的语法格式及执行过程。 3.函数定义中形参变量的作用及实虚参数结合的过程。 5.函数申明(原型)语句的定义格式及作用。 6.形参为一维数组或二维数组时的阐明格式,调用时数组参数传递的过程。 7.变量的作用域的概念和含义;系统对全局变量、static变量、局部变量的建立和初始化过程。 8.函数的递归调用的概念和递归函数的详细执行过程。 9.头文献在程序文献中的位置和作用。 考核要求: 掌握用户自定义函数的定义、申明与调用措施,掌握函数调用中一般参数、指针参数、数组参数的传递,以及函数体执行和返回的过程。 第七章 结构与联合 考核内容(知识点): 1.结构的概念,结构类型的定义格式,结构类型的申明(即不完整定义)格式。 2.结构对象(变量)的各种定义格式和初始化,结构大小的计算,结构对象和结构数组对象的动态分派和初始化。 3.结构赋值,结构组员的直接访问和间接访问,利用结构数组保存和处理数据。 4.结构和结构指针作为函数参数和返回值类型的详细应用。 5.链表的概念,链表中结点的结构,链表的建立和遍历的措施和算法。 6.联合的概念,联合类型的定义格式,联合对象的定义和初始化,联合的存储结构及大小的计算,匿名联合的特点。 考核要求: 了解和掌握结构和联合类型的特点以及数据组员的访问措施,了解和了解链表中结点的结构和建立与访问链表的措施,以及结构与联合嵌套定义的概念。 第八章 文献 考核内容(知识点): 1. 数据文献的概念。 2. 文献的打开和关闭措施。 3. 文献的各种访问方式的表示。 4. 对字符文献进行的输入和输出数据的措施。 5. 对字节文献进行的输入和输出数据的措施。 考核要求: 了解和了解文献的有关概念和访问方式,会利用字符或字节文献保存和处理数据。 第三部分 模拟考核试题及解答 一、选择题 1. 由C语言源程序文献编译而成的目标文献的缺省扩展名为( C )。 A. cpp B. exe C. obj D. C 2. C语言程序的基本模块为( D )。 A. 体现式 B. 标识符 C. 语句 D. 函数 3. 设x和y均为逻辑值,则x||y为假的条件是( C )。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 4. x>0 || y==5的相反体现式为( B )。 A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5 5. 枚举类型中的每个枚举常量的值都是一个( A )。 A. 整数 B. 浮点数 C. 字符 D. 逻辑值 6. 循环体最少被执行一次的语句为( C )循环语句。 A.for B.while C.do-while D.任一个 7. 循环语句“for(int i=0; i<n; i++) S;”中循环体S被执行的次数为( C )。 A. 1 B. n-1 C. n D. n+1 8. 在下面的while循环语句中,其循环体被执行的次数为( C )。 int i=0,s=0; while(s<20) {i++; s+=i;} A. 4 B. 5 C. 6 D. 7 9.在下面的字符数组定义中,( D )语句有语法错误。 A.char a[20]=“abcdefg”; B.char a[]=“x+y=55.”; C. char a[15]={‘1’, ‘2’}; D. char a[10]=’5’; 10. 若定义了函数 double *function(), 则返回值类型为( B )。 A. 实数型 B. 实数指针型 C. 函数指针型 D. 数组型 11. 若用数组名作为函数调用的实参,传递给形参的是( A )。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组中所有元素的值 D. 数组元素的个数 12.预处理命令在程序中都是以( B )符号开头的。   A.* B.# C.& D.@ 13. 假定a为一个整型数组名,则元素a[4]的地址比该数组的首地址大( C )个字节。 A. 4 B. 8 C. 16 D. 32 14. 下列给字符数组赋初值时,正确的是( A )。 A. char s1[]="abcdef"; B. char s2[4]="abcd"; C. char s3[2][3]={"abc","xyz"}; D. char s4[4][]={'a','x','s','t'}; 15. 变量s已定义为"char *s="Heoll world!";",要使变量p指向s所指向的同一个字符串,则应定义为( A )。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 16. 要使p指向二维整型数组a[10][20],p应定义为( D )。 A. int *p=a; B. int **p=a; C. int *p[20]=a; D. int(*p)[20]=a; 17. 标准输入设备的文献流标识符是( A )。 A. stdin B. stdout C. stderr D. stdio 18. 若要以读/写操作方式打开一个二进制文献,当文献不存在时返回打开失败信息,则选用的打开方式字符串为( C )。 A. "r+" B. "ab+" C. "rb+" D. "wb+" 二、填空题 1. 单行或多行注释的开始标识符为 /* 。 2. C语言程序中所有预处理命令均以 # 字符开头。 3. 使用#include命令能够包括一个头文献,也能够包括一个 程序 文献。 4. 用于从键盘上变为变量输入值得标准输入函数是 sanf() 。 5. 执行“printf("%s%s%d","wei","rong",18);”语句后得到的输出成果为weirong18。 6. 十进制数25表示成符合C语言规则的八进制数为 031 。 7.执行“printf("%c",'A'+2);”语句后得到的输出成果为 C 。 8. 假定一个枚举类型的定义为“enum RA{ab,ac,ad,ae};”,则ac值为 1 。 9.short类型的大小为 2 个字节。 10. double类型的大小为 8 个字节。 11. 十进制数3.26f的类型为 float 。 12. 执行“int=45,y=13;printf(“%d”,x/y);”语句序列后得到的输出成果为 3 。 13. 假定y=10,则体现式++y*3的值为 33 。 14. 体现式x=x+y表示成复合赋值体现式为 x+y=y 。 15. 关系体现式(x==0)的等价体现式为 (!x) 。 16. 假定不允许使用逻辑非操作符,则逻辑体现式x>3 && x<10的相反体现式为 x<=3 || x>=10 。 17.若x=5,y=10,则x!=y的逻辑值为 1 。 18. 假定x=5,则执行“int a=(! X? 10:20);”语句后a的值为 20 。 19. 在if语句中,每个else核心字与它前面同层次并且最接近的 if 核心字相配套。 20. 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行 11 次后正常结束。 21. 当在程序中执行到 contioue 语句时,将结束所在循环语句中循环体的一次执行。 22. 假定二维数组的定义为“char a[3][5];”,则该数组所含元素的个数为 15 。 23.假定二维数组的定义为“char a[M][N];”,则该数组所占存储空间的字节数为 M*N 。 24. 执行“typedef int ABC[10];”语句把ABC定义为具备10个整形元素的 数组 类型。 25. 存储字符串“a”需要占用存储器的 2 个字节空间。 26. 字符串“\’a\’xy=4\n”的长度为 8 。 27. strlen函数用于计算一个字符串的 长度 。 28. strcat函数用于把一个字符串 连接 到另一个字符串之后的存储空间中。 29.函数中的形参变量的初值由调用该函数时对应的 实参 值决定。 30. 对于无返回值函数,定义函数时要用保存字 void 修饰函数类型。 31. 程序的编译是以 程序文献 为单位进行的。 32. 假定p所指向对象的值为25,p+1所指对象的值为46,则执行“(*p)++;”语句后,p所指向对象的值为 26 。 33. 假定a是一个一维数组,则a[i]的指针访问方式为 *(a+i) 。 34. 假定p是一个指向整数对象的指针,则用 *p 表示该整数对象。 35. 执行int *p=malloc(sizeof(int))操作得到的一个动态分派的整型对象为 *p 。 36. 假定一个结构类型的定义为“struct C{double* a[4];int n;};”,则该类型的大小为 20 个字节。 37. 假定要动态分派一个类型为struct Worker的具备n个元素的数组,并由r指向这个动态数组,则使用的语句体现式为 struct Worker* r =malloc(n*sizeof(struct Worker))。 38. 与结构组员访问体现式p->name等价的体现式是 (*p).name 。 三、写出下列每个程序运行后的输出成果 1. #include<stdio.h> void main() { int i, s=0; for(i=1;;i++) { if(s>50) break; if(i%2==0) s+=i; } printf("i,s=%d, %d\n",i,s); // s=2+4+6+8+10+12+14=56 i=15 } 2. #include<stdio.h> 成果 ***** **** *** ** * void main() { char ch='*'; int i, n=5; while(1) { for(i=0;i<n;i++) printf("%c",ch); printf("\n"); if(--n==0) break; } } 3. #include<stdio.h> const int N=5; void main() 成果 1 1 1 2 2 2 3 6 9 4 24 33 { int i,p=1,s=0; for(i=1;i<N;i++){ p=p*i; s=s+p; printf("%5d%5d",i,p); printf("%5d\n",s); } } 4. #include<stdio.h> void main() { int x=24,y=88; int i=2,p=1; do { while(x%i==0 && y%i==0) { p*=i; x/=i; y/=i; } i++; }while(x>=i && y>=i); printf("%d\n",p*x*y); } /* i=2 p=2 x=12 y=44 P=4 x=6 y=22 P=8 x=3 y=11 i=3 i=4 循环条件不成立 因此循环体不执行 p*x*y=8*3*11=264 */ 5. #include<stdio.h> void main() { int a[9]={36,25,48,24,55,40,18,66,20}; int i, b1, b2; a[0]<=a[1]? (b1=a[0], b2=a[1]):(b1=a[1],b2=a[0]);// b1=25,b2=36 for(i=2; i<9; i++) //i取2到8 if(a[i]<b1) {b2=b1; b1=a[i];} //注意循环体 else if(a[i]<b2) b2=a[i]; printf("%d %d\n",b1,b2); } 分析 i=2 a[2]=48 b1=25 b2=36 i=3 a[3]=24 b2=25 b1=24 i=4 a[4]=55 b2=25 b1=24 i=5 a[5]=44 b1=25 b1=24 i=6 a[6]=18 b2=24 b1=18 i=7 a[7]=66 b2=24 b1=18 i=8 a[8]=20 b2=20 b1=18 成果 18 20 6. #include<stdio.h> void main() { int a[12]={76,63,54,62,40,75,80,92,77,84,44,73}; int b[4]={60,70,90,101}; int c[4]={0}; int i,j; for(i=0;i<12;i++) { j=0; while(a[i]>=b[j]) j++; c[j]++; 成果 3 2 6 1 } for(i=0;i<4;i++) printf("%d",c[i]); printf("\n"); } 7. #include<stdio.h> void main() { int a=10, b=20; printf("%d %d\n",a,b); { int b=a+25; //注意局部变量b的作用域 a*=4; printf("%d %d\n",a,b); } printf("%d %d\n",a,b); } 成果 10 20 40 35 40 20 8. #include<stdio.h> void SelectSort(int a[], int n) { int i,j,k,x; for(i=1;i<n;i++) { //进行n-1次选择和互换 k=i-1; for(j=i;j<n;j++) if(a[j]<a[k]) k=j; x=a[i-1]; a[i-1]=a[k]; a[k]=x; } } void main() { int i; int a[6]={20,15,32,47,36,28}; SelectSort(a,6); for(i=0; i<6; i++) printf("%d ",a[i]); printf("\n"); } 成果:15 20 28 32 36 47 9.#include<stdio.h> void main() { int a[8]={4,8,12,16,20,24,28,32}; int *p=a; do { printf("%d",*p); p+=2; } while(p<a+8); printf("\n"); } 成果:4 12 20 28 10. #include<stdio.h> void LE(int* a, int* b) { int x=*a; *a=*b; *b=x; 成果: 15 26 26 15 } void main() { int x=15, y=26; printf("%d %d\n",x,y); LE(&x,&y); printf("%d %d\n",x,y); } 11. #include<stdio.h> #include<string.h> struct Worker { char name[15]; //姓名 int age; //年龄 float pay; //工资 }; int Equal(struct Worker* r1, struct Worker* r2) { if(strcmp(r1->name, r2->name)==0) return 1; else return 0; } void main() { struct Worker a[4]={{"abc",25,420},{"defa",58,638}, {"ghin",49,560},{"jklt",36,375}}; struct Worker x={"defa"}; int i; for(i=0; i<4; i++) if(Equal(a+i,&x)) break; if(i>=4) printf("没有查找所需要的统计!\n"); else printf("%s %d %6.2f\n",a[i].name,a[i].age,a[i].pay); } 成果:defa 58 638.00 四、写出下列每个函数的功效 1. int SE(int n) { //n为不小于等于1的整数 int x,s=0; printf("输入%d个整数: ",n); scanf("%d",&x); if(n==1) return x; s=x; while(--n) {scanf("%d",&x); s+=x;} return s; } 函数功效:求出键盘上输入的n个整数之和并返回。 2. float FH() { float x,y=0,n=0; scanf("%f",%x); while(x! =-1.0) { n++; y+=x; scanf("%f",%x); } if(n--0) return y; else return y/n; } 函数功效:求出从键盘上输出的一批常数的平均值,以-1.0作为结束输入的标志。 3. #include<stdio.h> void WA(int a[], int n) { int i,k,j,x; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(a[j]>a[k]) k=j; x=a[i]; a[i]=a[k]; a[k]=x; } } 函数功效:采取选择排序的措施对数组a中的n个整数按照从大到小的次序重新排列。 4. #include<stdio.h> int* LJ(int a[], int n) { int i,k=0; for(i=1;i<n;i++) if(a[i]>a[k]) k=i; return &a[k]; } 函数功效:求出数组a中n个元素的最大值元素,返回该元素的地址。 5. void QC(struct StrNode* f) { while(f) { printf("%s\n",f->name); f=f->next; } } 假定结构类型StrNode的定义如下: stuct StrNode { char name[15]; //字符串域 struct StrNode *next; //指针域 }; 函数功效:遍历f单链表,即从头结点开始依次输出f单链表中每个结点的值。 6. int Output(struct IntNode *f) {
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 远程教育/电大

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服