实验7 指针
C语言实验-第七章-第九章2

实验七:指针的应用【实验目的】1.掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系;2.掌握指针变量的定义和初始化,指针变量的引用方式;3.能正确使用数组的指针和指向数组的指针变量;【实验内容】1.填空题输入一个字符串,将其中的大写字母转换成小写字母,然后输出本程序主要是比较scanf()输入和gets()输入的区别#include <stdio.h>void main(){ char s[20];char *p=s;scanf(“%s”,p); /*注意用scanf()输入和gets()输入的区别*/while( 1 ){if( 2 ) *p=*p+ (‘a’-‘A’);p++ ;}puts ( 3 );}答案:1、*p!=’\0’2、(*p>='A')&&(*p<='Z')3、s运行结果:输入:Program输出:program输入:This is Program输出:this提示:scanf ()输入时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。
如键入any boy并回车,则2。
补充程序题输入15个整数存入一维数组,再按逆序重新调整该数组中元素的顺序然后再输出。
下面给出部分程序的内容,请将程序补充完整,然后上机调试。
部分程序清单如下:#include <stdio.h>void main(){ int a[15],*p1,*p2,x;for(p1=a;p1<a+15;p1++)scanf("%d",p1);for(p1=a,p2=a+14;p1<a+7;p1++,p2--){ x=*p1;*p1=*p2;*p2=x;}……}答案:for(p1=a;p1!=a+15;p1++)printf("%d ",*p1); // %d后面有一个空格运行结果:输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1提示:(1)在整型数组中,没有结束标志,必须依靠数组中数据元素的个数控制循环次数。
C语言教材第七章指针实验

C语⾔教材第七章指针实验第七章指针第⼀部分知识训练【知识要点】1. 地址与指针指针变量的概念:⽤⼀个变量专门来存放另⼀个变量的地址。
2. 指向变量的指针变量指针变量的形式:基类型 *指针变量名;&: 取地址运算符;*:指针运算符。
3. 指针与数组引⽤⼀个数组元素可以⽤下标法和指针法;可以⽤数组名作函数的参数。
4.指针与函数函数指针变量定义的⼀般形式为:类型说明符 (*指针变量名)();⼀个函数的返回值可以是⼀个函数。
【典型习题与解析】5. char * const p;char const * pconst char *p上述三个有什么区别?【解析】char * const p; //常量指针,p的值不可以修改;char const * p;//指向常量的指针,指向的常量值不可以改;const char *p; //和char const *p。
6. main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}输出结果是什么?【解析】答案:输出:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执⾏结果是2,5。
&a+1不是⾸地址+1,系统会认为加⼀个a数组的偏移,是偏移了⼀个数组的⼤⼩(本例是5个int)。
1)&a是数组指针,其类型为 int (*)[5];⽽指针加1要根据指针类型加上⼀定的值,不同类型的指针+1之后增加的⼤⼩不同。
2)a是长度为5的int数组指针,所以要加 5*sizeof(int),所以ptr实际是a[5],但是prt与(&a+1)类型是不⼀样的(这点很重要),所以prt-1只会减去sizeof(int*) a,&a的地址是⼀样的,但意思不⼀样。
3)a是数组⾸地址,也就是a[0]的地址,&a是对象(数组)⾸地址,a+1是数组下⼀元素的地址,即a[1],&a+1是下⼀个对象的地址,即a[5]。
实验7 用球体法测量导热系数实验

实验7 用球体法测量导热系数实验一、实验目的1. 学习用球体法测定粒状材料导热系数的方法。
2. 了解温度测量过程及温度传感元件。
二、实验原理1.导热的定义;导热是指物体内的不同部位因温差而发生的传热,或不同温度的两物体因直接接触而发生的传热。
2.温度场非稳态t=f (x,y,z,ι) 稳态t=f(x,y,z) 一维稳态t=f(x)上式中x,y,z 为空间坐标,ι为时间 3温度梯度等温面法向温度增量△t 与距离 n 的极限比值的极限。
即: grad ntn n t t n t ∂∂=∆∆=→∆lim。
4傅里叶定律 热流密度 Q=-λn t ∂∂=-λdxdtQ=mw5.导热系数λ=-dxdt q λ;为导热系数,w/m.k6.影响λ 的因素1),温度、密度、湿度及材料的种类的等因素。
2), 与温度呈线性关系()bt m +=10λλ7.球体法适用于测定颗粒状(或粉末)材料的导热系数。
如图7—1所示。
热导率是表征材料导热能力的物理量,其单位为W/(m ·K),对于不同的材料,热导率是不同的。
对于同一种材料,热导率还取决于它的化学纯度,物理状态(温度、压力、成分、容积、重量和吸湿性等)和结构情况。
各种材料的热导率都是专门实验测定出来的,然后汇成图表,工程计算时,可以直接从图表中查取。
球体法就是应用沿球半径方向一维稳态导热的基本原理测定粒状和纤维状材料导热系数的实验方法。
设有一空心球体,若内外表面的温度各为t 1和t 2并维持不变,根据傅立叶导热定律:drdtr dr dt Aλπλφ24-=-= (1) 边界条件2211t t r r t t r r ====时时 (2)1、若λ= 常数,则由(1)(2)式求得122121122121)(2)(4d d t t d d r r t t r r --=--=πλπλφ[W])(2)(212112t t d d d d --=πφλ [W/(m ·K)] (3)2、若λ≠ 常数,(1)式变为drdtt r )(42λπφ-= (4) 由(4)式,得dt t r dr tt r r ⎰⎰-=2121)(42λπφ 将上式右侧分子分母同乘以(t 2-t 1),得 图7—1 球壳导热过程)()(4121222121t t t t dtt rdr t t r r ---=⎰⎰λπφ (5) 式中1221)(t t dtt t t -⎰λ项显然就是λ在t 1和t 2范围内的积分平均值,用m λ表示即1221)(t t dtt t t m -=⎰λλ,工程计算中,材料的热导率对温度的依变关系一般按线性关系处理,即)1(0bt +=λλ。
实验7

师生互动 规律总结
[例1]
用螺旋测微器(千分尺)测小球直径时,示数如图2
所示.这时读出的数值是________,单位是________.
图2
高三总复习· 人教版· 物理
[解析]
本题解答的关键是掌握螺旋测微器的原理和读数
规则.从固定刻度部分可读出毫米数和半毫米数,读数为8 mm(半毫米刻度线未露出,无读数),再从转动刻度上读出小 数部分:0.469 mm,其中千分位为估读数,两部分读数相加为 8.469 mm.评分标准为8.468~8.470 都给分. [答案] 8.469 mm
高三总复习· 人教版· 物理
7.求R的平均值可用两种方法:第一种是用R=U/I算出 各次的测量值,再取平均值;第二种方法是用图象法(U—I图线) 来求出.若采用图象法,在描点时,要尽量使各点间的距离拉 大一些,连线时要尽可能地让各点均匀分布在直线的两侧,个 别明显偏离较远的点可以不予考虑. 特别提醒 两个定律把ρ定,测U测I测直径,l测量莫松动,为减误 差Ⓐ外接,通过电流要适宜,变阻器使用记心中.
图6
高三总复习· 人教版· 物理
①____________________________________; ②___________________________________.
E 20 解析: 最大电流 Im= = A=800 μA, 故电流表应选 Rx 25×103 B.电源电动势 20 V,电压表 D 的量程为 50 V,测量误差过大, 故应选 C. ①R0= RARV = 0.3×500 kΩ= 150 kΩ<Rx ,故电流表应 采用内接法. ②由于滑动变阻器最大阻值比被测电阻小很多,为了便于调 节和为了保证电表的安全,滑动变阻器应采用分压式接法.
实验7.电位差计的原理和使用

班别
姓名 学号
大学物理Ⅱ 电位差计的原理和使用 实验地点
用电压表粗测待测电动势的电池端电压,合上 Kp,调节 Ep 或 Rp,使得电阻丝 AB
之间的电压略大于 E,和 Ex. 开关 K 投向“1” ,保护电阻 R 先调到最大,然后,一方面逐渐 减少保护电阻(直至减到零) ,另一方面适当地反复调节 M、N 的位置,使电流计指针指零, 并记下 MN 段的长度。
2
四、实验数据整理与归纳 Es=1.0186V 温度:室温 Ex 标=0.6V Ex(测)=(Lx/Ls)×Es Ex 平均=(0.603+0.602+0.603+0.601+0.600)/5=0.6018(V) △Ex=Ex 平均-Ex 标=0.6018-0.6=0.0018(V) 五、实验结果分析 1、实验数据误差不大。误差的主要来源应该是 Lx 和 Ls 的长度测量误差。 2、误差还可能是由于电阻丝的不均匀或温度的改变 六、实验心得 1.要正确连接电路,对于电路,要加以适当的保护,以免烧坏电表。 2.要选择适当的滑动变阻器和灵敏电流计 G,这样才能获得多组数据。
度 Lx。
(3)
值) ,合上 Kx,再调节 M、N 的位置使得 G 指零,记下 MN 的长度 (cm) Ex(V) 564.5 334 0.603
2 618.8 336 0.602
3 637 376.8 0.603
4 720.3 425.6 0.601
5 875.1 515.7 0.600
(2)
Kx 断开,K 投向 2,调节 M、N 的位置使得灵敏电流计 G 指零,并记下 MN 的长 Ro 取一定值(最好选 Ro 接近 Ex 的内阻的 r 值,可先粗侧一次 r 值后再选定 Ro 记录室温,对标准电池电动势进行修正,分别求出待测电池的电动势 Ex 及其内阻 r 稍改变 Rp 阻值,重复测量 Ex 和 r 共测 5 次,求出平均值及误差。
实验7气相反应平衡常数的测定

实验7 气相反应平衡常数的测定一、 目的要求1.直接测定法测量不同温度下二氧化碳与灼热碳反应的平衡常数。
2.了解高温的测量和控制及气体的取样分析。
二、原理二氧化碳与灼热碳的反应:C (s )+CO 2(g )−−→−高温2CO (g ) r H m =·mol -1 假定反应气相混合物为理想气体,对于复相化学平衡,其平衡常数用各组分气体分压表示:)/()/(2CO 2CO o o p p p p p K = (7-1) )/()/(2CO 2CO o o p p x p p x p K ⋅⋅=(7-2)在实验条件下反应总压近似保持在101325Pa , 故总总n n n n n n n n x x K o p⋅-=+==)()(2222CO 2CO CO CO CO 2CO CO 2CO 由理想气体状态方程得)/)(//()/(CO 2CO RT V RT V RT V RT V K o p总总-= =)(/CO 2CO V V V V -总总 (7-3)式中V co为标准态压力下一氧化碳的体积,V总为标准态压力下一氧化碳和二氧化碳平衡混合气的总体积。
本实验中对反应达平衡后的混合气体“冻结”后进行取样分析,可测出V总和V CO。
二氧化碳与碳高温下的等压反应热效应为+·mol-1,是吸热反应。
温度升高,反应向生成CO方向进行,平衡常数增大。
而且该反应有体积变化,压力增加,反应向气体体积缩小的方向即生成CO2方向进行。
当压力恒定时,影响化学平衡移动的因素只有温度。
故可在不同的温度下对反应平衡常数进行测量,从而考察温度对平衡常数的影响。
该反应除考虑热力学平衡外,还要考虑动力学因素。
该反应是非均相反应,CO2还原成CO的速度在低于600℃时很慢,温度高于1100℃速度才显著加快。
因此,在较低温度下,反应要达到平衡需要很长时间。
三、仪器和试剂反应装置一套(UJ-36型便携式电位差计一台;XCT-101动圈式温度指示调节仪一台;镍铬-镍铬鎧装热电偶两对);CO2钢瓶一个;碳粒;40%NaOH溶液;液体石蜡;饱和食盐水。
2019版物理 精选题辑 课练7 实验 探究弹簧弹力与弹簧伸长量的关系
课练7实验探究弹簧弹力与弹簧伸长量的关系验证力的平行四边形定则1。
下列是某小组做“探究弹力和弹簧伸长的关系”实验中准备完成的实验步骤.请你帮该小组按操作的先后顺序用字母排列出来:________.A.以弹簧伸长量为横坐标,以弹力为纵坐标,描出各组数据(x,F)对应的点,作出F-x图线.B.记下弹簧不挂钩码时,其下端在刻度尺上的刻度L0。
C.依次在弹簧下端挂上1个、2个、3个、4个……钩码,并分别记下钩码静止时,弹簧下端所对应的刻度并记录在表格内,然后取下钩码D.将铁架台固定于桌子上,并将弹簧的一端系于横梁上,在弹簧附近竖直固定一刻度尺.E.以弹簧伸长量为自变量,写出弹力与弹簧伸长量的关系式.F.解释函数表达式中常数的物理意义.答案:DBCAEF解析:第一步,安装实验装置,为D;第二步,记下弹簧不挂钩码时,其下端在刻度尺上的刻度L0,以便计算弹簧的伸长量,为B;第三步,依次在弹簧下端挂上1个、2个、3个、4个……钩码,并分别记下钩码静止时,弹簧下端所对应的刻度并记录在表格内,然后取下钩码,为C;第四步,画出图象,为A;第五步,写出关系式,为E;最后,解释函数表达式中常数的物理意义,为F。
所以步骤为DBCAEF。
2.某同学利用如图a所示装置做探究弹簧弹力大小和其长度的关系的实验.(1)他通过实验得到如图b所示的弹力大小F与弹簧长度x的关系图线.由此图线可得该弹簧的原长x0=________cm,劲度系数k=________N/m.(2)他又利用本实验原理把该弹簧做成一把弹簧秤,当弹簧秤上的示数如图c所示时,该弹簧的长度x=________cm.答案:(1)4 25 (2)16解析:(1)如果以弹簧长度x为横坐标,弹力大小F为纵坐标,作出F-x图象,那么图象与横轴的截距表示弹簧的原长,图线的斜率表示弹簧的劲度系数,所以根据图象可知,该弹簧的原长x0=4 cm,劲度系数k=错误!=25 N/m;(2)弹簧秤的读数表示弹力的大小,即F=3。
示波器(实验7)
教材P151(实验内容以本电子档为准)实验7:示波器及其使用示波器是一种常用的电子仪器,主要用于观察和测量各种电信号。
是展示和观测电信号的电子仪器,可以直接测量信号电压的大小和周期.配合各种传感器把非电量转换成电量,示波器也可以用来观察各种非电量的变化过程。
特别适用于观测瞬时变化的过程.本实验是利用示波器观察周期性改变信号和测量其主要参数。
交流电的电压(或电流)随时间作周期性变化。
实际上,所谓交流电包括各种各样的波形,如正弦波、方波、锯齿波等。
一、实验目的1.了解示波器的基本结构和工作原理,掌握示波器的基本调节和使用方法;2.学会使用常用信号发生器;掌握用示波器观察电信号波形的方法。
3.学会用示波器测量电信号电压、周期和频率等电参量;4.学会用示波器观察利萨如图形二、实验器材(型号、规格、件数)1、双踪示波器(20MHz CS—4215A) 1台示波器:用来测量实验电路的输入、输出信号。
通过示波器可显示电压或电流波形,可测量频率、周期等其它有关电参数。
2、低频信号发生器(10Hz—1MHz) 2台3、信号发生器:用来产生信号源的仪器,一般有正弦波、三角波、方波输出,输出电压和频率均可调节。
有数字式或指针式指示其输出大小,波形可根据被测实验电路要求进行选择。
本实验室低频信号发生器是指针式,只提供正弦波、方波两种波形。
•电压由FINE旋动调节其大小。
•频率由刻度盘读数及RANGE按键倍数决定。
如:频率刻度盘读数为20,RANGE按键倍数为×100,则频率值f=20×100=2000H Z4、屏蔽连接线(同轴电缆)2根三、实验原理1、示波器工作原理如图示:2、正弦交流电压波型2、正弦交流电3、利萨如图形成原理利萨如图形参考:四、实验内容:1、用示波器单通道观察信号波型(正弦波、方波),绘出波型图。
2.学习使用示波器定量测量电信号的电压、周期、频率。
3、用示波器双通道观察利萨如图,绘出利萨如波型图,并探讨利萨如图型规律。
C语言课程 课后练习 参考答案
实验6-1课后练习:1.选择题(1)B (2)C(3)A(4)D(5)C (6)C (7)D 2.阅读程序,写出运行结果3020103.阅读程序,写出运行结果20104. 阅读程序,写出运行结果1 2 35.阅读程序,写出运行结果7 8 96.阅读程序,写出运行结果97.阅读程序,写出运行结果#include <stdio.h>int digit(int n,int k);int main(){ int n,k;printf("Enter n,k: ");scanf("%d %d",&n,&k);printf("\nThe result is:%d\n",digit(n,k));return 0;}int digit(int n,int k){ int d;while(k>0){ d=n%10;n=n/10;k--;}return d;}8.程序填空#include <stdio.h>double max(double a,double b);int main(){ double x,y;prinf("please input two double numbers:"); scanf("%lf %lf"),&x,&y;printf("%.2f\n",max(x,y));return 0;}double max(double a,double b){return (a>b?a:b);}9.原版#include <stdio.h>int check(int n,int d);int main(){ int n,d;printf("Enter n,d: ");scanf("%d %d",&n,&d);if(check(n,d)==1)printf("The digit %d is in data %d",d,n); elseprintf("The digit %d is not in data %d",d,n); return 0;}int check(int n,int d){ int temp;while(n>0){ temp=n%10;if(temp==d)return 1;n=n/10;}return 0;}改进版#include <stdio.h>int check(int n,int d);int main(){ int n,d,position;printf("Enter n,d: ");scanf("%d %d",&n,&d);position=check(n,d);if(check(n,d)>0)printf("The digit %d is in data %d,position is %d",d,n,position);elseprintf("The digit %d is not in data %d",d,n);return 0;}int check(int n,int d){ int temp,position=1;while(n>0){ temp=n%10;if(temp==d)return position;position++;n=n/10;}return 0;}实验6-2课后练习1.选择题(1)B (2)C(3)B(4)B(5)C (6)B (7)D (8)D (9)C(10)B(11)A2.填空(1) 函数中声明有局部变量,若声明中带有static,则该局部变量采用静态存储方式,在编译时分配空间,若函数中未显式设定初始值,则系统将其自动初始化,函数被调用结束时,该空间不释放。
C语言程序设计教程(第二版)张敏霞 参考答案
c语言程序设计教程(第2版)课后题及模拟题参考答案习题1 (3)1-1 填空题 (3)1-2 思考题 (3)1-3 编程题 (3)习题2 (4)2-1 单选题 (4)2-2 思考题 (4)习题3 (5)3-1 选择题 (5)3-2 填空题 (5)3-3 编程题 (5)习题4 (7)4-1单选题 (7)4-2填空题 (7)4-3 编程题 (7)习题5 (10)5-1单选题 (10)5-2填空题 (10)5-3 编程题 (10)习题6 (13)6-1单选题 (13)6-2填空题 (13)6-3 编程题 (13)习题7 (15)7-1单选题 (15)7-2填空题 (15)7-3 编程题 (15)习题8 (16)8-1单选题 (16)8-2填空题 (16)8-3 编程题 (16)习题9 (18)9-1单选题 (18)9-2填空题 (18)9-3 编程题 (18)习题10 (22)10-1单选题 (22)10-2填空题 (22)10-3 编程题 (22)习题11 (24)11-1单选题 (24)11-2填空题 (24)习题12 (25)12-1单选题 (25)12-2 填空题 (25)实验篇 (26)实验1 熟悉Visual C++6.0可视化集成开发环境 (26)实验2 顺序结构程序设计 (26)实验3 选择结构程序设计 (26)实验4 循环结构程序设计 (26)实验5 函数 (28)实验6 数组 (32)实验7 指针 (33)实验8 结构体和共用体 (35)实验9 文件 (36)实验10 综合编程 (36)模拟试卷(一)参考答案 (37)模拟试卷(二)参考答案 (38)习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5.{, }6./*, */7.顺序结构,选择结构,循环结构8..c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("最小差为:%f最接近的元素为:%f\n",diff,a[k]);
}
【实验7.2】请编制程序,利用行指针,找出二维数组a[M][N]每一行中的最大值,然后从中找出最小值min。
【指导】
算法分析:
(1)先定义数组a[M][N],s[M]及指向数组a的行指针(*p)[N],将每一行的最大值存放在数组s中,然后在数组s中找出最小值。
for(pi=0;pi<10;pi++)
aver+=p[pi];
aver/=10;
printf("平均值为:%f\n",aver);
k=0;
diff=fabs(p[0]-aver);
for(pi=1;pi<10;pi++)
{b=fabs(p[pi]-aver);
if(b<diff)
{diff=b;k=pi;}
exit(-1);
}
i = len;
pace = numLower;//pace表示移动的步长
for( ; pace>0; pace--)
{do//从字符串尾部开始,后移pace个字符位置
{*(str+i+pace) = *(str+i);
}while(!islower(*(str+i--)));
*(str+i+pace) = '_';//插入一个下划线
}
}
【实验7.5】编写一个函数filter(char *str),将str所指向的字符串中,由”/*”包含的子串”*/”的部分删除掉。并编写程序测试该函数。
例如:对字符串”this is a test line, /*please delete the part of comment*/ no comment part should be included.”,调用函数处理后,字符串被修改为:
}
printf("%f %f\n",diff,p[k]);
}
答案:
#include <math.h>
#include <stdio.h>
void main()
{
int pi,k;
float a[10],aver=0,b,diff,*p=a;
for (pi=0;pi<10;pi++)
scanf("%f",&p[pi]);
fun(buffer);//函数调用
puts(buffer);//输出结果
}
/* 函数实现 */
void fun(char *str)
{int i, numLower, len, pace;
numLower = 0;//numLower表示小写字母个数
len = strlen(str);//len表示字符串长度
void sortData(int *pBuffer, int n, int flag)为排序模块,对pBuffer指向的n个整数进行排序,flag=1,按升序排列,flag=-1,按降序排列。
int searchData(int *pBuffer, int n, int data )为查找模块,对pBuffer指向的n个整数,查找值等于data的元素。如查找成功,返回该元素相对于pBuffer的偏移徝(下标值);如未查找到,返回-1。
”this is a test line, no comment part should be included.”
【提示】该函数可用于删除C语言源程序中形如”/*…*/”的注释,有两种方法:
(1)直接在原字符串上查找,删除,参考实验6.3。
(2)利用一个工作数组,将非注释部分按顺序拷贝到该数组中,最后将其复制到源字符串空间。
【指导】
算法分析:
本题要解决两个问题:
(1)计算10个元素的平均值;
(2)找出与平均值最接近的数组元素。
对于第(2)个问题,可以将第一个元素与平均值的差为基准,然后依次计算其余各个元素与平均值的差,并与基准进行比较(注意要按绝对值进行比较),从而找出最小值,它所对应的元素就是与平均值最接近的元素。
参考程序:
printf("Min=%d\n",min);
}
【实验7.3】请编制函数calc,其功能是对传送过来的两个实数求出和值与差值,并通过两个指针形参分别将这两个值传送回调用函数。该函数原型为:
void calc(float x,float y,float *add,float *sub)
它用来计算x+y和x-y分别存入add和sub所指的存储单元中。
【提示】参照教材例6.11,理解指针作函数参数里,形参和实参的使用,将以下程序补充完整。
【参考程序】
#include <stdio.h>
void calc(float x,float y,float *add,float *sub)
{
*add=x+y,
*sub=x-y;
}
void main()
{
float x,y,add,sub;
for(i=0; i<len; i++)//统计小写字母的个数
{if( islower(*(str+i)))
numLower++;
}
if (len+numLower > N-1)//定义的数组长度不足
{printf("Do nothing: having risk of buffer overflow!");
voiddeleteData(int *pBuffer, int n, int pos)为删除模块,删除位置pos处的数据,并将其后的数据按顺利向前移,最后一个位置置-1。
#include <stdio.h>
#include <stdlib.h>
#define N 80
/* 函数声明 */
化模块
inputData(bufferInt, num);//输入num个整数
printData(bufferInt, num, 5);//按每行5个输出缓冲区中的num个整数
printf("Max=%d\n",maxData(bufferInt,num));//输出最大值
(2)为了求出数组a第i行的最大值s[i],先令s[i]=a[i][0],然后将s[i]依次与a[i][1],a[i][2],……,a[i][N-1]比较,凡是比s[i]大的a[i][j]就赋给s[i],经N-1轮比较后,s[i]中存放的就是该行的最大值。
(3)根据题目要求用行指针操作,数组元素a[i][j]的地址可用p[i]+j、*(p+i)+j或&p[i][j]表示,数组元素a[i][j]的值可用p[i][j]、*(p[i]+j)或*(*(p+i)+j)表示。
【参考程序】
#define N 80
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void fun(char *str);//函数声明
voidmain (void)
{char buffer[N]="aBdEF3@#g";
aver+=p[i]; //计算累加和
aver/=10; //计算平均值
k=0;
diff=fabs(p[0]-aver); //计算第一个元素与平均值的差的绝对值
for(i=1;i<10;i++)
{ b=fabs(p[i]-aver);
if(b<diff) //寻找最接近于平均值的元素及其位置
{ diff=b; k=i; }
【实验7.6】将下面的参考程序补充完整,要求编写如下一组函数,分别完成整型数组的数据录入、数据输出、取最大值、最小值、排序、查找和删除操作。主函数中定义一个足够大的整型数组bufferInt[N],作为数据缓冲区,用来存放非负整数,并调用这组函数实现相应的功能。其中,
pBuffer指向数据缓冲区,n表示数据个数。
【指导】两遍扫描字符串,先计算出小写字母的个数numLower,然后将字符串分成numLower段,分别向后移动不同的步长pace。例如:对”aBdEF3@#g”,分成3段,”aB”、”dEF3@#”、”g”,然后,将子串”g”移动3个字符位置后,插入下划线,将子串”dEF3@#”移动2个字符位置后,插入下划线,依此类推,完成操作。
void initData(int *pBuffer, int n)为初始化模块,将pBuffer所指的缓冲区中的n个整数全部初始化为-1,表示该位置尚未被使用。
void inputData(int *pBuffer, int n)为输入模块,将从键盘读入得n个整数存入pBuffer所指的缓冲区中。
void printData(int *pBuffer, int n, int col)为输出模块,将pBuffer指向的n个整数,按每行col个元素显示出来。
int maxData(int *pBuffer, int n)为求最大值模块,返回pBuffer指向的n个整数中的最大值。
int minData(int *pBuffer, int n)为求最小值模块,返回pBuffer指向的n个整数中的最小值。
printf("Enter x,y:");
scanf("%f%f",&x,&y);