实验10指针

合集下载

利用指针排序实验报告(3篇)

利用指针排序实验报告(3篇)

第1篇一、实验目的1. 理解指针在排序算法中的应用。

2. 掌握几种常见的排序算法(如冒泡排序、选择排序、插入排序等)的指针实现方式。

3. 比较不同排序算法的效率,分析其优缺点。

二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 2019三、实验内容本次实验主要实现了以下排序算法:1. 冒泡排序2. 选择排序3. 插入排序以下是对每种排序算法的具体实现和性能分析。

1. 冒泡排序(1)算法原理冒泡排序是一种简单的排序算法。

它重复地遍历待排序的序列,比较每对相邻的元素,如果它们的顺序错误就把它们交换过来。

遍历序列的工作是重复地进行,直到没有再需要交换的元素为止。

(2)指针实现```cppvoid bubbleSort(int arr, int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - 1 - i; j++) {if ((arr + j) > (arr + j + 1)) {int temp = (arr + j);(arr + j) = (arr + j + 1);(arr + j + 1) = temp;}}}}```(3)性能分析冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。

当待排序序列基本有序时,冒泡排序的性能较好。

2. 选择排序(1)算法原理选择排序是一种简单直观的排序算法。

它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

以此类推,直到所有元素均排序完毕。

(2)指针实现```cppvoid selectionSort(int arr, int len) {for (int i = 0; i < len - 1; i++) {int minIndex = i;for (int j = i + 1; j < len; j++) {if ((arr + j) < (arr + minIndex)) {minIndex = j;}}int temp = (arr + i);(arr + i) = (arr + minIndex);(arr + minIndex) = temp;}}```(3)性能分析选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。

C语言教材第七章指针实验

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]。

实验10观察电容器充放电现象

实验10观察电容器充放电现象

观察电容器的充、放电现象基础打磨1.(2019年江西10月联考)如图所示,关于平行板电容器的充、放电,下列说法正确的是()。

A.开关接1时,平行板电容器充电,且上极板带正电B.开关接1时,平行板电容器充电,且上极板带负电C.开关接2时,平行板电容器放电,且上极板带正电D.开关接2时,平行板电容器放电,且上极板带负电2.(2019年海南11月月考)下列电容器相关知识描述正确的是()。

A.图1为电容器充电示意图,充完电后电容器上极板带正电,两极板间的电压U等于电源的电动势EB.图2为电容器放电示意图,若电容器上极板带电荷量为+Q,则放电过程中通过电流表的电流方向从右向左,流过的总电荷量为2QC.图3为电解电容器的实物图和符号,图4为可变电容器及其符号,两种电容使用时都严格区分正负极D.图5中的电容器上有“5.5 V1.0 F”字样,说明该电容器只有两端加上5.5 V的电压时电容才为1.0 F3.(2019年安徽模拟)(多选)电流传感器可以像电流表一样测量电流,可以捕捉到瞬间的电流变化,相当于一个理想电流表。

用如图1所示的电路来研究电容器的放电过程。

实验时将开关S拨到1端,用直流电压为8 V的电源给电容器充电,待电路稳定后,将电流传感器打开,再将开关S拨到2端,电容器通过电阻R放电。

以S拨到2端时为t=0时刻,电流传感器测得的电流I随时间t的变化图象如图2所示,根据题意,下列说法正确的是()。

A.由I-t图象可知,电容器在全部放电过程中释放的电荷量约为3.2×10-3 CB.由I-t图象可知,电容器在全部放电过程中释放的电荷量约为3.2 CC.此电容器的电容约为4.0×10-4 FD.此电容器的电容约为0.4 F能力提高4.(2019年河北10月联考)用下列器材测量电容器的电容:一块多用电表,一台直流稳压电源,一个待测电容器(额定电压16 V),定值电阻R1=100 Ω,定值电阻R2=150 Ω,电流传感器、数据采集器和计算机,单刀双掷开关S,导线若干。

C++上机实验报告(指针)

C++上机实验报告(指针)

C++上机实验报告实验名称:指针专业班级:姓名:学号:实验日期:目录1.实验目的2.实验内容3.程序代码4.调试结果5.实验心得1.实验目的(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量;(3)能正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用引用型变量。

2.实验内容编程序并上机调试运行程序(要求用指针或引用处理)。

(1)输入3个整数,按由小到大的顺序输出。

编译一个程序,用指针变量作为参数。

(2)在上题的基础上将程序改为:输入3个字符串,按由小到大的顺序输出。

(3)用引用指针变量作为形参,实现3个整数由小到大输出。

(4)有n个人围成一圈,顺序排号。

从第1个人开始报数(从1~3报数),凡是到3的人退出圈子,问最后留下的人原来排在第几号。

(5)在主函数中输入10个字符串。

用另一个函数最它们排序。

然后在主函数输出这10个已排好的字符串。

要求用以下方法编程:Ⅰ.指向一维数组的指针座函数参数;Ⅱ.用string数组方法。

3.程序代码(1)#include<iostream>using namespace std;int main(){void swap(int *p1,int *p2);int n1,n2,n3;int *p1,*p2,*p3;cout<<"input three integers n1,n2,n3:";cin>>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);cout<<"Now,the order is:"<<n1<<" "<<n2<<" "<<n3<<endl; return 0;}void swap(int *p1,int *p2){int p;p=*p1;*p1=*p2;*p2=p;}(2)Ⅰ.用字符数组方法的源程序#include<iostream>using namespace std;int main(){void swap(char *,char *);char str1[20],str2[20],str3[30];cout<<"input three line:"<<endl;gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); cout<<endl<<"Now,the order is:"<<endl; cout<<str1<<endl<<str2<<endl<<str3<<endl; return 0;}void swap(char *p1,char *p2){char p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}Ⅱ.用string方法的源程序(程序中使用了指针和引用)#include<iostream>#include<string>using namespace std;int main(){void change(string &,string &);string str1=" ",str2=" ",str3=" ";char *p1=&str1[0],*p2=&str2[0],*p3=&str3[0];cout<<"input three line:"<<endl;gets(p1);gets(p2);gets(p3);if(str1>str2) change(str1,str2);if(str1>str3) change(str1,str3);if(str2>str3) change(str2,str3);cout<<endl<<"Now,the order is:"<<endl;cout<<str1<<endl<<str2<<endl<<str3<<endl; return 0;}void change(string &st1,string &st2) {string st;st=st1;st1=st2;st2=st;}(3)#include<iostream>using namespace std;int main(){void exchange(int *,int *,int *);int a,b,c,*p1,*p2,*p3;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);cout<<a<<" "<<b<<" "<<c<<endl;return 0;}void exchange(int *q1,int *q2,int *q3){void swap(int *,int *);if( *q1> *q2) swap(q1,q2);if( *q1> *q3) swap(q1,q3);if( *q2> *q3) swap(q2,q3);}void swap(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;}(4)#include<iostream>using namespace std;int main(){int i,k,m,n,num[50],*p;cout<<"input number of person:n="; cin>>n;p=num;for(i=0;i<n;i++)*(p+i)=i+1;i=0;k=0;m=0;while(m<n-1){if(*(p+i)!=0) k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n) i=0;}while(*p==0)p++;cout<<"The last one is NO."<<*p<<endl; return 0;}(5)Ⅰ.指向一维数组的指针最函数参数的源程序#include<iostream>using namespace std;int main(){void sort(char (*p)[6]);int i;char str[10][6];char (*p)[6];cout<<"input 10 strings:"<<endl;for(i=0;i<10;i++)cin>>str[i];p=str;sort(p);cout<<"Now,the sequence is:"<<endl; for(i=0;i<10;i++)cout<<str[i]<<endl;return 0;}void sort(char (*s)[6]){int i,j;char temp[6],*t=temp;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[+j+1]);strcpy(s[j+1],t);}}Ⅱ.用string数组方法的源程序#include<iostream>#include<string>using namespace std;int main(){void sort(string*);int i;string str[10],*p=str;cout<<"input 10 strings:"<<endl;for(i=0;i<10;i++)cin>>str[i];sort(p);cout<<"Now,the sequence is:"<<endl; for(i=0;i<10;i++)cout<<str[i]<<endl;return 0;}void sort(string *s){int i,j;string temp;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(s[j]>s[j+1]){temp=s[j];s[j]=s[+j+1];s[j+1]=temp;}}4.调试结果(1)input three integers n1,n2,n3:54 -12 2 Now,the order is:-12 2 54(2)input three lines:I study very hard.C language is very interesting.He is a professor.Now,the order is:C language is very interesting.He is a professor.I study very hard.(3)12 6 876 12 87(4)input number of person:n=8The last one is No.7(5)input 10 strings: Now,the sequence is:China BurmaJapan ChinaKorea EgyptEgypt GhanaNepal ItalyBurma JapanGhana KoreaSudan LibyaItaly NepalLibya Sudan5.实验心得指针同数组一样,是C++中一个重要的概念,一个重要的知识点。

【恒心】50天高考物理夯实基础-实验10

【恒心】50天高考物理夯实基础-实验10

位置上,将红表笔插入“+”插孔,黑表笔插入“-”插
孔,然后两表笔短接进行欧姆调零后,将黑表笔接触二极管 正极,红表笔接触二极管负极,稳定后读取示数乘上倍率求 出正向电阻R1. ②测反向电阻:将多用电表的选择开关旋至高倍率的欧姆
挡,方法同上.
基本实验要求
实验热点聚焦
拓展创新实验
6.探索黑箱内的电学元件 探究项目 应用挡位 电源 电压挡 现 象 两接线柱正、反接时均无示数说明无电 源
多用电表和电压表的读数分别为12.0 kΩ和4.00 V.从测量
数据可知,电压表的内阻为________ kΩ.
图8 (5)多用电表电阻挡内部电路可等效为由一个无内阻的电池、 一个理想电流表和一个电阻串联而成的电路,如图8所
示.根据前面的实验数据计算可得,此多用电表内电池的电
动势为________V,电阻“×1 k”挡内部电路的总电阻为 ______ kΩ.
基本实验要求
实验热点聚焦
拓展创新实验
实验器材 多用电表、电学黑箱、直流电源、开关、导线若干、小电 珠、二极管、定值电阻(大、中、小)三个.
实验步骤
1. 机械调零 :检查多用电表的指针是否停在表盘刻度左端 的零位置.若不指零,则可用小螺丝刀进行机械调零. 2.将红、黑表笔分别插入“+”、“-”插孔.
(1)调整定位螺丝,使指针指向电流的零刻度.
(2)选择开关置于“ Ω”挡的“×1”,短接红、黑表笔, 调节欧姆调零旋钮,然后断开表笔,再使指针指向∞. (3) 将两表笔分别接触阻值为几十欧的定值电阻两端,读 出指示的电阻值,然后断开表笔,再与标定值进行比较.
(4)选择开关改置“×100”挡,重新进行欧姆调零.
k”挡内部电路的总电阻.使用的器材有:

实验10测量金属丝的电阻率

实验10测量金属丝的电阻率

实验十测量金属丝的电阻率1. (2022·常州期末)在“测量金属丝的电阻率”时,某实验小组选用的主要仪器有:待测金属丝(接入电路的长度为50.00 cm,电阻约几欧),电压表V(0~3 V,内阻约2 kΩ;0~15 V,内阻约15 kΩ),电流表A(0~3 A,内阻约0.01 Ω;0~0.6 A,内阻约0.05 Ω),滑动变阻器R(0~10 Ω,0.6 A),干电池两节,导线若干.(1) 用螺旋测微器测量金属丝的直径,某次测量结果如图甲所示,读数为______mm.甲(2) 请用笔画线代替导线,在图乙中完成实物电路的连接.乙(3) 实验中,调节滑动变阻器,记录到的电压表和电流表的示数如表所示,请在图丙中作出U-I图线.U/V 1.05 1.40 2.00 2.30 2.60 I/A0.220.280.400.460.51丙(4) 进一步分析,可得金属丝的电阻率ρ=______Ω·m(结果保留两位有效数字).(5) 测得的电阻率比真实值偏大,可能的原因有________.A. 金属丝粗细不均匀导致测出的直径偏大B. 开关闭合时间过长导致测出的电阻偏大C. 电压表内阻不够大导致测出的电阻偏大D. 滑动变阻器阻值偏小导致测量范围偏小2. (2022·南通海门区期末)小明通过实验测量一种合金的电阻率.(1) 如图甲所示,用螺旋测微器测量合金丝的直径时,从调节到读数的过程中,螺旋测微器上三个部件A、B、C使用的先后顺序应该为________(填字母);测得该合金丝的直径为d=________mm.(2) 请根据表格中数据,在图乙中用笔画线代替导线把电路连接补充完整.甲乙(3) 小明在实验室找了两节干电池进行实验,正确连接电路后,发现调节滑动变阻器,电压表和电流表的示数变化范围非常小,原因是_____________________________________.(4) 正确连接电路后,小明利用刻度尺测出合金丝接入电路的长度L=59.99 cm,闭合开关,调节滑动变阻器,读出电压表和电流表的示数,在方格纸上作出U-I图像如图丙,发现图像是一条倾斜直线,计算该合金丝电阻R=________,该合金丝电阻率ρ=________Ω·m(π取3,结果均保留两位有效数字).12345678电流00.080.110.150.190.270.380.56I/A电压00.190.290.440.600.80 1.15 1.70U/V丙3. (2022·苏北苏中七市调研)电导率是电阻率的倒数,25 ℃时合格纯净水的电导率小于5.0×10-4Ω-1·m-1.某小组为测量一水厂纯净水的电导率,用绝缘性能良好的塑料圆柱形容器装满采集的水样,然后用金属圆片电极将容器两端密封.实验室还提供了下列器材:A. 游标卡尺B. 电压表V(量程3 V,内阻约5 kΩ)C. 灵敏电流表G(量程20 μA,内阻约250 Ω)D. 滑动变阻器R(阻值0~20 Ω,额定电流1 A)E. 电源(E=6 V,内阻很小)F. 开关、导线若干甲(1) 图甲为游标卡尺的结构示意图,实验前需测量圆柱形容器的内径,应使用游标卡尺的________(填“A”“B”或“C”)进行测量,游标卡尺示数为________cm.(2) 请用笔画线代替导线,将图乙中测量纯净水样品电阻的实物电路连接完整.(3) 测量数据如下表所示,请在图丙中作出U-I图像.根据图像求出该样本电阻的阻值R x=________kΩ(结果保留两位有效数字),进而可以求出电导率.U/V0.52 1.20 1.80 2.36 2.78I/μA 2.0 4.4 6.88.810.4乙丙(4) 若装入的纯净水样品未完全充满塑料圆柱形容器,这会使测得的电导率______(填“偏大”“偏小”或“不变”),理由是.4. (2023·金陵中学)实验小组做“测量合金丝的电阻率”实验.(1) 用毫米刻度尺测出合金丝AB的长度l=20.00 cm,再利用螺旋测微器测金属丝直径,示数如图甲所示,则金属丝直径的测量值d=________mm.用欧姆表“×10”挡粗测合金丝AB的电阻,多用电表指针指示如图乙所示,则合金丝电阻值为________ Ω.甲乙(2) 实验室提供下列器材:电源(E=3.0 V)电压表(量程0~3 V,内阻约3 kΩ)电流表(量程0~60 mA,内阻为20 Ω)滑动变阻器R1(最大阻值10 Ω,额定电流2 A)滑动变阻器R2(最大阻值1 kΩ,额定电流0.5 A)开关、导线若干.为了调节方便、测量准确,滑动变阻器应选用________.(选填相应的电阻) (3) 将合金丝AB 全部接入电路,使用图丙中的器材测量合金丝的电阻,请用笔画线代替导线,在图丙中将实物电路图连接完整.丙(4) 正确连接电路后,移动滑动变阻器的滑片,记录两电表的测量数据,在坐标纸上描点作出如图丁所示的U -I 图像,则合金丝AB 的电阻R =________ Ω(结果保留一位小数),由电阻R 求得合金的电阻率.丁(5) 若通过改变合金丝接入电路的长度来测其电阻率,需要扩大电流表的量程.将阻值为R 0=10 Ω的电阻与电流表并联,用金属夹P 改变合金丝接入电路的长度L ,测得多组合金丝接入电路的长度L 及两电表的读数:电压U 、电流I ,作出UI -L 图像的斜率为k ,则该合金丝的电阻率ρ=________(用符号d 、k 表示).。

实验10 中值、低值及高值电阻的测定

实验10 中值、低值及高值电阻的测定

中值、低值及高值电阻的测定电桥法是测量电阻的常用方法,利用桥式电路制成的各种电桥是用比较法进行测量的仪器。

电桥法实质上是将被测电阻与标准电阻进行比较来确定被测电阻值的。

电桥法具有电桥分为直流电桥和交流电桥两大类,直流电桥分为单臂电桥和双臂电桥,单臂电桥又称为惠斯通电桥,主要用于测量中等阻值的电阻(1~106Ω文电桥,主要用于测量1Ω以下的低值电阻,它的测量范围是10-6~10Ω。

对于106Ω以上的高电阻,直接测量存在一定的困难。

实验室往往采用放电法来测量。

放电法是根据电在测量方法上除平衡电桥外,还可利用非平衡电桥进行测量。

桥式电路不仅广泛应用For personal use only in study and research; not for commercial use一用电桥测中、低值电阻一、实验目的For personal use only in study and research; not for commercial useFor personal use only in study and research; not for commercial use4二、仪器和用具QJ24型直流单臂电桥,固定电阻元件板,盛水容器及待测金属电阻,电磁炉,温QJ44型直流双臂电桥,黄铜棒,铝棒,康铜丝,钢直尺,螺旋测微计,专用导线等。

三、实验原理电桥法测电阻是将待测电阻和标准电阻进行比较来确定其值的。

由于标准电阻本身误惠斯通电桥的原理如图2-40所示。

图中的标准电阻Ra、Rb、R及待测电阻Rx构成四边形,每一边称作电桥的一个“臂”。

对角点A、C与B、D分别接电源E支路和检流计G支路。

所谓“桥”就是指BD这条对角线而言,而检流计在这里的作用是将“桥”的两个端点B、D的电势直接进行比较。

当接通电桥电源开关B0和开关G2时,检流计中就有电流流过,但当调节4个桥臂电阻到适当值时,检流计中就无电流通过,这时称为“电桥平衡”。

2010级用高级语言程序设计实验报告quan

2010级用高级语言程序设计实验报告quan

2010级用高级语言程序设计实验报告quan《高级语言程序设计》实验报告实验室名称:班级:学生姓名:学号:指导教师:学期:2009-2010学年上学期实验1 C 程序设计入门一、实验目的1、熟悉C 编程环境2、掌握简单C 程序的编辑、编译和运行方法二、知识要点1、用printf 函数输出指定字符串(转义字符的使用)2、计算并输出表达式的值3、程序书写风格三、实验预习(要求做实验前完成)1、若要在屏幕输出信息,需要用到库函数:2、输出的信息若需换行,需要用到换行符:3、按C 语言语法规则写出下列算法的表达式(1)26乘以49,再除以17:(2)求29除以6的余数:四、实验内容 (要求提供:① 算法描述或流程图② 源程序 )1、编程输出“我的信息”,包括姓名、性别、专业名称和课程名称,格式为:姓名:性别:专业名称:课程名称:2、编程求以下表达式的值:1491516232+-+ 3、编程计算并输出16.8与27.5两个数的和、差、积、商,要求输出界面为:和是:差是:积是:商是:五、实验结果要求写出运行界面并输出运行结果实验2─3 数据类型、常量变量及顺序结构程序设计一、实验目的1、掌握常量和变量的概念以及使用1、掌握变量的定义、赋值与引用2、掌握顺序结构相关语句的使用3、掌握scanf和printf输入、输出数据的方法二、知识要点1、变量与常量概念2、数据输入、输出的格式控制3、标准库函数与头文件的使用4、算术运算与赋值运算5、数据类型转换三、实验预习(要求做实验前完成)1、假如要定义两个整型变量x和y,语句int x y;错在哪里?2、把a的值赋给b,其语句是:3、如果使用语句scanf(“%d%d”,&x,&y);输入8和9两个整数,其输入格式应该是:4、如果使用语句scanf(“%d,%d”,&x,&y);输入8和9两个整数,其输入格式应该是:5、程序中如果要用到库函数sin,则应包含头文件:6、假设x是一个实型变量,语句printf(“%d”,x);错在哪里?7、语句x=10; y=20; printf(“y=%d, x= %d”,x,y); 能否交换x和y的值?四、实验内容(要求提供:①算法描述或流程图②源程序)1、输入两个人的身高,计算并输出他们的平均身高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

if(num) {printf("%d\n",num); for(i=0;i<num;i++) printf("%d",sc[i]);} else {printf("%s is not substring!\n",substr);} } int count(char *str,char *substr,int c[]) {int i,j,k,num=0; for(i=0;str[i]!='\0';i++) {if(str[i]==substr[ 0 ]) c[num]=i; i for(j=i,k=0; substr[k]==str[j]; k++,j++) substr[k]=str[j]; if(substr[k+1]=='\0') {num++;break;} } return(num); }
1、编写一个程序,接受用户输入的一行字符 “Tomorrow is 2004/10/1”,以回车键结束, 分别统计其中的大写字母、小写字母、空格、数 字和其它字符的个数。请在空白处完善程序, #include<stdio.h> main() {int n1=0,n2=0,n3=0,n4=0,n5=0,i=0; char *p,str[80]; printf("请输入一行字符:"); while((str[i]=getchar())!='\n') i++; p=str[i]; p=str;
#include <stdio.h> void merge(int *,int,int *,int,int *); main() {static int a[]={1,3,5,7},b[]={0,2,4,6,8},c[10]; int i; merge(a,4,b,5,c); for(i=0;i<9;i++) printf("%4d",*(c+i)); printf("\n"); }
else n5++; p - -ntf("大写字母数:%d 小写字母数:%d 空格数: %d 数字数:%d 其它数:%d\n", n1,n2,n3n,n4,n5);}
2)从键盘上输入十个字符串,从中求出最 长的一个字符串,并将该串及其长度送 入MYFB1.OUT中。 #include <stdio.h> main() { int i,maxlen,len; char inline[10][100],maxline[100]; FILE *fp; if ((fp==fopen("myfb1.out","w"))==NULL) exit(1); for(i=0;i<10;i++) {gets(inline[i]); fprintf(fp,"%s\n",inline[i]);}
3) 以下程序中merge函数将两个已按升序存 放在数组A,B中的数列合并为一个升序 数列存放到C数组中。改正下面程序的错误, 给源程序命名为s11_3.c。 算法提示:先将数组A中的各个元素依次拷 贝到数组C中。然后,依次从数组B中 取一个元素,按其值的大小插入到数组C中 (保持C中的数据按升序排序)。
maxlen=0; for(i=0;i<10;i++) { strlenth(inline[i],len); if (len>maxlen) strcpy(maxline,inline[i]); maxlen=len; fprintf(fp,"max string is:%s\n maxlen=%d\n",maxline,maxlen); fclose(fp);} strlenth(char p,int len) { len=0; while(p[len]!='\0') ++len; }
while( * p!= '\n') { /*判断统计大写字母、小写字母、 空格、数字和其它字符的个数*/ if(*p>='A' && *p<='Z') n1++;
else if(*p>='a' && *p<='z') n2++;
else if(*p==' ') n3++;
else if(*p>='0' && *p<='9') n4++;
2) 下面程序的功能是统计子串在字符串(母 串)中出现时的次数,并且记录子串在母 串中每一次出现的开始位置。 #include <stdio.h> main() {char str[80],substr[80]; int i,num=0,sc[80]; gets(str[80]); gets(substr[80]); num=count(str,substr,sc);
p=&a[0][0]; move(p); printf("output:\n"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } }
2) 以下程序对一个数据序列,求其中所 有素数之和,将这些素数移到序列前面, 并保持各素数的相对顺序不变。 #include "stdio.h" #include "math.h" int prime(int x) {int k=sqrt(x); for(;k>=2;k--) if(x%k==0) return 0; return 1; }
int check(char *s) {int left,right; left=0,right=0; while ( * s!='\0') {if (*s=='(') left++; if (*s==')') right++; s++; } if (left < right) return(left-right); > else if (left > right) return(right-left); < return(0); }
3) 用指针处理写一函数,将一个3×3的整数矩阵 转置。在主函数中用scanf函数输入以下矩阵 元素: 2 4 6 8 10 12 14 16 18 将数组的起始地址作为函数实参,在执行函数的 过程中实现矩阵转置,函数调用结束后在主函 数中输出已转置的矩阵。 main() {int a[3][3],*p,i,j; printf("input:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]);
4、本程序中函数check检查给定的字符串s中左圆 括号与右圆括号的个数是否匹配,若两者个数匹 配则函数返回值为0,若左括号数大于右括号数 则返回两者差值的负值,否则返回两者差值的正 值。 #include <stdio.h> main() {char a[100]; int i; strcpy(a,"(((a+b)-c)*d)-e") a="(((a+b)-c)*d)-e"; i=check(a); printf("a=%s i=%d\n",a,i); }
printf("The scores of No. %d are:\n",m); p=search(score,m); for(i=0;i<4;i++) printf("%5.2f\t", * ( p+i ) ); } float *search(float (*pointer)[4],int n) { float *pt; pt=* ( pointer+n ) ; return (pt); }
void merge(int *a,int ma,int *b,int mb,int * c) {int ib=0,ic=0,i,j; for(ic=0;ic<ma;ic++ ) c[ic]=a[ic]; ic++; --; for(ib=0;ib<mb;ib++) {if(b[ib]>c[ic]) c[ ++ic ]=b[ib]; ic++ else {for(i=0;i<=ic;i++) if(b[ib]<c[i]) break; for(j=ic;j >= i;j--) c[j+1]=c[j]; <= c[i]=b[ib];ic++; }} }
for(k=0;k<N;k++,rp++) if(prime(*rp)) { /*该素数累加,并将该素数移到序列前面*/ sum+=*(arr+k); t=*rp; *rp=*lp; *lp=t; lp++; } for(rp=arr;rp<lp;rp++) printf(" %d",*rp); printf(" %d\n",sum); for(;rp<arr+N;rp++) printf(" %d",*rp); putchar('\n'); }
相关文档
最新文档