




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计 II 期末复习复习内容:第 14 讲 指针指针的概念:内存单元的排列方式、地址的概念、不同数据类型内存单元的个数、存储方式不同,两种变量的存取方式,指针即是地址, NULL ;指针变量:概念和定义方法( 空悬指针、空类型与空指针 ),指针的两个特殊运算符(*与&),指针变量作为函数参数(通过函数调用得到n个要改变的值);指针运算: 指针与整数的运算、+(-) 、比较、相减;指针与一维数组: 对数组名的理解,指针与一维数组(指向数组元素的指针、引用数组元素时的指针运算、通过指针引用数组元素的几种方法、用数组名作函数参数);指针与二维数组: 理解二维数组中行指针、列指针的
2、类型,加减1 所移动的字节数,如何利用它们访问二维数组元素,用作函数参数参数时在主调函数中如何给出实参。通过指针引用字符串: 字符串的引用方式,字符指针作函数参数,使用字符指针变量和字符数组的比较;指向函数的指针: 什么是函数指针,怎样定义和使用指向函数的指针变量,用指向函数的指针作函数参数;返回指针值的函数: 函数的返回值是一个地址,定义格式,使用;指针数组和多重指针: 什么是指针数组,指向指针数组的指针,指针数组作main 函数的形参;动态内存分配: 动态内存分配的概念、必要性,与动态内存分配相关的 4 个函数,动态数组的建立;有关指针的小结: 指针、指向、指针变量, void * 类型与
3、 NULL 的比较,指针与数组的关系,各类指针类型的比较,指针的几类运算;结构体指针: 什么是结构体指针,用结构体指针访问成员的简便写法,指向结构体数组的指针,结构体变量与结构体指针作函数参数;用指针处理链表:什么是链表,建立静态链表,建立动态链表,输出链表。(理解链表的概念,本次考试不包含这一部分内容)。第 5 讲 位运算和预处理指令位运算与位运算符:位运算概念,6种基本的位运算符(&、|、A、),&和八运算符的一些用法,位运算的复合赋值运算符;位段:问题的提出,位段的概念与定义,位段的使用,注意事项; (这一部分内容不考)预处理:概念,主要工作,功能类型,书写要求;宏定义:
4、不带参数的宏定义,带参数的宏定义;“文件包含”处理:格式,作用,带 与” 的差别;条件编译:概念,好处,几种基本格式。(理解条件编译的概念,本次考试不包含这一部分内容)。第 68 讲 文件操作与综合案例C 文件的有关基本知识: 文件的概念与组成, 文件的分类, 读文件与写文件,缓冲文件系统,文件类型指针;文件的打开与关闭 :文件打开与关闭的含义,文件打开的多种方式,打开文件出错时处理, fopen() 、 fclose() 的使用;顺序读写数据文件: 顺序读写的概念,文件操作的主要步骤, fputc() 与fgetc() 、 fputs() 与 fgets() 、 fprintf() 与 fs
5、canf() 、 fread() 与 fwrite() 的使用,文件是否结束的判断(EOF 和 feof() ;随机读写数据文件: 文件读写位置指针,文件定位函数(rewind() 、 fseek()和 ftell() 的用法;文件读写出错检测函数(ferror() 和 clearerr() 的用法; (这一部分内容不考 )综合案例: 设计与实现的基本思路2、 考核的知识点:考核的主要知识点:指针、结构体、位运算、预处理、文件操作、综合案例涉及的知识点:程序结构、表达式、程序控制结构、数给、字符串、函数等3、 样题单选题:1 、变量的指针,其含义是该变量的【 】A)值 B)地址 C)名D) 一
6、个标志2 、下面程序段的运行结果是【 】char *s= ” abcde ”;s+=2; printf(“ %d” ,s);A)cde B)字符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的二进制数是110
7、10010,若想通过运算aAb使结果中高四位是a对应 位取反、低四位不变,则b的二进制数应是。2、能使用两字节变量x的低8位全置1、高8位不变的表达式是 。3、一个函数的原型是 void func(int),现要求定义一个函数指针 p指向该函数, 那么p的正确定义格式是。写出下列程序的运行结果#include <stdio.h>int main()int i, a10;int *p;p = a;for (i=0 ; i<10 ; i+ ) scanf ("%d" , p+ );for (p=a; p<a+10; p+ )if(*p)%3=0)prin
8、tf ("%3d",*p);return 0;运行时假定键盘输入数据为:1 357911 1315 17 21则程序运行后的输出结果是 程序填空以下程序的功能是:将一个已经存在的文本文件内容复制到一个目标文件中,即进行文本文件拷贝。#include <stdio.h>#include <stdlib.h>int main()FILE *in, *out;char ch,infile80,outfile80;printf("请输入源文件名:");gets(infile);printf("请输入目标文件名:");g
9、ets(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 ()判断是否到源文件尾 (ch, out);/将读取的源文件内容写入目标文件中 ch=fgetc(in);printf("n 文件复制完毕!nn");fclose(in);fclose(out);r
10、eturn 0;)编程题:(说明:加颜色的题目与考题相似度大一些)1、课件第1讲 例3:对输入的两个整数按大小顺序输出。现用函数处理,而且用指针类型的数据作函数参数。2、课件第1讲例4:对输入的两个整数按大小顺序输出3、课件第1讲例5:输入3个整数a,b,c ,要求按由大到小的顺序将它们输出, 用函数实现。4、实验 5、(基础题)请参考教材P226-229图示,请说明下列函数中,哪些能实现主函数的实参数据交换功能, 哪些不能实现或程序存在问题, 为什么?(最好上机验证)(1)void swap1(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=tem
11、p;(2)void swap2(int *p1,int *p2)int *temp;*temp=*p1;*p1=*p2;*p2=*temp;(3)void swap3(int x,int y)int temp;temp=x; x=y; y=temp;(4)void swap4(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
12、、课件第2讲 例6:有一个3W的二维数组,要求用指向元素的指针变量输出 二维数组各元素的值。10、课件第2讲 例7:有一个3W的二维数组,要求用指向一维数组元素的指 针变量输出任一行任一列元素的值11、课件第2讲例8:有一个班,3个学生,各学4门课,计算总平均分数以 及第n个学生的成绩。12、实验_2 2、(基础题)使用指针编程实现:输入 3个正整数,按由小到大顺 序输出。程序运行结果如下所示:;请输入为b, c的值:9 5 3由小到大排序后的序列为:3,5,913、实验_2 3、(基础题)分析、运行下列程序,理解二维数组 行指针”、到指针”的类型,加减1所移动的字节数,熟悉二维数组元素的间接
13、访问方法,并回 答相关问题14、课件第3讲 例1:通过字符指针变量输出一个字符串。15、课件第3讲 例3:用函数调用实现字符串的复制16、课件第3讲 例7:将若干字符串按字母顺序(由小到大)输出。17、课件第3讲例9:有一个指针数组,其元素分别指向一个整型数组的元素, 用指向指针数据的指针变量,输出整型数组各元素的值。18、实验_3 1、(基础题)以下程序的功能是:在主函数中定义一个int型4行5列的数组并初始化,然后调用 print_array()、change_values()来输出、 修改数组元素的值,请根据题意填写所缺代码,再运行程序,体会数组元素的 不同访问方法。程序运行结果如下所示
14、:-y 0 0一 ZE攵组各行0 0& &二维数组各行各列元素:20676E81135941£849351645861534#include <stdio.h> #include <stdlib.h>#include <time.h> int main()int a45=0;void change_values(int *p, int n);void print_array(int (*p)5,int m);printf("修改前,二维数组各行各列元素:n");(1)(2)调用change values函数修改数
15、组元素的值printf("修改后,二维数组各行各列元素:n");return 0;函数change_values 功能:生成1-100之间的随机整数修改数组各元素的值形参:p是数组的首地址,n是数组元素个数void change_values(int *p, int n) srand(time(0);代码段1函数print_array功能:输出二维数组各行各列元素的值形参:p是数组的首行地址,m是数组的行数(列数为5,以下不再重复)void print_array(int (*p)5,int m) int i,j;代码段2printf("n");19、实
16、验_3 4、(基础题)指针数组的应用:学院现有10系2部,建立一个char 型指针数组指向这些单位名称,之后用冒泡排序法排序,并输出排序后的单位 名称,如下图所示:系 系系 系 贸系程体 术 系系系经部机工媒部系技系 会子理际础算件码政语络戏 好电管国翦计轮前思外网游补充程序所缺代码:#include <stdio.h>#include <string.h> int main()函数声明,下同void bubble_sort(char *name ,int n);void print(char *name ,int n);char *dept =" 管理系&q
17、uot;,"国际经贸系","财会系","计算机系","电子系","数码媒体系 ","外语系","软件工程系","网络技术系","游戏系","基础部","思政部(1) ,调用冒泡排序函数(2) ;/调用输出多个字符串函数printf("n");return 0;冒泡排序函数void bubble_sort(char *name ,int n) 程序代码段1void pr
18、int(char *name ,int n)输出多个字符串函数程序代码段220、课件第4讲 例1:建立动态数组,输入5个学生的成绩,另外用一个函数 检查其中有无低于60分的,输出不合格的成绩。21、课件第4讲例2:通过指向结构体变量的指针变量输出结构体变量中成员 的信息。22、课件第4讲例4:有n个结构体变量,内含学生学号、姓名和 3门课程的 成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和 平均成绩)23、课件第5讲例2:输入一个整数,使它扩大16倍,不允许用乘法。24、课件第5讲 例4:取一个整数a从右端开始的47位。25、课件第5讲例5:循环移位。要求将a进行右循环
19、移n位26、课件第5讲例7:输入半径,计算圆的周长、面积和球体的体积。27、实验_5 1、(基础题)编写程序实现:先输入两个整数x、y,然后计算出 x&y、x|y、xAy、x、x<<3、x>>2六种基本的位运算的结果,并输出。28、课件第6讲例1:从键盘输入一些字符,逐个把它们送到磁盘上去,直到用 户输入一个半”为止29、课件第6讲例2:编写一个程序,实现文本文件的复制功能。30、课件第6讲例5:编程序构成一个九九表,写入文件 file99.txt。再从该文 件把九九表中的数据读入二维数组 a99,并显示输出。31、课件第6讲 例6:从键盘输入10个学生的有关数
20、据,然后把它们转存到磁 盘文件上去32、课件第6讲例7:将上题生成的f:stu.dat文件内容读出,然后在屏幕上 显示33、实验_6 1、(基础题)以下程序的功能是从键盘输入一个文件名,然后再输 入一些字符,依次存放到该文件中,用作为输入结束标志。请先填充程序所缺 代码,之后按要求操作,最后回答问题:#include <stdio.h>#include <(1) >int main()FILE * fp;char ch,fname51;printf("请输入文4名:");(2);if(fp= (3)=NUL)printf("文件不能打开!n
21、");exit(0);while (4)fputc( );printf("文件保存完毕!nn");(6); /关闭文件return 0;操作要求:(1)文件指定为F:盘根目录下test.txt ,请输入以下内容: 1234567890abcdefghijC语言请查看test.txt文件的长度,用 记事本”打开该文件,再用UltraEdit查看该 文件各字节的内容;问题:(1)文件操作的顺序是什么?怎样打开、关闭文件?(2)文件类型指针有什么作用?(3)当打开文件不成功时,该如何处理?怎样向文件写入字符?34、实验_6 2、(基础题)以下文件的功能是进行文本文件的复
22、制。源文件名、 目标文件名由键盘输入。请将程序所缺代码补充完整,之后按要求操作,最后 回答问题:#include <stdio.h>#include <stdlib.h> int main()FILE *in,*out;char ch,infile60,outfile60;printf("输入源文件的名字:");scanf( "%s" ,infile);printf("输入目标文件的名字:”); scanf( "%s" ,outfile);if(in=fopen( )=NULL) / 打开输入文件pr
23、intf("无法打开源文件n");exit(0); if(out=fopen( (2)=NULL) / 打开输出文件printf("无法打开目标文件n");exit(0); ch=fgetc( );while (4) fputc( );ch=fgetc(in);printf( "n文件复制完毕nn");(6):/关闭输入文件:/关闭输出文件return 0; 操作要求:(1)请将实验6目录下的文件 myfile.txt、test.exe拷贝到 目录中;(2)运行程序,输入源文件名:F:myfile.txt ,目标文件名:F:myfil
24、e2.txt 。查 看my刊e.txt 与my刊e2.txt是否完全相同?(可通过比较文件大小、用UltraEdit 比较两文件的内容来判定);(3)再次运行程序,输入源文件名:F:Vest.exe ,目标文件名:F:Vest2.exe。这两个文件完全相同吗?请分析其中的原因,并加以改进。问题:(1)打开源文件、目标文件时,打开方式各是什么?(2)文本文件、二进制文件的打开方式有什么不同?对于文本文件、二进制文件,如何判断遇到了文件尾?35 、实验 _6 3、 (基础题)分析、运行下列程序,指出其功能,熟悉文件读写函数的使用:(1)#include <stdio.h>#includ
25、e <stdlib.h>#include <string.h>int main()FILE *fp;char str101;int i,n=5;if(fp=fopen( "F:strings.txt" ,"w" )=NULL) printf( "不能打开此文件!n" );exit(0);printf( "请输入几个字符串 :n" );while (strlen(gets(str)>0)fputs(str,fp);fputs( "n" ,fp);printf( &qu
26、ot;n 字符串内容已保存!n" );fclose(fp);if(fp=fopen( "F:strings.txt" ,"r" )=NULL) printf( "不能打开此文件!n" );exit(0);printf( "n 文件中保存的字符串有:n" );while (fgets(str,101,fp)!=NULL)printf( "%s" ,str);fclose(fp);printf( "n" );return 0;(2)#include <stdio.
27、h>#include <stdlib.h>int main()FILE *fp;int i,k;int num=100,101,102,103,104,105,106,107,108,109;if(fp=fopen( "F:myarray.txt" , "w" )=NULL)printf( "不能将数据保存到 myarray.txt 文件中 !n" );exit(0);for (i=0; i<=9; i+)fprintf(fp, "%5d" , numi);fprintf(fp, "
28、;n" );fclose(fp);if(fp=fopen( "F:myarray.txt" , "r" )=NULL)printf( "不能打开 myarray.txt 文件 !n" );exit(0);for (i=0; i<=9; i+)fscanf(fp, "%d" , &k);printf( "%-5d" ,k);printf( "nn" );fclose(fp);return 0;(3)#include <stdio.h>#include <stdlib.h>int main()FILE *fp;int i,k;int num=100,101,102,103,104,105,106,107,108,109,b10;if(fp=fopen( "F:myarray.dat" , "wb" )=NULL) printf("不能将数据保存到 myarray.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东省农业科学院果树研究所优稀水果研究室招聘劳动合同制工作人员1人考试参考题库及答案解析
- 塑胶跑道建设合同范本及风险防
- 物业管理服务合同与执行方案
- 抵押借款个体经营合同6篇
- 员工与单位解除劳动合同通知书8篇
- 机器设备保修服务合同3篇
- 工程装修合同(标准版)范本下载2篇
- 贸易买卖合同4篇
- 铺面租房合同范本4篇
- 2026届中考语文小说训练于新亮小说(含解析)
- 2025年全国企业员工全面质量管理知识竞赛题库及答案(共90题)
- 2025年度融资租赁居间服务合同
- 《隐私保护技术》课件
- 花坛景观设计59课件讲解
- 大一开学新生的安全教育
- 2024天津市非全日制用工劳动合同书(官方范本)范文
- 浙江财经大学《统计学》2023-2024学年第一学期期末试卷
- 2023年度新增学位授权审核分析报告
- 医疗机构信息系统安全防护预案
- 汽车维修质量管理及质量保证期制度
- 广州数控GSK 980TDc车床CNC使用手册
评论
0/150
提交评论