实验八指针
实验八、九 子程序、中断程序实验
![实验八、九 子程序、中断程序实验](https://img.taocdn.com/s3/m/0ee0d4c44028915f804dc2e4.png)
实验八子程序实验一、实验目的1、掌握全局、局部变量的定义与作用;2、熟悉无参子程序和有参子程序的建立和调用方法3、进一步熟悉常用功能指令(加、减、数据类型转换、循环等(另:自学内容已经布置:数学运算指令和数据转换指令)二、实验设备TKPLC-1实验实训装置一台,装有STEP7软件的计算机一台,西门子编程电缆一根、连接导线若干。
三、实验内容与步骤1、不带参数子程序调用例子:设置存储器位或字节的几种方法(注意符号的定义与使用,其它功能指令的学习包含在子程序和中断程序实验中。
下同)本程序描述了用一定值存入预定的存储器位或字节,以及清除存储区内容的几种方法采用下列指令:FILL 设置一个或几个字FOR...NEXT FOR...NEXT循环R 对一位或几位置0输入以下子程序和主程序,注意体会各指令作用及符号的使用。
子程序0功能:如果输入I0.0=1,则把VW200中值复制到VW204至VW216子程序1功能:当输入I0.1=1时,把几个初始数复制到变量存储区。
循环次数取决于VW10中的首次循环数和VW0中的最后一次循环数。
当前循环次数存储在内存字VW20中,首次计数值(50)存储在累加器AC0中,计数值缓冲区首址(& VB100)存储在累加器AC1中,AC1为计数值缓冲区指针,每循环一次的功能:AC0的计数值存入AC1指针所指向的内存单元,AC1指针加2个字节,指向下一个内存字,AC0的计数值加4,直至最后一次循环。
子程序2的功能,使V100.0开始的176个位复位,V204.0开始的112个位复位。
2、带参数子程序的调用例子:求变量区和。
局部变量设置表:子程序功能:求VW100开始的10个数据字的和。
先将整形数转为双整型数,再加,指针值每次增2,循环10次。
注意体会各指令作用。
提醒:欲间接存取字节,将指针用一递增或递减。
欲间接存取字,将指针用二递增或递减。
欲间接存取双字,将指针用四递增或递减。
C实验报告8
![C实验报告8](https://img.taocdn.com/s3/m/2a57d5c6172ded630b1cb6bb.png)
C语言程序设计实验报告专业计算机科学与技术班级计算机0906班日期2010-5-21 成绩实验组别第 4 次实验指导教师学生姓名学号同组人姓名实验名称指针实验一、实验目的1.熟练掌握指针的说明、赋值、使用。
2.掌握用指针引用数组的元素,熟悉指向数组的指针的使用。
3.熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。
4.掌握指针函数与函数指针的用法。
5.掌握带有参数的main函数的用法。
二、实验任务1.源程序改错题下面程序是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个例子程序进行调试修改,使之能够正确执行。
#include "stdio.h"void main(void){float *p;scanf("%f",p);printf("%f\n",*p);}2.源程序完善、修改、替换题(1)下面的程序通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数,请在下划线处填写合适的表达式、语句、或代码片段来完善该程序。
(2)为了使程序不受scanf、getchar、gets等函数输入后回车符的影响,请修改第(1)题程序,按要求输出下面结果:((输入)表示该数据是键盘输入数据)1 copy string.2 connect string.3 exit.input a number (1-3) please!2 (输入)input the first string please!the more you learn, (输入)input the second string please!the more you get. (输入)the result is the more you learn,the more you get.3.跟踪调试题(1)单步执行。
进入strcpy时watch窗口中s为何值?返回main时, watch窗口中s为何值?(2)排除错误,使程序输出结果为:there is a boat on the lake.(3)选做:由于watch窗口中只显示s所指串的值,不显示s中存储的地址值,怎样才能观察到s值的变化呢?4.编程设计题(1)一个长整型变量占4个字节,其中每个字节又分成高4位和低4位。
程序设计基础(一)实验
![程序设计基础(一)实验](https://img.taocdn.com/s3/m/d8890e7658fafab069dc02aa.png)
程序设计基础(一)实验实验一上机操作初步(2学时)一、实验方式:一人一机二、实验目的:1、熟悉VC++语言的上机环境及上机操作过程。
2、了解如何编辑、编译、连接和运行一个C程序。
3、初步了解C程序的特点。
三、实验内容:说明:前三题为必做题目,后两题为选做题目。
1、输出入下信息:*************************Very Good*************************2、计算两个整数的和与积。
3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。
4、在屏幕上显示一个文字菜单模样的图案:=================================1 输入数据2 修改数据3 查询数据4 打印数据=================================5、从键盘上输入两个整数,交换这两个整数。
四、实验步骤与过程:五、实验调试记录:实验二简单的C程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握C语言的数据类型。
2、学会使用C语言的运算符及表达式。
3、掌握不同数据类型的输入输出方法。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、输入r1、r2,求出圆形垫片面积。
2、输入华氏温度h,输出摄氏温度c。
3、从键盘输入一个3位整数,将输出该数的逆序数。
4、输入并运行以下程序,分析运行结果。
#include <stdio.h>void main( ){ int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}5、输入三角形三条边的边长,求三角形的面积。
6、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
实验八 电位差计校准电表
![实验八 电位差计校准电表](https://img.taocdn.com/s3/m/1b0c3c9065ce050876321399.png)
知”端钮,“测量—输出”开关放于“测量”位置,扳键开关扳向“标准”,调 节“粗”、“微”旋钮,直到检流计指零。
扳键开关扳向“未知”,调节Ⅰ、Ⅱ、Ⅲ测量盘,使检流计指零,被 测电压(势)为测量盘读数与倍率乘积。
测量过程中,随着电池消耗,工作电流变化。所以连续使用时经常 核对“标准”,使测量精确。
(2)作讯号输出 按上述步骤,在对好“标准”后,将“测量—输出”开关旋到“输 出”位置(即检流计短路)。选择“倍率”及调节Ⅰ、Ⅱ、Ⅲ测量盘, 扳键放在“未知”位置,此时“未知”端钮二端输出电压值即为倍率与测量 示值的乘积。
2.使用方法
图ห้องสมุดไป่ตู้-9-2
Ⅰ Ⅱ
⑤ ⑦ ① ⑨ ×1 ×10 ⑥
×0.1
Ⅲ
断 ×0.1 ×1 ×5
检流计
20 - 10 10 20 +
0 ⑧
① ⑤ ② ③ ④ ⑦
(1)测量未知电压VX 倍率开关从“断”旋到所需倍率,此时电源接通,2分钟后调节“调 零”旋钮,使检流计指针示值为零。被测电压(势)按极性接入“未
仪器描述 1. 面板介绍
本实验所用UJ33a电位差计是一种便携式电位差计,所需工作电源和
标准电池均装在箱内,无须外接,其面板配置如图4-9-2所示。各部 分名称如下:①未知测量接线柱;②倍率开关;③检流计调零;④“测 量一输出”开关;⑤扳键开关;⑥工作电流调节变阻器(粗、微);⑦ 步进盘;⑧滑线盘;⑨晶体管放大检流计。
mV
+ -
接电位差计
R0 Rp K
E 图4-9-3
使用完毕,“倍率”开关放“断”位置,以免二组内附干电池无谓放 电。若长期不使用,将干电池取出。
实验内容 校准毫伏表,测量电路如图4-9-3所示。 1.校准电位差计。 2.把毫伏表全量程十等份,校准十个点的毫伏表刻度值。 3.作毫伏表校准曲线(Vx~ΔVx)。 4.确定该电压表准确度级别。 思考题 1.怎样用电位计校准电流表? 2.试设计一个简单的电路,用电位差计来测量未知电阻的阻值。 3.如被测电压大于电位差计的量程,问在不影响测量精度的情况下 应采取什么措施?
实验八 练习使用多用电表
![实验八 练习使用多用电表](https://img.taocdn.com/s3/m/c472f8c749649b6649d7470b.png)
动势和电阻“×1 k”挡内部电路的总电阻。使用
首 页
上页
下页
末 页
实验八
练习使用多用电表
结束
(3)将滑动变阻器的滑片调到适当位置,使多用电表的示数 如图实82 所示,这时电压表的示数如图实83 所示。多用电
15.0 3.60 V。 表和电压表的读数分别为____kΩ 和____
考查多用电表的读数 1欧姆表的读数 1 2 ①为了减小读数误差,指针应指在表盘 到 的部分,即中央刻度附近。 3 3 ③电阻值等于指针示数与所选倍率的乘积。 2测电压、电流时的读数,要注意其量程,根据量程确定精确度,精确度是 1、0.1、0.01 图实83 图实82 时要估读到下一位,精确度是 2、0.02、5、0.5 时,不用估读到下一位。
考查电路的故障问题 将黑表笔接在 c 点,用红表笔分别探测电路的 a、b 点。 电路故障一般分为断路和短路两种 1断路故障的判断:用电压表与电源并联,若有电压,再逐段与电路并联,若电压表 指针偏转,则该段电路中有断点。 2短路故障的判断:用电压表与电源并联,若有电压,再逐段与电路并联,若电压表 示数为零,则该并联段电路被短路。若电压表示数不为零,则该并联段电路没有被短 路或不完全被短路。
图实88
(2)如果将 1、3 接线柱用导线连接起来,1、2 接线 柱之间的电阻为________Ω。
首 页 上页 下页 末 页
解析
实验八
练习使用多用电表
结束
4.在“练习使用多用电表”的实验中: (1)在测量小灯泡的电阻时,红表笔接触点的电势比黑表笔 ________; (填“高”或“低” ) (2)某同学把选择开关打到“× 1”挡,转动欧姆调零旋钮, 发现无法调零,则他应 ________。 A.用力转动欧姆调零旋钮 B.先用螺丝刀转动指针定位螺丝机械调零 C.更换多用电表的电池 D.作报废处理,换新的多用电表
C语言程序设计实验课程简介
![C语言程序设计实验课程简介](https://img.taocdn.com/s3/m/429ca6fa58f5f61fb73666b6.png)
四川师范大学计算机科学学院《C语言程序设计》实验手册2010年2月年级: 2009级专业:计算机科学与技术班级:一班姓名:谢丹学号: 2009110156 指导教师:廖雪花《C语言程序设计》实验课程简介课程名称:C语言程序设计实验课程性质:专业必修课课程属性:专业必修课学时学分:学时32 学分1开课实验室:软件实验室面向专业:网络工程、软件工程、计算机科学与技术一、课程的任务和基本要求C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C 语言程序设计》课程而开设的实验性教育环节。
本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。
C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。
通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。
二、实验项目【实验一】最简单的C程序---顺序程序设计【实验二】逻辑运算和判断选取控制【实验三】循环结构程序设计(一)【实验四】循环结构程序设计(二)【实验五】函数【实验六】数组(一)【实验七】数组(二)【实验八】指针【实验九】结构体、共用体和文件【实验十】C程序综合性实验三、有关说明1、与其它课程和教学环节的联系:先修课程:计算机文化后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程2、教材和主要参考书目:(1)教材:《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。
(2)主要参考书目:《C语言程序设计》谭浩强主编,清华大学出版社,2003年。
三、实验内容实验一最简单的C程序---顺序程序设计(验证性实验 2学时)(一)、实验目的1.熟悉win-tc程序运行环境2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法3.掌握C语言中使用最多的一种语句——赋值语句4.掌握数据的输入输出方法,能正确使用各种格式控制符(二)、实验内容1.写出下列程序的运行结果(1)#include <stdio.h>void main(){printf(“*****************\n”);printf(“This is a c program. \n”);printf(“****************\n”);}运行结果及分析:结果:****************** 分析:在C语言中,\n表示换行,因此运行结果为三行。
C语言实验指导书44525
![C语言实验指导书44525](https://img.taocdn.com/s3/m/ec93a5fe0b1c59eef9c7b459.png)
《C语言》实验指导书2016年10月实验一 C程序的运行环境和运行方法一、实验目的1.掌握所用的C语言环境的基本操作方法。
2.掌握编辑、编译、连接和运行C程序。
二、实验内容和要求1.学习使用Visual C++6.0环境开发C程序。
(1)在磁盘上建立自己的文件夹,用于存放C程序,如“e:\cexam”。
(2)启动Visual C++6.0。
执行“开始”——“所有程序”——“Microsoft Visual Studio 6.0”——“Microsoft Visual Studio 6.0”命令,进入VC++编程环境,如图1 所示。
图1 Microsoft Visual Studio 6.0窗口(3)新建C 程序文件。
执行“文件”——“新建”命令,单击如图2所示的“文件”选项卡,选中“C++Source File”;图 2 新建文件在“文件”文本框中输入文件名test1, 则C源程序被命名为test1.cpp,若想指定扩展名为.c,则需在“文件”文本框中输入文件名test1.c;在“目录”下拉列表框选择已经建立的文件夹,如,单击“确定”按钮,就新建了C源程序文件,并显示编辑窗口和信息窗口,如图3所示,然后在编辑窗口中输入程序。
(4)保存程序。
在如图 3的界面输入程序代码。
由于完全是Windows 界面,输入及修改可借助鼠标和菜单进行,十分方便。
当输入结束后,执行“文件”——“保存”命令,保存源文件。
图 3 编辑源程序(5)编译程序。
信息窗口编辑窗口执行“组建”——“编译[test1.cpp]”命令,弹出消息框,如图4所示,单击“是”按钮,开始编译,并在信息窗口中显示编译信息。
如果信息窗口中显示“test1.obj-0 error(s),0 warning(s)”,表示编译正确,没有发现错误和警告,并生成了目标文件test1.obj。
图 4 产生工作区消息框如果显示错误信息,说明程序中存在严重的错误,必须改正,双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口的提示分别予以纠正;如果显示警告信息,说明这些错误并未影响目标文件的生成,但通常也应该改正。
C程序设计实验题目(下)[宝典]
![C程序设计实验题目(下)[宝典]](https://img.taocdn.com/s3/m/1df137f4112de2bd960590c69ec3d5bbfd0ada8d.png)
实验七函数程序设计(二)练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。
运行结果:1534练习2.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。
子函数要求:形式为:vo id delete_string(cha r str[],char ch);运行结果示例:练习3.编写一个程序,其中包含一个子函数,功能为求出一个二维数组(从键盘读入)中每列的最小元素,并依次放入一个一维数组中。
例:子函数要求:形式为:vo id fun(int tt[M][N],int pp[N]);(其中,tt是一个M行N列的二维数组,pp为存放结果的一维数组。
)*练习4.编写一个程序,功能为将一个无序数组b(包含5个元素)中的每个元素插入另一个有序数组a (包含10个元素)中的适当位置,使插入后的数组a依然有序。
其中,包含3个子函数,各函数要求如下:●子函数1:功能为读入一包含n个元素的数组;形式为:voi d i np ut(int a[],i nt n);●子函数2:功能为将一个数值x插入到包含n个元素的有序数组中;●形式为:voi d ins ert(int a[],i nt n,int x);●子函数3:功能为输出一包含n个元素的数组;形式为:voi d o ut p ut(int a[],i nt n);实验八指针程序设计(一)练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。
程序要求:练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。
程序要求:程序中对数组的处理全部使用指针方式。
练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。
函数要求:实参为指针变量,形参为数组名,且形式为:vo id insert(int x[ ], int m);其中:形参m为要插入的数据;函数无返回值。
实验8-1 指针基本概念
![实验8-1 指针基本概念](https://img.taocdn.com/s3/m/9ad0001afc4ffe473368abc4.png)
实验8-1 指针基本概念【知识点回顾】1.指针和指针变量1)内存地址:内存存储单元的编号,从0开始,以字节为单位2)指针:一个内存地址有且仅有一个内存存储单元对应,即一个地址“指向”一个单元,故将地址称为指针3)指针变量:C语言中允许将地址作为数据值,用一个变量来存放。
存放指针的变量称为指针变量。
2.指针变量使用三步骤1)声明:一般形式如:类型说明符*指针变量名;2)初始化:一般形式如:指针变量=&变量;3)访问数据:一般形式如:*指针变量3.指针运算符1)间接访问运算符“*”2)取地址运算符“&”4.printf和scanf是否使用指针对比:假定有int x,y;int *px=&x,*py=&y;1)不使用指针的输入输出语句:scanf(“%d %d”,&x,&y);printf(“%d %d”,x,y);2)使用指针的输入输出语句:scanf(“%d %d”,px,py);printf(“%d %d”,*px,*py);5.打印地址信息:1)使用%p占位符2)使用%x占位符【典型例题】1.例题1,指针的基本使用方法#include <stdio.h>int main(){int data=100;//第一种指针变量定义方式:声明与初始化分两步完成int * pd; //声明指针变量pd=&data; //初始化指针变量,注意细节,data变量必须之前声明过//下面是第二种指针变量定义方式:声明与初始化一步完成//int * pd = &data; //声明指针变量,同时初始化指针变量printf("Direct access: data = %d\n", data); //变量的直接访问printf("Indirect access: data = %d\n",*pd); //变量的间接访问printf("The address of data is %p\n", &data);//变量的地址输出printf("The address of data is %p\n",pd); //指针变量的输出return 0;}程序运行效果如下:2.例题2,两数求和。
实验八 三相鼠笼异步电动机
![实验八 三相鼠笼异步电动机](https://img.taocdn.com/s3/m/e581eca27c1cfad6195fa7bb.png)
班级姓名学号实验目地学习兆欧表、转速表、钳形表地用法.练习三相鼠笼电动机地接线、直接启动、反转地方法.预习三相异步电动机定子绕组地接法(即△和Y形).直接起动鼠笼电动机时,起动电流及其影响.降低起动电流地方法.改变鼠笼时机旋转方向地方法.附录:兆欧表及转速表、钳形表用法地简介.兆欧表地原理和使用方法兆欧表又称绝缘摇表或高阻表,是一种专门用来测量绝缘电阻地可携式仪表,在电气安装、检修和试验中,得到广泛地应用.兆欧表地读数以兆欧(ΩΩ)为单位.文档收集自网络,仅用于个人学习兆欧表地高压电源,是由手摇直流发电机产生地,故兆欧表又称摇表.手摇发电机所产生地额定电压有伏、伏、伏等几种.文档收集自网络,仅用于个人学习本实验用地是型携带式兆欧表,额定电压为伏.主要由磁电式比率计和手摇直流发电机两部分组成,可以认为是一种特殊结构地磁电式仪表.文档收集自网络,仅用于个人学习发电机地工作原理是旋转产生地电磁感应电动势,经过整流后从电刷引出,得到直流电压.使用兆欧表时应注意:选择:额定电压为伏地兆欧表,只能测额定电压伏以下地电气设备绝缘电阻,测量范围为Ω.文档收集自网络,仅用于个人学习检查:使用兆欧表之前,应将表远离磁场,水平放置平稳,然后使、端钮短接,轻轻摇动发电机,这时指针应指在“0”位上,并应立即停摇,说明兆欧表是好地,否则可能损坏.文档收集自网络,仅用于个人学习准备:绝缘电阻地测量必须在设备地线路停电状态下进行.测量前,应将被测设备表面擦开净,以免引起误差.另外应选用单股线作为兆欧表与被测设备之间地连接导,不可用双绝缘导线,否则有可能因导线绝缘不良而引起误差.文档收集自网络,仅用于个人学习接线:兆欧表有三个测量端钮,(、、),一般测量时,只用和端.端是线路端钮,应接被测导体是接地端钮,应接被测设备地“地”端,按端“保护环”,其作用是减少被测设备表面漏电流对测量值地影响,一般仅在测量电缆对地绝缘电阻时才使用.文档收集自网络,仅用于个人学习测量:测量时,从慢到快依顺时针方向摇动发电机手柄,并使它地速度保持在规定范围内(一般规定为转∕分,可以有±%地变化),切忌忽快忽慢.由于绝缘电阻加上电压后,其阻值会随时间而有所变化,因此规定以摇测一分钟后地读数为准.如果在摇测过程中,发现指针指“0”,则不能再继续摇动手柄,以防表内线圈烧毁.文档收集自网络,仅用于个人学习拆线:测量完毕后,在兆欧表没有停止转动和被设备没有放电之前,不要用手触及被测设备地测量部分或拆除导线.文档收集自网络,仅用于个人学习(二)转速表地原理和使用方法转速表是用来测量各种机器设备地旋转速度或线速度地仪表.实操中用地是型离心式手持转速表.工作原理:转速表是利用离心器旋转后,产生惯性离心与起反作用地拉力弹簧相平衡,由转动机构使指针在分度盘上指示出相应地转速.文档收集自网络,仅用于个人学习转速选择:型离心式手持转速范围共分为档:I:.单位是转分钟.文档收集自网络,仅用于个人学习测量时应首先将调速盘旋转到所要测量地范围内(即将调速盘上地刻度数值转到与分度盘处于同一水平面),便可进行测量.转速表有两圈标度尺,一条从,一条是从,若调速盘地数值在、、档,则测得地转速以分度盘外圈地数字,分别乘以、、.若调速成盘地数值在、档则测出地数值应以分度盘内较地数字分别乘以、.文档收集自网络,仅用于个人学习注意事项:不得以转速表地低速档测量高转速.根据被测轴地形状选择恰当地探头,安装在转速表地测轴上,使之与被测轴尽可能密切地接触.测轴与被测轴接触时,动作应缓慢,同时应使二轴保持在一条水平线上,不要交叉.测量时,测轴与被测轴不应顶得太过紧,以二轴接触不相对滑动为原则.转速表不能测量瞬时转速.指针偏转方向与被测轴旋转方向无关.使用时应加润滑油(钟油),可外壳及调速盘上地油孔内注入.在保管和运输过程中,应避免受到冲击,日晒和雨雪侵袭.转速表应与腐蚀剂分开存放,其周围气温最好在摄氏度到摄氏度,最高湿度不要超过%. 测量时,应等指针稳定后再读数.⑾转速表在使用时,指针摆动地摆幅不超过.⑿使用转速表时,要拿稳,防止跌落地面,造成损坏.(三)钳形电表地使用概述测量电流时,有些场合不能断开电路,这时可以使用钳形电流表.下面以型钳形交流电流电压表为例来进行介绍.这种钳形交流电流电压表由电流互感器和电流表组成,该表只能测量交流和电压,仪表共有二条标度尺,一条供测交流电流用,一条供测交流电压用.测量范围为:,.测量交流电压时,只需将二笔地一端插入表上插孔内,另一端分别接到待测电压两端.测量交流电流时,掐紧钳形电流表上地扳手,使电流互感器地钳口张开,被测导线不必断开就可以放在口中间,再松开扳手,使铁芯闭合.这时,位于铁芯中间地载流导线就相当于电流互感器地一次线圈,导线中地交流电流产生交变磁场,在电流互感器地二次线圈中产生感应电流.二次线圈与测量机构连接,通过电流表即可测定被测电流地大小.使用钳形电流表测量电流时,应注意几个问题:选择适合地量程档.钳口套入导线后,钳口应完全闭合.测量小电流时,应将被测导线多绕几圈后放在钳口地中间,但实际值是测量值除以圈数.实验内容及步骤(一)、实验前地准备工作抄录电机铭牌,了解铭牌上各项技术参数地含义.了解出线盒上各线端是如何引出地,用万用表测量并记录定子三相绕组地电阻值,(功率较大地电机,绕组导线截面较大,电阻值很小,万用表只能用来判断其通、断状态)三相绕组地电阻分别是:文档收集自网络,仅用于个人学习文档收集自网络,仅用于个人学习用兆欧表测量电机地绝缘电阻.各相绕组对地(地即机壳)地绝缘电阻.(单位为兆欧)文档收集自网络,仅用于个人学习各相绕组之间地绝缘电阻.文档收集自网络,仅用于个人学习用手转动电机转子,确认转子是否正常无阻.检查三相闸刀开关中熔丝是否合用.熔丝可用不同材料制成,其规格是直径及额定电流,三相鼠笼电动机电路地熔丝可按电机额定电流地()倍选用.(降低起动用,全压地为)文档收集自网络,仅用于个人学习例:ω伏安地电机,在线电压为伏地电源中使用时,电机接成.轻载起动时熔丝额定电流为×安,查表可知.选用直径为地铅锡合金熔丝便可.(其额定电流为安,略大于计算地结果).文档收集自网络,仅用于个人学习根据实验用电机地铭牌数据及实验用电源地电压条件,确定空载起动时,铅锡合金熔丝地直径为,装上适合地熔丝.文档收集自网络,仅用于个人学习(二)、直接起动实验、连接实验线路根据实验条件,将电机接成(?Δ?)从电机接线盒引出三根电线,分别接到三相开关熔断器地一端.、清理电机周围杂物,用手旋转电机,确认无阻碍后闭合三相开关,起动电机,用手持转速表测量电机地空载转速转∕分.、测量线电流.()()()研究这些数据、用万用表测量三相绕组端电压.电源电压为:、三相开关停车,停车过程中注意看清电机地旋转方向.(记录下来)(三)、反转实验拆开引入电机接线盒中三根电线地任意两根对调接好,重新起动电动机.停车过程中注意观察电机地旋转方向是否已改变.作业:根据本实验电动机铭牌数据求:()、电机地磁极对数.()、额定转矩.()、额定转差率.()、额定负载时(ψ)电机地额定效率是多少?。
C语言 实验八 结构体和共用体实验
![C语言 实验八 结构体和共用体实验](https://img.taocdn.com/s3/m/304db31052d380eb62946d2f.png)
信息工程学院通信专业 2 班成绩评定_______学号******** 姓名*** (合作者____号____)教师签名_____实验八题目结构体和共用体实验第21周星期一第6~7节一、实验目的与要求1、掌握结构体类型的概念和定义方法以及结构体变量的定义和应用。
2、掌握指向结构体变量的指针变量的概念和应用,特别是链表的概念和应用。
3、掌握运算符“.”和“->”的应用。
4、掌握共同体的概念和应用。
二、实验内容和步骤1、程序功能:输入具体的年、月、日,输出该日期是这一年的第几天。
请将空白处填补好。
#include<stdio.h>static int day_tab[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};struct date{int day;int month;int year;int yearday;char mon_name[5];};day_of_year(struct date *p ){int i,day,leap;leap=!(p->year %4!=0);day=p->day;for(i=1;i<p->month;i++)day+=day_tab[leap][i];p->yearday=day;return 0;}struct date w;void main(){printf("input year_month_day please:\n");scanf("%4d%2d%2d",&w.year,&w.month,&w.day);day_of_year(&w);printf("the yearday is:%d\n",w.yearday);}3、下面的程序旨在建立一条单项链表(a1-a2-...-an),然后将此链表逆置成(an-a(n-1)-...-a2-a1)。
实验八、输入输出实验
![实验八、输入输出实验](https://img.taocdn.com/s3/m/344613d22b160b4e767fcfbc.png)
实验八、输入/输出实验一、实验目的了解模型机输出寄存器的结构及控制方法,掌握手动输出控制和程序输出控制的基本方法,以便学会与外设之间的数据交换方法。
二、实验要求使用CP226实验平台,完成数据的输入与输出控制,并能得到准确的实验结果。
三、实验内容分别采用手动控制方式(脱机方式)和微程序控制方式(联机方式)以BCD码的方法输入和输出两位学生学号的后两位(假设学号分别为10112025、10112008,则后两位的BCD 码分别是25H和08H)。
其具体内容如下:1.采用手动控制方式,将某位学生学号以BCD码的方式通过IN寄存器输入到累加器A,然后再输出到输出寄存器OUT中(IN寄存器的输入端内部已经连接到了K23..K16,所以不必再连线,此时J1要与J2相连);2.采用微程序控制方式,将某位学生学号以BCD码的方式输入到累加器A,然后在输出到输出寄存器OUT中。
相关的代码如下:IN ;通过输入寄存器IN输入数据到累加器A中,数据在K23..L16上OUT ;将累加器A中数据输出到输出寄存器OUT,结果可以从LED灯上看出IN ;通过输入寄存器IN输入数据到累加器A中,数据在K23..L16上OUT ;将累加器A中数据输出到输出寄存器OUT,结果可以从LED灯上看出END请在微程序控制的层面上跟踪和分析上述指令的执行过程,并完成程序跟踪表8-1。
表8-1:程序跟踪表(只跟踪前两条指令)四、实验电路下面是输入寄存器IN、输出寄存器OUT和输出选择器的电路图图8-1 输入寄存器IN的电路图图8-2 输出寄存器OUT的电路图图8-3 数据输出到总线的选择电路图五、实验接线与控制信号设置1.实验内容1(手动方式)手动方式的实验连线请同学们自己考虑完成,这里要注意:写入累加器时AEN=0、OUTEN=1,而写入OUT寄存器时,AEN=1、OUTEN=0。
2.实验内容2(联机方式)联机实验要注意下述连接:●拔掉实验仪上所有的手工连接的接线;●用8 芯电缆连接J1 和J2;●将控制方式开关KC拨到“微程序”方向。
推荐-实验八 Intranet基本服务的配置 精品
![推荐-实验八 Intranet基本服务的配置 精品](https://img.taocdn.com/s3/m/affaf0b402768e9950e738bb.png)
实验八 Intranet基本服务的配置一.实训目的1.掌握在Windows server 20XX下DNS服务器的配置方法,从而加深对域名解析服务的理解。
2.掌握DHCP服务器的配置方法,了解如何在局域网中设置DHCP服务器使客户机获得IP地址。
3.掌握WINS服务器的配置方法,从而加深对名称解析服务的理解。
4.掌握WEB服务器的配置方法,了解WEB的工作原理(使用IIS信息服务器)5.掌握FTP服务器的配置方法,了解FTP的工作原理(使用IIS信息服务器)6.掌握如何设置共享文件夹。
7.掌握远程桌面管理。
二.实训内容1.利用PC虚拟机已安装的Windows Server20XX操作系统平台,配置DNS、DHCP、WINS、、FTP服务器。
2.在Windows server20XX下设置共享文件夹。
3.远程桌面管理。
三.实训环境的搭建PC机电脑一台并安装了Windows server 20XX。
系统配置了TCP/IP。
四.实训操作实践与步骤(配置DNS、DHCP、WINS、及FTP服务)(一)配置DNS服务器要配置DNS服务器,可以按以下步骤进行:1.启动DNS管理控制台。
选择“开始”/“程序”/“管理工具”/“DNS”命令,出现图1所示的DNS服务器管理窗口。
窗口中有“事件查看器”、“正向搜索区域”和“反向搜索区域”三个项目。
“正向搜索区域”是指利用该区域中的记录完成“域名”到“IP”的解释工作。
“反向搜索区域”是指利用管理区域中的数据完成从“IP”到“域名”的解释工作。
图1 DNS服务器管理对话框2.新建正向查找区域在图1中,鼠标右击“正向查找区域”,选择“新建区域”命令,在图2所示的对话框中单击“下一步”按钮,出现图3所示的“区域类型”对话框,选择“主要区域”;单击“下一步”按钮,出现图4所示的“Active Directory区域复制作用域”对话框,选择“至Active Directory域.中所有域控制器”;单击“下一步”按钮,在图5所示的“区域名称”对话框中,输入区域名称,如.;单击“下一步”按钮,在“动态更新”对话框中,选择“只允许安全的动态更新(适合Active Directory 使用)”,如图6所示;单击“下一步”按钮,出现“正在完成新建区域向导”对话框,如图7所示,单击“完成”按钮。
C语言程设计实验与案例周信东主编实验八 指针
![C语言程设计实验与案例周信东主编实验八 指针](https://img.taocdn.com/s3/m/af17b72a581b6bd97e19ea24.png)
实验6 指针学号:1700200224姓名:莫新锋实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。
(2)掌握指针的运用方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针的概念及其使用方法。
二、实验内容完成实验指导书中的实验八“基础部分”和“增强部分”的题目。
实验九的内容由同学自行选作。
三、实验步骤及结果【基础题】:Ex8-1请在下面分别插入改正错误后的源程序代码及运行成功时的画面源程序代码:请在此粘贴修改后正确的程序代码。
、#include<stdio.h>//#define N 12void main(){int j, a[12],*p=a;//p=&a[N];for(j=1;j<=12;j++)scanf("%d",p);for(j=1;j<=12;j++){printf("%d",p++);if(j%4==0)printf("\n");}}运行结果:请在此粘贴本程序运行结果的截图Ex8-2请在下面插入该程序的运行结果的画面:运行结果:#include<stdio.h>swap(int *pl,int *p2){int p;p=*pl;*pl=*p2;*p2=p;}void main(){int n1,n2,n3;int *p1,*p2,*p3;printf("Input n1,n2,n3: ");scanf("%d,%d,%d",&n1 ,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if (n1>n2)swap(p1,p2);if (n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf("The result is:%d %d %dn",n1,n2,n3);}请在此粘贴本程序运行结果的截图试用解释本程序是如何通过指针参数p1、p2改变主函数main中的变量n1、n2、n3的值的?请回答问题将n1,n2,n3的地址分别给p1,p2,p3,通过对n1,n2,n3两两的比较,调用函数swap进行排序,进而得到新的地址排序后输出【增强题】:Eh8-1请在下面分别完成本题的源程序代码及运行结果的画面:源程序代码:请在此粘贴完成本题的程序源代码。
高中物理:实验八研究电磁感应现象
![高中物理:实验八研究电磁感应现象](https://img.taocdn.com/s3/m/71c204645022aaea988f0f2f.png)
研究电磁感应现象实验目的将灵敏电流计与线圈一起串联接入闭合电路,通过以不同的方式改变穿过该线圈的磁通量,观察电流表指针是否偏转及偏转方向,从而研究、总结产生电磁感应现象的条件,归纳判定感应电流方向的规律。
实验器材有软铁棒做铁芯的原线圈A、副线圈B,灵敏电流计一只,滑动变阻器,电池,保护电阻(阻值约几千欧)、开关、导线若干准备作业1.产生电磁感应现象的条件是:。
2.当穿过副线圈的磁通量增加时,感应电流的磁场方向与原磁场方向;当穿过副线圈的磁通量减少时,感应电流的磁场方向与原磁场方向。
实验步骤1.首先查明电流表指针的偏转方向和电流方向的关系。
具体的作法是:将灵敏电流计、保护电阻(阻值约几干欧)、开关S串联,并与电池成串联电路,如图所示。
闭合开关,观察、判定电流表指针偏转方向与通过的电流方向之间的关系。
如图所示。
2.将原线圈A、滑动变阻器、电池(1)和开关(6)串联成一个电路,将灵敏电流计G线圈B 串联成另一个电路。
将滑动变阻器值调到最大,如图所示。
①打开、闭合电键把原线圈插在副线圈中不动,观察闭合电键和断开电键的瞬间,电流表指针是否偏转。
②移动滑动变阻器的滑片把原线圈插在副线圈中不动,闭合电键后,迅速移动变阻器的滑动片,观察电流表指针是否偏转。
③改变原线圈和副线圈的相对位置(插入或拔出副线圈)根据实验装置图,按下电键,使原线圈通电。
把原线圈从副线圈中插入或拔出时,观察电流表指针是否偏转。
把原线圈插在副线圈中不动,闭合电键后,迅速插入或拔出铁芯,观察电流表指针是否偏转。
④插入或拔出铁芯相关习题1.(2004黄浦)关于“研究电磁感应现象”实验的注意事项,下列说法正确的是()(A)原副线圈接入电路之前,应查清其绕制方向(B)原线圈电阻很小,通电时间不宜过长,以免损坏电源和原线圈(C)无论用什么方法使电流表指针偏转,都不要使表针偏转角度过大,以免损坏电流表(D)在查明电流方向与电流表指针偏转方向关系时,应直接将电源两极与电流表两接线柱相连2.(2006上海)在研究电磁感应现象实验中,(1)为了能明显地观察到实验现象,请在如图所示的实验器材中,选择必要的器材,在图中用实线连接成相应的实物电路图;(2)将原线圈插入副线圈中,闭合电键,副线圈中感生电流与原线圈中电流的绕行方向(填“相同”或“相反”);(3)将原线圈拔出时,副线圈中的感生电流与原线圈中电流的绕行方向(填“相同”或“相反”)。
计算机实验报告
![计算机实验报告](https://img.taocdn.com/s3/m/923989bbcaaedd3382c4d39d.png)
计算机实验报告C语言程序设计实验实验指导实验一 Visual C++6.0开发环境使用大气科学专业实验日期 4月 18日姓名:学号1(实验目的(1)熟悉Visual C++6.0集成开发环境。
(2)掌握C语言程序的书写格式和,语言程序的结构。
(3)掌握C语言上机步骤,了解C程序的运行方法。
(4)能够熟练地掌握C语言程序的调试方法和步骤2. 实验内容输入如下程序,实现两个数的乘积。
#include (stdio.h);int main(){x=10,y=20p=prodct(x,t)printf("The product is : ",p)int prodct(int a ,int b )int cc=a*breturn c}(1)在编辑状态下照原样键入上述程序。
C语言程序设计实验(2)编译并运行上述程序,记下所给出的出错信息。
(3)再编译执行纠错后的程序。
如还有错误,再编辑改正,直到不出现语法错误为止。
C语言程序设计实验3(分析与讨论(1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论成功或失败的原因。
(2)总结,程序的结构和书写规则。
实验心得:通过本次实验,我了解到C语言的特点,初步认识程序设计方法和程序设计一般步骤,掌握C语言程序编译、链接和运行过程,为我进一步学好C语言打下了基础。
C语言程序设计实验实验二数据类型、运算符和表达式大气科学专业实验日期4 月 25日姓名:刘园园学号201513013271(实验目的(1)理解常用运行符的功能、优先级和结合性。
(2)熟练掌握算术表达式的求值规则。
(3)熟练使用赋值表达式。
(4)理解自加、自减运算符和逗号运算符(5)掌握关系表达式和逻辑表达式的求值2(实验内容(1)整数相除#include<stdio.h>int main(){int a=5,b=7,c=100,d,e,f;d=a/b*c;e=a*c/b;f=c/b*a;printf("d=%d , e=%d ,f=%d\n",d,e,f);return 0;}(2)自加、自减运算#include<stdio.h>int main(){int a=5,b=8;printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0;}C语言程序设计实验(3)关系运算和逻辑运算#include<stdio.h>int main(){int a=5,b=8,c=8;printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c);printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b));return 0;}C语言程序设计实验(1)在编辑状态下输入上述程序。
指针实验报告结果讨论
![指针实验报告结果讨论](https://img.taocdn.com/s3/m/4ae5a90ea9956bec0975f46527d3240c8447a138.png)
指针实验报告结果讨论引言指针是C语言中一种重要的数据类型,它可以存储变量的内存地址。
指针的使用可以帮助我们在程序中更加灵活地操作内存,提高程序的执行效率。
本实验旨在通过对指针的实验,来验证指针的使用方式和效果,并讨论其在程序设计中的应用。
实验结果在实验过程中,我们通过编写C程序来进行指针的操作和应用。
在实验一中,我们编写了一个简单的程序,通过指针来交换两个变量的值。
实验二中,我们编写了一个程序,通过指针来实现数组元素的逆序排列。
在实验三中,我们通过指针来实现动态分配内存,并在程序运行过程中动态改变内存空间的大小。
实验结果显示,指针的使用确实可以提高程序的执行效率。
在实验一中,通过指针交换变量的值,只需要进行一次赋值操作,而不需要额外的变量来保存中间值,节省了内存空间,并提高了程序的执行速度。
在实验二中,通过指针进行数组元素的逆序排列,同样只需要进行一次赋值操作,而不需要额外的数组来存储逆序后的结果。
而在实验三中,通过指针来动态分配内存,可以根据实际需求来动态改变内存空间的大小,从而提高程序的灵活性和可扩展性。
结果讨论指针的使用在程序设计中有着广泛的应用。
首先,通过指针可以实现变量的间接访问,可以通过指针修改变量的值,或者通过指针获取变量的地址等。
这种间接访问方式可以帮助我们更加灵活地操作内存,同时也可以提高程序的效率。
其次,指针的使用可以减少内存的占用,在一些需要频繁操作内存的场景中尤为重要。
例如,在实验二中,通过指针进行数组元素的逆序排列,只需要进行一次赋值操作,而不需要额外的数组来保存逆序后的结果,从而减少了内存的占用。
最后,通过指针可以实现动态内存分配,可以根据实际需要来动态改变内存空间的大小,提高程序的灵活性和可扩展性。
然而,指针的使用也有一些需要注意的地方。
首先,指针的使用需要谨慎,容易出现一些常见的错误,例如空指针引用、野指针等。
这些错误在程序中很难调试,容易导致程序崩溃或产生不可预期的结果。
实验八_ARM处理器工作模式与堆栈指针实验
![实验八_ARM处理器工作模式与堆栈指针实验](https://img.taocdn.com/s3/m/364c77295727a5e9856a6113.png)
实验八 ARM处理器工作模式与堆栈指针设置实验1 实验目的(1) 通过实验掌握学会使用MSR和MRS指令实现ARM工作模式的切换,观察不同模式下的寄存器,尤其是状态寄存器,加深对CPU的理解;(2) 掌握ARM堆栈指针SP的设置方法和意义,在设置好的堆栈中压入适当的数据,并使用寄存器窗口、存储器窗口观察。
2 实验内容(1) 主要内容①ARM9处理器支持7中工作运行模式(如表1)特权模式:又称非用户模式。
是指除用户模式以外的6种模式。
在这些模式下程序可以访问所有的系统资源,也可以任意地进行处理器模式切换。
用户模式下是不允许模式切换的。
异常模式:是指除用户模式和系统模式以外地5种模式,常用于处理中断。
异常模式有:●FIQ(Fast Interrupt ReQuest)●IRQ(Interrupt ReQuest)●管理svc(Supervisor)●中止abt(Abort)●未定义und(Undefined)在特定地异常出现时,进入相应的模式。
某种模式都有附加的寄存器,以避免出现异常时用户模式的状态不可靠。
在软件的控制下可以改变模式,外部中断和异常也可以引起模式发生改变。
大多数应用程序在用户模式下执行。
当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的处理器资源,也不能改变模式,除非异常(Exception)发生。
这允许适当编写操作系统来控制系统资源的使用。
ARM9体系结构的异常类型和异常处理模式(如表2)表2②状态寄存器CPSR/SPSR以及对其进行的访问●状态寄存器CPSR和SPSR:包含了条件码标志,中断禁止位,当前处理器模式以及其它状态和控制信息。
每种异常都有一个程序状态保存寄存器SPSR,当异常出现时SPSR用于保存CPSR的状态值。
CPSR和SPSR的格式如下:状态位:位31-28依次为N、Z、C、V分别表示符号位Negative、零位Zero、进位位Carry和溢出位Overflow。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机实验八指针一.目的要求1.掌握指针的基本概念。
2.掌握指针变量的定义和初始化。
二.实验内容【实验题1】程序填空,交换指针p1,p2所指向的变量。
# include <stdio.h>void main ( ){ int a=1,b=2, *p1, *p2, *pt;p1=&a; p2=&b;printf(“p1=%d, p2=%d \n”, p1,p2);//交换指针变量p1,p2所指向的变量pt= p1; p1=p2 ; p2=pt; //注意:这三个指针变量前均无间接引用符* printf(“p1=%d, p2=%d \n”, p1,p2);}运行结果:(注意:输出的是p1、p2所指变量的地址,即变量a或b的地址)【实验题2】程序填空,交换指针p1,p2所指变量的值。
# include <stdio.h>void main ( ){ int a=1,b=2, *p1, *p2, temp;p1=&a; p2=&b;printf(“*p1=%d, *p2=%d \n”, *p1,*p2);//交换p1,p2所指向的变量的值temp= *p1 ; *p1= *p2 ; *p2= temp ; //注意:temp是普通变量,而指针p1,p2前均使用间接引用符* printf(“*p1=%d, *p2=%d \n”, *p1,*p2);}运行结果:(注意:指针前加*, 代表指针所指变量)【实验题3】程序填空:输入三个整型变量i,j,k的值。
请设置三个指针变量p1,p2,p3,分别指向i,j,k。
然后通过p1,p2,p3使i,j,k三个变量的值依次交换,即原来i的值赋给j, 原来j的值赋给k, 原来k的值赋给i。
输出交换后i,j,k的值。
i jk分析:三个值轮换跟两个值互换是一样的原理,在变量被赋新值之前必须保证原值已经被保存。
设temp 为临时变量,则temp=i; i=k; k=j; j=temp ,参考以上做法,轮换时要求用指针p1,p2,p3来替代i,j,k. 源程序:#include <stdio.h>void main ( ){ int i,j,k,temp, *p1=&i ,*p2=&j ,*p3=&k ;printf("Input i j k: "); scanf("%d%d%d",&i,&j,&k); //输入i j k//i-->j-->k-->itemp=*p1 ;*p1= *p3 ;*p3= *p2 ;*p2 = temp;printf("%d %d %d \n", *p1,*p2, *p3);//输出轮换后的i j k}输入:1 2 3输出:3 1 2【实验题4】程序填空:输入三个整数,要求设计2个指针变量p1,p2 ,使p1指向这三个数的最大值,p2指向最小者 ,并输出最大值和最小值。
# include <stdio.h>void main ( ){ int a,b,c, *p1, *p2, *p3;scanf(“%d%d%d”,&a,&b,&c);// 令p1指向最大值p1=a>b? &a: &b ; //p1指向a,b中较大者if(c> *p1 ) p1=&c;//令p2指向最小值p2=a<b? &a:&b ; //p2指向a,b中较小者if(c< *p2 ) p2=&c;printf(“max=%d, min=%d”, *p1,*p2 );}运行结果:输入1 2 3输出max=3, min=1【实验5】程序设计(冒泡排序):输入8个实数,要求用冒泡法将这8个实数按降序排列,输出排序结果。
# include <stdio.h>void main ( ){ double a[8], temp, *p,*q;//输入数组printf(" Input 8 doubles:\n");for( p=a; p<a+8 ; p++) scanf("%lf", p);//冒泡法 for(q=a+7; q >a ; q --) for (p=a; p<q; p++)if(*p>*(p+1) ) {temp=*p; *p=*(p+1); *(p+1)=temp;}//输出排序后的数组printf("After sorted: ");for( p=a; p<a+8; p++) printf("%f ", *p);}Part 2: 指针与数组【实验题1】程序填空:请用下标、数组名、指针等不同方法来输出数组元素。
方法1:用下标引用数组元素,源程序如下: #include <stdio.h> void main ( ) { int i, a[5]={1,2,3,4,5}; for ( i=0 ; i<5 ; i++ ) printf("%d ", a[i] ); printf("\n"); } 方法3: 用指针和下标引用数组元素,源程序如下: #include <stdio.h> void main ( ) { int i, a[5]={1,2,3,4,5}, *p; for ( p=a , i=0 ; i<5 ; i++ ) printf("%d ", *( p+i )或 p[i] ); printf("\n"); }【实验题2】程序填空:利用指针,将数组a 中的10个整数按相反顺序存放.源程序如下:#include <stdio.h>void main ( ){ int i,t, a[10],*p,*q;printf("Input 10 integers:");for (i=0; i<10; i++) scanf("%d", &a[i] );p= a ; q= a+9 ; //p 指向首元素,q 指向最后一个元素for ( ; p<q ; p++ , q-- ){ //逐对交换对称元素t= *p; *p= *q; *q=t;} 或者for(i=0; i<10; i++) printf("%d ", a[i] );printf("\n");}【实验题3】程序填空:自定义函数del(s), 功能是删除字符串s中的数字字符, 要求使用字符处理函数isdigit()和字符串处理函数strcpy()。
在主函数中输入1个字符串,然后调用函数del(), 用于删除其中的数字字符,并输出处理后的字符串。
提示:从字符串s的首字符开始, 到结束符’\0’之前为止,逐个检查第i个字符是否是数字字符,是则删除该字符——使用字符判别函数isdigit(s[i]), 如果s[i]是数字字符,该函数返回1,否则返回0. 难点:如何删除s的第i个字符?——使用字符串复制函数strcpy(), 将子串s+i+1(从字符s[i+1]开始的子串)复制到给s+i (从字符s[i]开始的子串),即strcpy(s+i, s+i+1)。
#include <stdio.h>#include < ctype.h >#include <string.h>void del( char *s); //line 4 函数声明void main(){ char str[80];gets( str); //输入字符串strdel(str ); //调用函数del(),删除str中的数字puts(str); //输出字符串str}void del(char *s) //line 12 函数定义{ int i=0;while(s[i]!='\0')if(isdigit(s[i]) ) strcpy( s+i, s+i+1); // 如果字符s[i]是数字,用函数strcpy删除它else i++; // 否则,继续查看下一个字符}运行程序,输入字符串"a1b2<c3d4",输出结果是:ab<cd语句行line 4和line 12分别是函数声明和函数定义首部,其中的参数采用了指针的形式,此外,还可采用数组名的形式,即亦可写为void del( char s[] )【实验题4】分析程序运行结果,源程序如下#include <stdio.h>#include <string.h>void main(){ char *s1="****", *s2="****";while (*s2!='\0') {puts(s1+strlen(s2)-1 );s2++;}}运行程序运行时,共循环4次,每次输出一行字符串,其中1)第1行输出:* ,此时,字符串s2= "****" , strlen(s2)= 4 , s1+strlen(s2)-1= s1+ 3 ;2) 第2行输出:** ,此时,字符串s2= "***" , strlen(s2)= 3 , s1+strlen(s2)-1= s1+ 2 ;3) 第3行输出:*** ,此时,字符串s2= "**" , strlen(s2)= 2 , s1+strlen(s2)-1= s1+ 1 ;4) 第4行输出:**** ,此时,字符串s2= "*" , strlen(s2)= 1 , s1+strlen(s2)-1= s1+0 .【实验题5】程序填空:用选择法将5个字符串“Zhao”、“Qian”、“Sun”,“Li”,“Wang”按降序排序,并输出(要求:使用字符型指针数组)#include<stdio.h>#include<string.h> //Line 2void main(){ char*name[5]={"Zhao", "Qian", "Sun","Li","Wang"}, *s; //1个指针对应1个字符串,共5个字符型指针int i,j,k;for(i=0; i< 4 ; i++) {k= i;for(j= i+1 ; j< 5 ; j++)if(strcmp(name[j], name[k]) >0 ) k= j; //注意:是降序s= name[i] ; name[i]= name[k] ; name[k]= s ; //交换name[i]与name[k] }for(i=0; i<5; i++) puts( name[i] ); //输出排序后的字符串}运行程序,结果显示为:——如果删除语句行Line2,程序是否能正常编译?为什么?--不能,因为要使用字符串比较函数strcmp,必须要包含string.h。