《C语言程序设计II》期末复习Word文档格式.docx
- 文档编号:17127233
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:16
- 大小:47.54KB
《C语言程序设计II》期末复习Word文档格式.docx
《《C语言程序设计II》期末复习Word文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计II》期末复习Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
概念,主要工作,功能类型,书写要求;
●宏定义:
不带参数的宏定义,带参数的宏定义;
●“文件包含”处理:
格式,作用,带<
与””的差别;
●条件编译:
概念,好处,几种基本格式。
(理解条件编译的概念,本次考试不包含这一部分内容)。
⏹第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的正确定义格式是___________________。
写出下列程序的运行结果
#include<
stdio.h>
intmain()
{
inti,a[10];
int*p;
p=a;
for(i=0;
i<
10;
i++)
scanf("
%d"
p++);
for(p=a;
p<
a+10;
p++)
if((*p)%3==0)
printf("
%3d"
*p);
return0;
}
运行时假定键盘输入数据为:
13579111315 1721
则程序运行后的输出结果是
程序填空
以下程序的功能是:
将一个已经存在的文本文件内容复制到一个目标文件中,即进行文本文件拷贝。
stdlib.h>
{
FILE*in,*out;
charch,infile[80],outfile[80];
printf("
请输入源文件名:
"
);
gets(infile);
请输入目标文件名:
gets(outfile);
in=fopen(infile,"
r"
if(in==NULL)
{
printf("
不能打开源文件!
\n"
exit(0);
}
out=fopen(outfile,
(1));
if(out==NULL)
不能打开目标文件!
ch=fgetc(in);
while(
(2))//判断是否到源文件尾
(3)(ch,out);
//将读取的源文件内容写入目标文件中
ch=fgetc(in);
\n文件复制完毕!
\n\n"
fclose(in);
fclose(out);
编程题:
(说明:
加颜色的题目与考题相似度大一些)
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;
*p2=*temp;
(3)
voidswap3(intx,inty)
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:
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()来输出、修改数组元素的值,请根据题意填写所缺代码,再运行程序,体会数组元素的不同访问方法。
time.h>
inta[4][5]={0};
voidchange_values(int*p,intn);
voidprint_array(int(*p)[5],intm);
修改前,二维数组各行各列元素:
(1)
(2)//调用change_values函数修改数组元素的值
修改后,二维数组各行各列元素:
(3)
//函数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;
//代码段2
printf("
19、实验_34、(基础题)指针数组的应用:
学院现有10系2部,建立一个char型指针数组指向这些单位名称,之后用冒泡排序法排序,并输出排序后的单位名称,如下图所示:
补充程序所缺代码:
string.h>
voidbubble_sort(char*name[],intn);
//函数声明,下同
voidprint(char*name[],intn);
char*dept[]={"
管理系"
"
国际经贸系"
财会系"
计算机系"
电子系"
数码媒体系"
外语系"
软件工程系"
网络技术系"
游戏系"
基础部"
思政部"
};
(1);
//调用冒泡排序函数
(2);
//调用输出多个字符串函数
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、x<
3、x>
2六种基本的位运算的结果,并输出。
28、课件第6讲例1:
从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止
29、课件第6讲例2:
编写一个程序,实现文本文件的复制功能。
30、课件第6讲例5:
编程序构成一个九九表,写入文件file99.txt。
再从该文件把九九表中的数据读入二维数组a[9][9],并显示输出。
31、课件第6讲例6:
从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去
32、课件第6讲例7:
将上题生成的f:
\stu.dat文件内容读出,然后在屏幕上显示
33、实验_61、(基础题)以下程序的功能是从键盘输入一个文件名,然后再输入一些字符,依次存放到该文件中,用@作为输入结束标志。
请先填充程序所缺代码,之后按要求操作,最后回答问题:
____
(1)____>
FILE*fp;
charch,fname[51];
请输入文件名:
"
____
(2)____;
if((fp=____(3)____)==NULL)
文件不能打开!
while(____(4)____)
fputc(____(5)____);
文件保存完毕!
____(6)____;
//关闭文件
操作要求:
(1)文件指定为F:
盘根目录下test.txt,请输入以下内容:
1234567890
abcdefghij
C语言@
(2)请查看test.txt文件的长度,用“记事本”打开该文件,再用UltraEdit查看该文件各字节的内容;
问题:
(1)文件操作的顺序是什么?
怎样打开、关闭文件?
(2)文件类型指针有什么作用?
(3)当打开文件不成功时,该如何处理?
(4)怎样向文件写入字符?
34、实验_62、(基础题)以下文件的功能是进行文本文件的复制。
源文件名、目标文件名由键盘输入。
请将程序所缺代码补充完整,之后按要求操作,最后回答问题:
:
intmain()
FILE*in,*out;
charch,infile[60],outfile[60];
输入源文件的名字:
scanf("
%s"
infile);
输入目标文件的名字:
outfile);
if((in=fopen(____
(1)____))==NULL)//打开输入文件
无法打开源文件\n"
if((out=fopen(____
(2)____))==NULL)//打开输出文件
无法打开目标文件\n"
ch=fgetc(____(3)____);
while(____(4)____)
\n文件复制完毕\n\n"
//关闭输入文件
____(7)____;
//关闭输出文件
(1)请将实验6目录下的文件myfile.txt、test.exe拷贝到F:
\目录中;
(2)运行程序,输入源文件名:
F:
\\myfile.txt,目标文件名:
\\myfile2.txt。
查看myfile.txt与myfile2.txt是否完全相同?
(可通过比较文件大小、用UltraEdit比较两文件的内容来判定);
(3)再次运行程序,输入源文件名:
\\test.exe,目标文件名:
\\test2.exe。
这两个文件完全相同吗?
请分析其中的原因,并加以改进。
(1)打开源文件、目标文件时,打开方式各是什么?
(2)文本文件、二进制文件的打开方式有什么不同?
(3)对于文本文件、二进制文件,如何判断遇到了文件尾?
35、实验_63、(基础题)分析、运行下列程序,指出其功能,熟悉文件读写函数的使用:
FILE*fp;
charstr[101];
inti,n=5;
if((fp=fopen("
\\strings.txt"
w"
))==NULL)
不能打开此文件!
请输入几个字符串:
while(strlen(gets(str))>
0)
fputs(str,fp);
fputs("
fp);
\n字符串内容已保存!
fclose(fp);
\n文件中保存的字符串有:
while(fgets(str,101,fp)!
=NULL)
str);
inti,k;
intnum[]={100,101,102,103,104,105,106,107,108,109};
\\myarray.txt"
"
))==NULL)
不能将数据保存到myarray.txt文件中!
for(i=0;
=9;
i++)
fprintf(fp,"
%5d"
num[i]);
不能打开myarray.txt文件!
for(i=0;
fscanf(fp,"
&
k);
%-5d"
k);
}
intnum[]={100,101,102,103,104,105,106,107,108,109},b[10];
\\myarray.dat"
wb"
不能将数据保存到myarray.dat文件中!
fwrite(num,sizeof(int),10,fp);
rb"
不能打开myarray.dat文件!
fread(b,sizeof(int),10,fp);
b[i]);
36、实验_64、(基础题)编程实现:
有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生学号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算得到的平均分数存放在磁盘文件D:
\stud.dat中。
程序运行结果如下图所示:
37、课件第7讲例1:
对一个文本文件先显示输出其内容,再复制到另一个文件中去。
38、课件第7讲例2:
在磁盘文件stu.dat上已存有10个学生的数据。
要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。
39、课件第7讲综合案例
(1)——通讯录信息管理系统
40、实验_62、(基础题)建立一个C项目,请将文件夹“通讯录管理系统(源代码)”下的my_contact.c文件复制、添加到项目中,之后分析、运行程序,并回答下列问题:
(1)该系统操作、管理的数据(信息)是什么?
怎样表示?
(2)怎样才能长期保存这些数据(信息)?
(3)本系统包含哪些功能?
(4)程序代码通过什么方式来组织?
并举例说明。
(5)如何让用户方便操作?
怎样设计、实现系统的主菜单?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计II 语言程序设计 II 期末 复习