实验指导书(全14周)
更新时间:2023-11-18 06:59:01 阅读量: 教育文库 文档下载
- 单片机实验指导书推荐度:
- 相关推荐
实验十一 指针的概念、指针的运算以及指针与数组
一.实验目的
1. 熟练掌握指针、地址、指针类型、void指针、空指针等概念;
2. 熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式; 3. 会使用数组的指针和指向的指针变量;
4. 会使用字符串的指针和指向字符串的指针变量
二.实验内容
1. 验证实验:
阅读程序,分析可能产生的结果,并在机器上运行; ⑴
#include
int I,*p; p=&I; *p=5;
printf(“%d\\n”,i); printf(“%d\\n”,*p); printf(“%d\\n”,p); printf(“%d\\n”,&i); }
如果将第三和第四条printf()语句中的%d改为%p,会产生什么结果?为什么? ⑵
#include
int a[5]={1,2,3,4,5}; int *p1,*p2,num; p1=&a[0]; p2=&a[3]; num=p2-p1;
printf(\if (p2==p1) p2++;
printf(\}
修改本程序,将a数组中的元素前后置换,即形成以下的排列:a[5]={5,4,3,2,1}。
提示:用p1指针指向a[0],p2指针指向a[4],利用一个中间变量t,交换p1和p2所指的目标,然后p1和p2指针再进行必要的移动。 ⑶
#include
int a[10], sum=0, *p; float ave; randomize();
for(p=a; p
*p=rand()0; printf(“%d”,*p); }
printf(“\\n”);
for(p=a; p
ave=sum/10.0;
printf(\printf(\}
本程序是一个知识的拓展实验,学会使用随机函数的使用方法。请分析该程序,并指出该程序所完成的功能。
2、能力培养实验:
以下的程序是将字符串s2中的内容全部复制到字符串s1中。请阅读该程序,并分别使用求串长的方法、函数调用的方法以及指针的方法改写该程序,使得其亦能完成上述功能。 #include
char s1[N] , s2[N]; gets(s2);
for( int i=0;s2[i]!=’\\0’;i++) s1[i]=s2[i]; s1[i]=’\\0’;
1
printf(“s1=%s\\n”,s1); puts(s2); }
在输入s2数组时,将gets(s2)改为scanf(\并分别输入带有空格的串和不带空格的串,比较输出的结果。并在实验报告中给出你的解释。
3、综合素质能力拓展实验:
编写程序,从键盘上输入10个任意的整型数到a[10]中,将这10个数按由小到大的顺序排列。强调:一定要求使用指针的方法。
三、问题讨论
1、指针的输入输出格式符是什么?该怎么应用?如果有程序段为: #include
int a[5], I, *p ; p=a;
for(i=0;i<5;i++,p++) sacnf(“%d”,*p); printf(“\\n”); p=a;
for(i=0; i<5; i++,p++) printf(\printf(“\\n”); }
请问该程序有无错误,如果有,该程序应该怎样修改?
2、指针可以进行哪些运算,指针和指针的相减,其结果表示的是什么? 3、到目前为止,数组元素及其地址的表示方法你知道的有哪些? 4、字符串与字符串数组有何相同和不同之处?
2
实验十二 指针的操作
一. 实验目的
1.熟练掌握指针的运算(算术运算、关系运算和赋值运算)。
2.熟练掌握几种不同类型的指针(指向变量的指针、指向数组的指针、指向字符读串的指针、指向函数的 指针、指向指针的指针)。 3. 进一步学会调试程序
二. 预习知识
1. 指针的运算(算术运算、关系运算和赋值运算)
2. 几种不同类型的指针(指向变量的指针、指向数组的指针、指向字符读串的指针、指向函数的指针、指向指针的指针) 3. 指针在更多实际问题中的应用
三. 实验内容及步骤
1.上机运行下列程序,并打印其结果。 ⑴ main()
{int x=2,y=10,z,*p; z=x+y; p=&x;
printf(\p=&y;
printf(\p=&z;
printf(\}
⑵ main() {char *a[5]; int x;
a[0]=\a[1]=\
a[2]=\a[3]=\a[4]=\
for(x=0;x<=4;x++)
3
printf(\}
⑶ #include
*int_p=200; }
main()
{ int i=151,*p=&I;
printf(“I before the call to test=%d\\n”,i); test(p);
printf(“I after the call to test=%d\\n”,i); }
⑷ main()
{static int a[]={1,2,3,4,5}; int *p=a;
printf(\printf(\p=a+2;
printf(\}
⑸ main() {int add();
static int a[]={1,2,3,4,5,6,7,8,9,10}; int *p,t; p=&a[1]; t=add(p,10);
printf(\}
add(int *q,int n) {int I,s=0;
for(i=0;i ⑹ main() { int x,*p1,**p2,***p3,****p4; 4 x=8888; p1=&x; p2=&p1; p3=&p2; p4=&p3; printf(\printf(\} ⑺ main() {char *b,c[10]; int x,*a; strcpy(c,”goodbye”); b=”hello”; a=&b; x=&c[10]; *a=x; printf(“%s\\n”,b); } ⑻ main() {static int a[9]={1,2,3,4,5,6,7,8,9}; int I,j,x,y,*p=a; scanf(\ for(i=0;i<9;i++,p++) if(x==*p) y=*p-5; printf(\ for(p=a+1;p printf(\} printf(\p-=5; y=(y 2.用指针方法编写程序,输入三个整数,按由小到大的顺序输出。 3.用指针方法编写程序,输入三个字符串,按由小到大的顺序输出。 4. 输入一行文字,找出大写字母、小写字母、空格、数字以及其他字符 各有多少? 5.将a数组中的n 个整数按相反顺序存放。 6. 将给定字符的第一个字母变成大写字母,其它字母变成小写字母。 5 7.在主函数中输入10个不等长的字符串。用另一个函数对它们排序,然后在主函数中 输出这10个已排序的字符串。 8.编一函数,其功能是删除一个字符串中的所有空格。 例如:输入字符串“This is a string\ 则输出“Thisisastring\。 9.某班有学生30人,开设五门课程,分别用三个函数实现如下操作: ⑴求各门课程的平均分; ⑵找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩; ⑶找出五门课平均成绩在85~90分的学生。 10.用指针型指针对n个整数进行排序,并将结果顺序输出。要求排序用一个函数实现, 主函数只输入n个整数和输出已排序的n个整数。 11.编写一个函数alloc(n),用来在内存新开辟一个连续的空间(n个字节)。再写一 个函数free(p),将以地址p开始的各单元释放。主程序输入10个不等长的大写字符 串,每输入一个字符串,应放在新申请的一片连续的空间。该字符串反序输出后, 释放它所占用的空间。 五.实验要求及总结 1. 结合上课内容,对上述程序先阅读,然后上机并调试程序,并对实验结果写出你自己的分析结论。 2. 整理上机步骤,总结经验和体会。 3. 完成实验报告和上交程序。 6 实验十三 结构体和共用体 一、实验目的 1. 掌握关于预处理的知识 2.掌握C语言中结构体类型的定义和结构体变量的定义和引用。 3.了解关于共用体的相关知识 4.掌握用结构指针传递结构数据的方法。 5.熟悉TC集成环境的调试结构程序的方法 二、实验内容及步骤 1.设计一个保存学生情况的结构,学生情况包括姓名、学号、年龄。输入5个学生的情况,输出学生的平均年龄和年龄最小的学生的情况。要求输入和输出分别编写独立的输入函数input()和输出函数output()。 2.使用结构数组输入10本书的名称和单价,调用函数按照书名的字母顺序序进行排序,在主函数输出排序结果。 3.建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写两个函数,一个用于建立链表,另一个用来输出链表。 三、实验要求 1.复习结构体类型的定义,结构体变量、数组的定义和使用方法。 2.复习结构指针及其应用,如链表。 3.编写程序,运行程序并记录运行结果。 4.将源程序、目标文件、可执行文件和实验报告存在服务器的指定文件夹中。 四、选做题 1.在上述第3题的基础上,编写插入结点的函数,在指定位置插入一个新结点。 2.在上述第3题的基础上,编写删除结点的函数,在指定位置删除一个结点。 五.实验要求及总结 1.复习结构体类型的定义,结构体变量、数组的定义和使用方法。 2.复习结构指针及其应用,如链表。 3.编写程序,运行程序并记录运行结果。 4.将源程序、目标文件、可执行文件和实验报告存在服务器的指定文件夹中。 5. 结合上课内容,对上述程序先阅读,然后上机并调试程序,并对实验结果写出你自己的分析结论。 6. 整理上机步骤,总结经验和体会。 7. 完成实验报告和上交程序。 7 实验十四 文件 一.实验目的 1.掌握C语言中文件和文件指针的概念 2.掌握C语言中文件的打开与关闭及各种文件函数的使用方法。 3.熟悉TC集成环境的调试文件程序的方法 二. 预习知识 1. 文件和文件指针的概念 2. C语言中文件的打开与关闭及各种文件函数 3. 如何将文件应用到实际问题 三、实验内容 1.编写程序,输入一个文本文件名,输出该文本文件中的每一个字符及其所对应的ASCII码。例如文件的内容是Beijing,则输出:B(66)e(101)i(105)j(106)i(105)n(110)g(103)。 2.编写程序完成如下功能: ⑴ 输入5个学生的信息:学号(6位整数)、姓名(6个字符)、3门课的成绩(3位整数1位小数)。计算每个学生的平均成绩(3位整数2位小数),将所有数据写入文件STU1.DAT; ⑵ 从STU1.DAT文件中读入学生数据,按平均成绩从高到低排序后写入文件STU2.DAT; ⑶ 按照输入学生的学号,在STU2.DAT文件中查找该学生,找到以后输出该学生的所有数据,如果文件中没有输入的学号,给出相应的提示信息。 3.用编辑软件建立一个名为\的文本文件存入磁盘,文件中有18个数。从磁盘上读入该文件,并用文件中的前9个数和后9个数分别作为两个3*3矩阵的元素。求这两个矩阵的和,并把结果按每行3个数据写入文本文件\。用DOS命令TYPE显示d2.txt。 四、选做题 1.建立两个由有序的整数组成的二进制文件f1和f2,然后将它们合并为一个新的有序文件f3。 2.编写程序,功能是从磁盘上读入一个文本文件,将文件内容显示在屏幕上,每一行的前面显示行号。 五.实验要求及总结 1.复习文件的读写方法。 2.编写程序,运行程序并记录运行结果。 8 3.源程序、目标文件、可执行文件和实验报告存在服务器的指定文件夹中。 4. 结合上课内容,对上述程序先阅读,然后上机并调试程序,并对实验结果写出你自己的分析结论。 5. 整理上机步骤,总结经验和体会。 6. 完成实验报告和上交程序。 9
正在阅读:
实验指导书(全14周)11-18
二甲复审容易提到的院感问题04-22
江苏省句容市华阳学校2018届中考第二次模拟化学试题(附答案)06-19
校长培训论文05-13
新型电子陶瓷材料发展趋势05-19
道路监理细则04-14
这一路我收获了满满的自信作文600字06-21
初二数学基础知识竞赛试卷(2)08-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 指导书
- 实验
- 周)