您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 《C语言程序设计II》期末复习
《C语言程序设计II》期末复习一、复习内容:第1~4讲指针指针的概念:内存单元的排列方式、地址的概念、不同数据类型内存单元的个数、存储方式不同,两种变量的存取方式,指针即是地址,NULL;指针变量:概念和定义方法(空悬指针、空类型与空指针),指针的两个特殊运算符(*与&),指针变量作为函数参数(通过函数调用得到n个要改变的值);指针运算:指针与整数的运算、++(--)、比较、相减;指针与一维数组:对数组名的理解,指针与一维数组(指向数组元素的指针、引用数组元素时的指针运算、通过指针引用数组元素的几种方法、用数组名作函数参数);指针与二维数组:理解二维数组中行指针、列指针的类型,加减1所移动的字节数,如何利用它们访问二维数组元素,用作函数参数参数时在主调函数中如何给出实参。通过指针引用字符串:字符串的引用方式,字符指针作函数参数,使用字符指针变量和字符数组的比较;指向函数的指针:什么是函数指针,怎样定义和使用指向函数的指针变量,用指向函数的指针作函数参数;返回指针值的函数:函数的返回值是一个地址,定义格式,使用;指针数组和多重指针:什么是指针数组,指向指针数组的指针,指针数组作main函数的形参;动态内存分配:动态内存分配的概念、必要性,与动态内存分配相关的4个函数,动态数组的建立;有关指针的小结:指针、指向、指针变量,void*类型与NULL的比较,指针与数组的关系,各类指针类型的比较,指针的几类运算;结构体指针:什么是结构体指针,用结构体指针访问成员的简便写法,指向结构体数组的指针,结构体变量与结构体指针作函数参数;用指针处理链表:什么是链表,建立静态链表,建立动态链表,输出链表。(理解链表的概念,本次考试不包含这一部分内容)。第5讲位运算和预处理指令位运算与位运算符:位运算概念,6种基本的位运算符(&、|、^、~、、),&和^运算符的一些用法,位运算的复合赋值运算符;位段:问题的提出,位段的概念与定义,位段的使用,注意事项;(这一部分内容不考)预处理:概念,主要工作,功能类型,书写要求;宏定义:不带参数的宏定义,带参数的宏定义;“文件包含”处理:格式,作用,带与””的差别;条件编译:概念,好处,几种基本格式。(理解条件编译的概念,本次考试不包含这一部分内容)。第6~8讲文件操作与综合案例C文件的有关基本知识:文件的概念与组成,文件的分类,读文件与写文件,缓冲文件系统,文件类型指针;文件的打开与关闭:文件打开与关闭的含义,文件打开的多种方式,打开文件出错时处理,fopen()、fclose()的使用;顺序读写数据文件:顺序读写的概念,文件操作的主要步骤,fputc()与fgetc()、fputs()与fgets()、fprintf()与fscanf()、fread()与fwrite()的使用,文件是否结束的判断(EOF和feof());随机读写数据文件:文件读写位置指针,文件定位函数(rewind()、fseek()和ftell())的用法;文件读写出错检测函数(ferror()和clearerr())的用法;(这一部分内容不考)综合案例:设计与实现的基本思路二、考核的知识点:考核的主要知识点:指针、结构体、位运算、预处理、文件操作、综合案例涉及的知识点:程序结构、表达式、程序控制结构、数给、字符串、函数等三、样题单选题:1、变量的指针,其含义是该变量的【】A)值B)地址C)名D)一个标志2、下面程序段的运行结果是【】char*s=”abcde”;s+=2;printf(“%d”,s);A)cdeB)字符’c’C)字符’c’的地址D)无确定的输出结果是3、现有定义:int(*p)[4];下列关于标识符中,正确的是【】A)定义不合法B)是一个指向整型变量的指针C)是一个指针,它指向一个函数,该函数的形参、返回值均为int类型D)是一个指针变量,该变量指向由4个int型元素组成的一维数组4、数字9与14进行“位异或”运算(即9^14)的结果是【】A)9B)15C)7D)8填空题1、设变量a的二进制数是11010010,若想通过运算a^b使结果中高四位是a对应位取反、低四位不变,则b的二进制数应是___________。2、能使用两字节变量x的低8位全置1、高8位不变的表达式是___________。3、一个函数的原型是voidfunc(int),现要求定义一个函数指针p指向该函数,那么p的正确定义格式是___________________。写出下列程序的运行结果#includestdio.hintmain(){inti,a[10];int*p;p=a;for(i=0;i10;i++)scanf(%d,p++);for(p=a;pa+10;p++)if((*p)%3==0)printf(%3d,*p);return0;}运行时假定键盘输入数据为:135791113151721则程序运行后的输出结果是程序填空以下程序的功能是:将一个已经存在的文本文件内容复制到一个目标文件中,即进行文本文件拷贝。#includestdio.h#includestdlib.hintmain(){FILE*in,*out;charch,infile[80],outfile[80];printf(请输入源文件名:);gets(infile);printf(请输入目标文件名:);gets(outfile);in=fopen(infile,r);if(in==NULL){printf(不能打开源文件!\n);exit(0);}out=fopen(outfile,(1));if(out==NULL){printf(不能打开目标文件!\n);exit(0);}ch=fgetc(in);while((2))//判断是否到源文件尾{(3)(ch,out);//将读取的源文件内容写入目标文件中ch=fgetc(in);}printf(\n文件复制完毕!\n\n);fclose(in);fclose(out);return0;}}编程题:(说明:加颜色的题目与考题相似度大一些)1、课件第1讲例3:对输入的两个整数按大小顺序输出。现用函数处理,而且用指针类型的数据作函数参数。2、课件第1讲例4:对输入的两个整数按大小顺序输出3、课件第1讲例5:输入3个整数a,b,c,要求按由大到小的顺序将它们输出,用函数实现。4、实验_15、(基础题)请参考教材P226-229图示,请说明下列函数中,哪些能实现主函数的实参数据交换功能,哪些不能实现或程序存在问题,为什么?(最好上机验证)(1)voidswap1(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}(2)voidswap2(int*p1,int*p2){int*temp;*temp=*p1;*p1=*p2;*p2=*temp;}(3)voidswap3(intx,inty){inttemp;temp=x;x=y;y=temp;}(4)voidswap4(int*p1,int*p2){int*p;p=p1;p1=p2;p2=p;}5、课件第2讲例1:验证不同数据类型,每一数据单元所占用的存储空间不同6、课件第2讲例2:用自增运算改写前一程序(部分)7、课件第2讲例4:将数组a中n个整数按相反顺序存放。8、课件第2讲例5:用指针方法对10个整数按由大到小顺序排序。9、课件第2讲例6:有一个3×4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值。10、课件第2讲例7:有一个3×4的二维数组,要求用指向一维数组元素的指针变量输出任一行任一列元素的值11、课件第2讲例8:有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。12、实验_22、(基础题)使用指针编程实现:输入3个正整数,按由小到大顺序输出。程序运行结果如下所示:13、实验_23、(基础题)分析、运行下列程序,理解二维数组“行指针”、“列指针”的类型,加减1所移动的字节数,熟悉二维数组元素的间接访问方法,并回答相关问题14、课件第3讲例1:通过字符指针变量输出一个字符串。15、课件第3讲例3:用函数调用实现字符串的复制16、课件第3讲例7:将若干字符串按字母顺序(由小到大)输出。17、课件第3讲例9:有一个指针数组,其元素分别指向一个整型数组的元素,用指向指针数据的指针变量,输出整型数组各元素的值。18、实验_31、(基础题)以下程序的功能是:在主函数中定义一个int型4行5列的数组并初始化,然后调用print_array()、change_values()来输出、修改数组元素的值,请根据题意填写所缺代码,再运行程序,体会数组元素的不同访问方法。程序运行结果如下所示:#includestdio.h#includestdlib.h#includetime.hintmain(){inta[4][5]={0};voidchange_values(int*p,intn);voidprint_array(int(*p)[5],intm);printf(修改前,二维数组各行各列元素:\n);(1)(2)//调用change_values函数修改数组元素的值printf(修改后,二维数组各行各列元素:\n);(3)return0;}//函数change_values功能:生成1-100之间的随机整数修改数组各元素的值//形参:p是数组的首地址,n是数组元素个数voidchange_values(int*p,intn){srand(time(0));//代码段1}//函数print_array功能:输出二维数组各行各列元素的值//形参:p是数组的首行地址,m是数组的行数(列数为5,以下不再重复)voidprint_array(int(*p)[5],intm){inti,j;//代码段2printf(\n);}19、实验_34、(基础题)指针数组的应用:学院现有10系2部,建立一个char型指针数组指向这些单位名称,之后用冒泡排序法排序,并输出排序后的单位名称,如下图所示:补充程序所缺代码:#includestdio.h#includestring.hintmain(){voidbubble_sort(char*name[],intn);//函数声明,下同voidprint(char*name[],intn);char*dept[]={管理系,国际经贸系,财会系,计算机系,电子系,数码媒体系,外语系,软件工程系,网络技术系,游戏系,基础部,思政部};(1);//调用冒泡排序函数(2);//调用输出多个字符串函数printf(\n);return0;}voidbubble_sort(char*name[],intn)//冒泡排序函数{//程序代码段1}voidprint(char*name[],intn)//输出多个字符串函数{//程序代码段2}20、课件第4讲例1:建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。21、课件第4讲例2:通过指向结构体变量的指针变量输出结构体变量中成员的信息。22、课件第4讲例4:有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)23、课件第5讲例2:输入一个整数,使它扩大16倍,不允许用乘法。24、课件第5讲例4:取一个整数a从右端开始的4~7位。25、课件第5讲例5:循环移位。要求将a进行右循环移n位26、课件第5讲例7:输入半径,计算圆的周长、面积和球体的体积。27、实验_51、(基础题)编写程序实现:先输入两个整数x、y,然后计算出x&y、x|y、x^y、~x、x3、x2六种基本的位运算的结果,并输出。28、课件第6讲例1:从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止29、课件第6讲例2:编写一个程序,
本文标题:《C语言程序设计II》期末复习
链接地址:https://www.777doc.com/doc-2835882 .html