【实验指导书】实验6:指针-20150706
c指针的实验报告
c指针的实验报告C指针的实验报告引言:C语言作为一种高级编程语言,广泛应用于各个领域。
其中,指针作为C语言的重要特性之一,对于程序的灵活性和效率起着至关重要的作用。
本实验旨在通过实际的案例,详细探讨C指针的用法和特性。
一、指针的概念和基本用法指针是C语言中的一种数据类型,它存储了一个变量的内存地址。
通过指针,我们可以直接访问和修改变量的值。
在C语言中,可以通过使用"*"符号来声明和使用指针。
在实验中,我们首先定义了一个整型变量num,并通过指针p将其地址赋值给指针变量。
然后,通过指针p可以直接访问和修改num的值。
例如,通过*p = 10可以将num的值修改为10。
二、指针和数组的关系指针和数组在C语言中有着密切的联系。
事实上,数组名本身就是一个指针,它存储了数组首元素的地址。
通过指针,我们可以对数组进行遍历和操作。
在实验中,我们定义了一个整型数组arr,并通过指针p将数组的首地址赋值给指针变量。
然后,通过指针p可以对数组进行遍历和操作。
例如,通过*p = 0可以将数组的首元素的值修改为0。
三、指针和函数的关系指针在函数中的应用也是非常广泛的。
通过指针参数,我们可以在函数内部直接修改传入的变量的值,而不需要返回值。
这样可以提高程序的效率和灵活性。
在实验中,我们定义了一个函数swap,用于交换两个整型变量的值。
通过传入指针参数,我们可以在函数内部直接修改这两个变量的值。
例如,通过使用指针参数int *a和int *b,在函数内部可以通过指针来访问和修改a和b的值。
四、指针和动态内存分配动态内存分配是指在程序运行过程中,根据需要动态地分配和释放内存空间。
指针在动态内存分配中扮演了重要的角色。
通过指针,我们可以使用函数malloc和free来分配和释放内存空间。
在实验中,我们使用了函数malloc来动态地分配一块内存空间,并将其地址赋值给指针变量。
然后,通过指针可以对这块内存空间进行读写操作。
指针实验
实验名称:指针使用实验目的:熟悉指针的正确用法。
相关知识:1.指针的定义;2.指针的引用;实验内容:(1) 调试下面程序,指出错误原因。
main ( ){int x=10,y=5,*px,*py;px=py;px=&x;py=&y;printf(“*px=%d,*py=%d”,*px,*py);}(2)调试下面程序。
#include <stdio.h>main ( ){float a;float *pa;scanf(“%f”,&a);printf(“1.%f\n”,a);pa=&a;scanf(“%f”,pa);printf(“2.%f\n”,a);}在上述程序中,添加如下语句。
printf(“%x”,&a);printf(“%x”,pa);printf(“%x”,pa+1);①记录这3条语句的输出值。
其中“%x”表明输出的数值用十六进制数表示。
②计算float类型所占空间的大小。
③运算符sizeof可以计算出某一类型或变量所占存储空间的大小。
请在上述程序中加入语句:printf(“%ld”,sizeof(float));将该语句的输出结果与步骤②的结果比较,观察是否一致。
(3)调试下面程序。
#include <stdio.h>main ( ){float a,b;float *pa=&a,*pb=&b;printf(“%x\n”,pa+pb);printf(“%x\n”,pa-pb);printf(“%x\n”,pa+5);printf(“%x\n”,pa-5);}记录出错信息,分析出错原因。
总结指针可以进行哪些运算。
下面的程序能获得上述运行结果吗?main( ){char *s=”COMPUTER”;char c;printf(“which style you want to \n”);printf(“capital (c) or uncapital (u);”);c=getchar();if (c=’c’)puts(s);else{s=”computer”;puts(s);}}。
实验六指针——精选推荐
实验6 指针一、实验目的1. 熟悉指针的概念,并掌握指针变量的定义及使用。
2. 掌握数组的指针和指向数组的指针变量及其应用。
3. 掌握字符串的指针和指向字符串的指针变量及应用。
4. 熟悉函数的指针、返回指针值的函数、指针数组及命令行参数等概念及应用。
二、实验内容步骤(一)按要求设计以下程序,并调试分析运行结果。
(此部分完成在实验报告上)1.已知数组{1,3,5,7,9},试编写一个程序sy6-1.c,在其中分别用下标法、地址法和指针法访问数组元素,将它们输出。
# include <stdio.h>void main(){int a[5]={1,3,5,7,9},i,*p;printf("下标法a[i]: ");for(i=0;i<5;i++)printf("%3d",a[i]);printf("\n 地址法*(a+i):*(a+i):");for(i=0;i<5;i++)printf("%3d",*(a+i));printf("\n指针法*p: ");for(p=a;p<a+5;p++)printf("%3d",*p);printf("\n");}运行结果2.有三个整形变量i,j,k。
请编写程序sy6-2.c,设置三个指针变量p1,p2,p3,分别指向i,j,k。
然后通过指针变量使i,j,k三个变量的值顺序交换,即原来i的值赋给j,把j的原值赋给k,把k的原值赋给i。
i,j,k的原值由键盘输入,要求输出i,j,k的原值和新值。
# include <stdio.h>void main(){int i,j,k,*p1,*p2,*p3,t;printf("请输入i,j,k: ");scanf("%d%d%d",&i,&j,&k);printf("交换前: i=%d j=%d,k=%d\n",i,j,k);p1=&i; p2=&j; p3=&k;//p1指向i,p2指向j,p3指向kt=*p3; *p3=*p2;*p2=*p1,*p1=t;//通过指针间接访问i,j,k并实现交换printf("交换后: i=%d j=%d k=%d\n",i,j,k);}运行结果:3.利用字符指针设计程序sy6-3.c,要求在一行文字:“I have 50 Y uan.”中,删去字符‘0’,使其变成:“I have 5 Y uan.”,并输出结果。
实验6
南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称实验6 指针二、实验目的1.掌握指针的基本概念和基本用法。
包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计。
三.实验内容有关指针的程序设计四.实验环境PC微机DOS操作系统或Windows 操作系统Turbo C 程序集成环境五.实验步骤1.编程实现:任意输入的10个数,求其平均值。
要求:(1)10个数采用scanf语句读入。
(2)利用指针实现对这10个数的访问。
(3)要求平均值的精度为小数后面2位。
2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。
要求:(1)整数数组由初始化方式输入。
任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。
3.编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。
要求:(1)在主函数中以初始化方式输入一个字符串;(2)调用newcopy()函数;(3)在主函数中输出处理后的结果。
4.编程实现:输入三个整数,按由大到小的顺序输出。
要求:(1)通过scanf函数输入三个数据并存入三个变量中;(2)利用指针实现从大到小输出;(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;(5)体会指针对不同数据处理的特点。
实验七:指针实验
南京工程学院通信工程学院实验报告课程名称高级语言程序设计(C)实验项目名称指针实验实验学生班级通信152实验学生姓名彭壮壮同组学生姓名实验时间12月3日实验地点信息楼c207实验成绩评定指导教师签字年月日实验六指针实验一、实验目的及要求1.掌握指针的概念,能正确定义和使用指针变量;2.掌握字符串指针和指向字符串的指针变量以及指针与数组的关系;3.能区分指针数组与数组指针的差异,能运用指向指针的指针、指向函数的指针变量;4.能运用指针编程解决实际问题和分析程序功能。
二、实验环境1.硬件环境:PC机一台2.软件环境:VC6.0三、实验内容1、验证性实验:(1)实验教材P54验证性(2)(2)实验教材P56验证性(3)2、设计性实验(1)实验教材P61设计性实验(1)(2)实验教材P61设计性实验(3)四、实验程序、结果和分析、遇到的问题和解决方法(1)利用指针实现字符串的基本操作,计算字符串的长度、拷贝、连接等操作,上机运行程序进行验证。
结果:(截图)分析:首先,当*p不等于‘\0’时,len++,计算字符串的长度;然后传送字符串s到t中,输出字符串t;最后将字符串s连接到字符串t后,输出字符串t。
遇到的问题和解决方法:注意区分*p与*pp,读懂每个语句的含义。
(2)利用swap(int,int)实现数的交换,阅读程序代码,分析其实现功能并上机验证程序。
结果:(截图)分析:此函数交换是将a[0]和a[5],a[1]和a[4]进行交换,a[3]不变。
遇到的问题和解决方法:需注意的是swap中与指针变量相对应的是数组元素的地址,swap中应取地址。
(3)写一个通用的函数int strSearch(char *str[]),该函数从一个字符指针数组中寻找指定的一个字符串,若找到返回1,找不到返回0.结果:(截图)分析:在main函数中输入两个数组str1,str2,判断str1中是否有与str2相同的字符串,用strcmp函数加以判断,若有,则两个字符串相减为0,返回值为1,否则为0,不存在。
C语言实验六实验报告——指针
一、实验项目名称指针二、实验目的1.掌握指针的基本概念和基本用法..包括:变量的地址和变量的值;指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计..三、实验内容有关指针的程序设计1.编程实现:任意输入的10个数;求其平均值..要求:110个数采用scanf语句读入..2利用指针实现对这10个数的访问..3要求平均值的精度为小数后面2位..2.编程实现:将一个任意整数插入到一个已排序的整数数组中;插入后数组中的数仍然保持有序..要求:1整数数组由初始化方式输入..任意整数由scanf函数输入;2实现过程采用指针处理;3输出原始数组数据以及插入数据后的数组数据并加以相应说明..3.编写函数newcopychar *new;char *old;它的功能是删除old所指向的字符串中的小写字母;并将所得到的新串存入new中..要求:1在主函数中以初始化方式输入一个字符串;2调用newcopy函数;3在主函数中输出处理后的结果..4.编程实现:输入三个整数;按由大到小的顺序输出..要求:1通过scanf函数输入三个数据并存入三个变量中;2利用指针实现从大到小输出;3修改程序;将三个整型数据改为字符型数据;输入三个字符;按从大到小数顺序输出;4修改程序;将三个字符型数据改为字符串数据;输入三个字符串;按从小到大顺序输出;5体会指针对不同数据处理的特点..四、实验步骤及结果一、#include <stdio.h>void main{int a10;n;sum=0;float aver;/* 定义平均数为浮点型*/int *p=a;/*初始化*/printf"Please input 10 numbers:\n";for n=0;n<10;++nscanf"%d";&an;/*输入十个数*/for n=0;n<10;++nsum=sum+*p+n;/*使用指针访问数据*/aver=floatsum/n;printf"Average is %.2f";aver;/*精确到小数点后两位*/}二、#include <stdio.h>void arrint *a;int n;/*定义排序函数*/void insertint *a;int num;/*插入并排序函数*/int n=10;/*定义数据个数;可修改*/void main{int *a;num;j;k;b10;printf"请输入个数据:\n";for j=0;j<n;++jscanf"%d";&bj;/*输入原始数据*/a=&b0;/*初始化*/arra;n;/*调用排序函数*/printf"排序好的数据为:\n";for j=0;j<n;++jprintf"%d ";*a+j;/*输出排序好的原始数据*/ printf"\n请输入要插入的数:";scanf"%d";#printf"插入%d后的数据为:\n";num;inserta;num;/*调用插入并排序函数*/}void arrint *a;int n/*排序函数*/{int k;j;h;for k=0;k<10;++kfor j=0;j<n-k-1;++jif *a+1+j<*a+j{h=*a+1+j;*a+1+j=*a+j;*a+j=h;}}void insertint *a;int num{void arrint *a;int n;int j;k;*a+n=num;/*将插入的数排在数组最后一位*/ arra;n+1;/*将新数组重新排序*/for j=0;j<n+1;++jif *a+j==num{k=j;break;}/*找到插入的数在数组中的位置*/ for j=0;j<n+1;++jprintf"%d ";*a+j;printf"\n插入的数据排在数组的第%d位";k+1;}三、#include <stdio.h>void newcopychar *new1;char *old;void main{char *new1;*old;a10;/*new是不能当做变量;所以用new1*/old=a;new1=a;/*字符串的初始化*/printf"请输入字符串:\n";scanf"%s";a;newcopynew1;old;/*调用函数*/printf"新的字符串为:\n";printf"%s";new1;}void newcopychar *new1;char *old{int n;j=0;for ;* old='\0';++oldif * old>'z' || * old<'a'{* new1+j=* old;++j;}/*排除原字符串中的小写字母;将其他字符存入新字符串*/ *new1+j='\0';/*结束新字符串;否则新字符串的输出会故障*/}四、#include <stdio.h>void main{void exchangeint *q1;int *q2;int*q3;int a;b;c;*q1;*q2;*q3;printf"请输入个数:\n";scanf"%d;%d;%d";&a;&b;&c;q1=&a;q2=&b;q3=&c;/*将三个数的地址存入q1q2q3中*/ exchangeq1;q2;q3;/*调用排序函数*/printf"3个数从大到小排列为:\n%d;%d;%d";a;b;c;}void exchangeint *q1;int *q2;int *q3{void swapint *q1;int *q2;/*调用交换函数*/if *q1<*q2swapq1;q2;/*若*q1小于*q2;交换地址位置*/if *q1<*q3swapq1;q3;if *q2<*q3swapq2;q3;}void swapint *q1;int *q2/*交换函数*/{int n;n=*q1;*q1=*q2;*q2=n;}修改程序;将三个整型数据改为字符型数据;输入三个字符;按从大到小数顺序输出:只需将程序中的所有int改为char;将%d改为%c即可..修改程序;将三个字符型数据改为字符串数据;输入三个字符串;按从小到大顺序输出:#include<stdio.h>#include<stdlib.h>#include<conio.h>int cmpchar *p1;char *p2 /* 字符串比较函数*/{int i=0;while *p1+i==*p2+iif *p1+i++=='\0' return 0; /* 这里是先判断*p1+i=='\0';然后再是i++ */ return *p1+i-*p2+i;}void sortchar *a3 /*排序函数*/{char *temp;int i;j;fori=0;i<3-1;i++/* 选择排序*/forj=i+1;j<3;j++ifcmpai;aj>0{temp=ai;ai=aj;aj=temp;}}void main{int i;char s381;*p3;/* 设定每个字符串不超过字节*/printf"请输入3个字符串:\n";fori=0;i<3;i++{getssi;pi=si;}sortp;printf"字符串从小到大排序为:\n";fori=0;i<3;i++printf"%s\n";pi;}五、思考题或实验感想小结函数指针、数组指针、字符串指针的使用..对于指针的使用;最重要的是搞清楚函数指针、数组指针和字符串指针的概念;不能混乱起来..函数指针变量指向一个函数;然后通过该指针变量调用此函数..函数指针中;函数名代表该函数的入口地址..函数指针只能指向函数的入口而不能指向函数中的某一条指令处;因此不能用*p+1表示函数的下一条指令..数组元素的指针就是数组元素的地址..C语言中规定数组名代表数组中首元素的地址;所以p=&a0和p=a等价..p+i;a+i就是ai的地址;或者指向数组的第i个元素..*p+i 或*a+i是p+i或a+i所指向的数组元素;即ai..指向数组的指针变量可以带有下标;如pi 与*p+i等价..字符串指针实际上是把字符串的第一个字符赋给指针变量..指针变量只能指向一个字符变量或其他字符型数据;不能同时指向多个字符数据..。
C语言实验六实验报告——指针
一、实验项目名称指针二、实验目得1.掌握指针得基本概念与基本用法。
包括:变量得地址与变量得值,指针变量得说明、指针变量得初始化、指针得内容与定义格式、指针得基本运算等;2.掌握数组与指针得关系并能够利用指针解决数组得相关问题;3。
掌握字符串与指针得关系并能够利用指针处理字符串得问题;4。
掌握指针与函数得关系并能够利用指针处理函数问题;5.了解指向指针得指针得概念及其使用方法;6。
能够使用指针进行程序设计。
三、实验内容有关指针得程序设计1。
编程实现:任意输入得10个数,求其平均值。
要求:(1)10个数采用scanf语句读入。
(2)利用指针实现对这10个数得访问。
(3)要求平均值得精度为小数后面2位。
2。
编程实现:将一个任意整数插入到一个已排序得整数数组中,插入后数组中得数仍然保持有序.要求:(1)整数数组由初始化方式输入。
任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后得数组数据并加以相应说明。
3。
编写函数newcopy(char *new,char *old),它得功能就是删除old所指向得字符串中得小写字母,并将所得到得新串存入new中。
要求:(1)在主函数中以初始化方式输入一个字符串;(2)调用newcopy()函数;(3)在主函数中输出处理后得结果.4。
编程实现:输入三个整数,按由大到小得顺序输出。
要求:(1)通过scanf函数输入三个数据并存入三个变量中;(2)利用指针实现从大到小输出;(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;(5)体会指针对不同数据处理得特点.四、实验步骤及结果一、#include <stdio、h〉voidmain(){ﻩint a[10],n,sum=0;ﻩfloat aver;/*定义平均数为浮点型*/int *p=a;/*初始化*/ﻩprintf("Pleaseinput 10 numbers:\n”);for (n=0;n<10;++n)ﻩscanf("%d",&a[n]);/*输入十个数*/ﻩfor(n=0;n<10;++n)ﻩsum=sum+*(p+n);/*使用指针访问数据*/ﻩaver=(float)sum/n;ﻩprintf(”Average is%、2f",aver);/*精确到小数点后两位*/}二、#include〈stdio、h>void arr(int *a,int n);/*定义排序函数*/void insert(int *a,int num);/*插入并排序函数*/intn=10;/*定义数据个数,可修改*/voidmain(){int*a,num,j,k,b[10];ﻩprintf("请输入个数据:\n");ﻩfor(j=0;j〈n;++j)scanf("%d",&b[j]);/*输入原始数据*/ﻩa=&b[0];/*初始化*/arr(a,n);/*调用排序函数*/ﻩprintf("排序好得数据为:\n");ﻩfor(j=0;j<n;++j)printf("%d",*(a+j));/*输出排序好得原始数据*/ ﻩprintf("\n请输入要插入得数:”);scanf(”%d",&num);printf("插入%d后得数据为:\n”,num);insert(a,num);/*调用插入并排序函数*/}voidarr(int*a,int n)/*排序函数*/{ﻩintk,j,h;ﻩfor (k=0;k〈10;++k)ﻩ for (j=0;j〈n-k—1;++j)ﻩif(*(a+1+j)<*(a+j)){ﻩﻩh=*(a+1+j);ﻩﻩﻩ*(a+1+j)=*(a+j);ﻩﻩ*(a+j)=h;ﻩ}}void insert(int *a,int num){ﻩvoidarr(int *a,intn);ﻩint j,k;*(a+n)=num;/*将插入得数排在数组最后一位*/arr(a,n+1);/*将新数组重新排序*/ﻩfor (j=0;j〈(n+1);++j)ﻩ if (*(a+j)==num){ﻩﻩﻩk=j;ﻩbreak;}/*找到插入得数在数组中得位置*/ﻩfor(j=0;j<(n+1);++j)ﻩﻩprintf(”%d",*(a+j));ﻩprintf("\n插入得数据排在数组得第%d位",k+1);}三、#include <stdio、h>void newcopy(char *new1,char *old);void main(){ﻩchar*new1,*old,a[10];/*new就是不能当做变量,所以用new1*/ old=a;new1=a;/*字符串得初始化*/ﻩprintf("请输入字符串:\n”);scanf("%s",a);ﻩnewcopy(new1,old);/*调用函数*/printf(”新得字符串为:\n");printf("%s”,new1);}void newcopy(char*new1,char*old){ﻩint n,j=0;for (;*old!=’\0';++old)ﻩif ((* old)>'z' ||(*old)〈'a’){ﻩﻩ*(new1+j)=* old;ﻩﻩ++j;}/*排除原字符串中得小写字母,将其她字符存入新字符串*/*(new1+j)='\0';/*结束新字符串,否则新字符串得输出会故障*/}四、#include <stdio、h>voidmain(){ﻩvoid exchange(int *q1,int *q2,int*q3);int a,b,c,*q1,*q2,*q3;ﻩprintf(”请输入个数:\n");ﻩscanf(”%d,%d,%d",&a,&b,&c);ﻩq1=&a;q2=&b;q3=&c;/*将三个数得地址存入q1q2q3中*/ ﻩexchange(q1,q2,q3);/*调用排序函数*/printf("3个数从大到小排列为:\n%d,%d,%d",a,b,c); }voidexchange(int *q1,int*q2,int *q3){ﻩvoid s*q1,int*q2);/*调用交换函数*/ﻩif (*q1〈*q2)ﻩﻩs);/*若*q1小于*q2,交换地址位置*/if (*q1〈*q3)ﻩs);if(*q2<*q3)ﻩs);}void s*q1,int*q2)/*交换函数*/{int n;n=*q1;ﻩ*q1=*q2;ﻩ*q2=n;}修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出:只需将程序中得所有int改为char,将%d改为%c即可。
实验6--指针
实验61.实验目的通过本次实验(1)掌握一维、二维数组指针变量的定义格式与引用方法;(2)掌握字符串指针变量的定义格式与引用方法;(3)学会用数组指针变量完成数组元素的数据处理,如求和、求最大值、最小值等;(4)学会用字符串指针变量处理字符串的比较、连接与测长度;(5)掌握指针与数组作为函数参数的程序编写方法。
2.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出实验输入数据与运行结果。
3.实验内容一.教材第100页练习题: 5-10; 5-11.二.编写如下程序:(1)编写程序,用4种方式求整型一维数组a[10]的平均值。
4种方式是指4种不同的数组元素表达方式。
实验数据:10,20,30,40,50,60,70,80,90,100方法一(指针方式,改变p,用*p访问元素)方法二(指针方式,首地址+位移,用*(p+i)访问元素)方法三(数组方式,指针变量的数组形式,用p[i]访问元素)方法四(指针方式,数组名+位移,用*(a+i)访问元素)(2)用指针变量编写下列字符串处理函数:●字符串拼接函数,void str_cat( char *p1,char *p2){函数体}●字符串比较函数,int str_cmp( char *p1,*char *p2) {函数体}●取字符串长度函数,int str_len( char *p){函数体}在主函数中输入两个字符串,对这两个字符串进行比较,并输出比较结果。
然后将两个字符串进行拼接,输出拼接后的字符串及其长度。
实验数据:"Visual C++" ,"Visual Basic"。
试验六 指针与应用
实验六指针与引用1 、下列程序有何问题,请改正,体会指针使用时应避免出现这个问题#include<iostream>using namespace std;int Fnl();int main(){int a=Fnl();cout<<"The value of a is:"<<a<<endl;return 0;}int Fnl(){int *p =new int(5);return *p;}2、下列程序(1)说出程序的公能(2)将其改为传递引用函数(3)将findmax(0函数改写未非递归函数(重新考虑参数个数)(1)#include<iostream>using namespace std;const size=10;void findmax(int *a,int n,int i,int *pk);void main(){int a[size];int n=0;cout<<"请输入"<<size<<"个数据:\n";for(int i=0;i<size;i++)cin>>a[i];findmax(a,size,0,&n);cout<<"最大的数是:"<<a[n]<<endl;cout<<"它的下标是:"<<n<<endl;}void findmax(int *a,int n,int i,int *pk){if(i<n){if(a[i]>a[*p k])*pk=i;findmax(a,n,i+1,&(*pk));}}3、一个程序,要求用户输入两个字符串,程序用strcmp()函数比较用户输入的两个字符串,并指出第一格字符串是小于、等于或大于第二个字符串。
指针 实验
C语言程序设计实验报告实验名称指针实验一、实验目的1.熟练掌握指针的说明、赋值、使用。
2.掌握用指针引用数组的元素,熟悉指向数组的指针的使用。
3.熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。
4.掌握指针函数与函数指针的用法。
二、实验任务1.源程序改错题下面程序是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个例子程序进行调试修改,使之能够正确执行。
#include "stdio.h"int main(void){float *p;scanf("%f",p);printf("%f\n",*p);return 0;}2.源程序完善、修改、替换题(1)下面的程序通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数,请在下划线处填写合适的表达式、语句、或代码片段来完善该程序。
#include "stdio.h"#include "string.h"int main(void){char a[80],b[80],c[160],*result=c;int choice,i;do{printf("\t\t1 copy string.\n");printf("\t\t2 connect string.\n");printf("\t\t3 exit.\n");printf("\t\tinput a number (1-3) please!\n");scanf("%d",&choice);}while(choice<1 || choice>5);switch(choice){case 1:p=strcpy;break;case 2:p=strcat;break;case 3:goto down;}getchar();printf("input the first string please!\n");i=0;printf("input the second string please!\n");i=0;result= (a,b);printf("the result is %s\n",result);down:;return 0;}(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.跟踪调试源程序#include "stdio.h"char *strcpy(char *,char *);int main(void){char a[20],b[60]="there is a boat on the lake.";printf("%s\n",strcpy(a,b));}char *strcpy(char *s,char *t){while(*s++=*t++);return (s);}(1)单步执行。
c语言指针实验报告
c语言指针实验报告C语言指针实验报告引言指针是C语言中非常重要的概念,它允许程序直接访问内存地址,为程序员提供了更大的灵活性和控制力。
本实验旨在通过一系列实验来深入理解C语言指针的使用和原理。
实验一:指针的基本概念在第一个实验中,我们首先学习了指针的基本概念。
我们了解了指针的定义和声明,以及如何使用指针来访问变量的内存地址。
通过编写简单的程序,我们成功地掌握了指针的基本语法和用法。
实验二:指针的运算在第二个实验中,我们进一步学习了指针的运算。
我们探讨了指针的加法和减法运算,以及指针与数组的关系。
通过实际的编程练习,我们深入理解了指针运算的原理和实际应用。
实验三:指针和函数在第三个实验中,我们学习了指针和函数之间的关系。
我们了解了如何在函数中使用指针作为参数,以及如何在函数中返回指针。
通过实验,我们掌握了指针在函数中的灵活应用,以及指针和函数之间的相互作用。
实验四:指针和动态内存分配在最后一个实验中,我们学习了指针和动态内存分配的知识。
我们了解了如何使用指针来动态分配内存空间,并在程序运行时释放内存。
通过实际的编程实践,我们成功地掌握了动态内存分配的技术,并了解了指针在内存管理中的重要作用。
结论通过本次实验,我们深入理解了C语言指针的使用和原理。
我们掌握了指针的基本概念、运算、函数和动态内存分配等知识,为进一步深入学习和应用C语言打下了坚实的基础。
指针作为C语言中非常重要的概念,对于程序员来说具有重要的意义,通过本次实验,我们对指针有了更深入的理解,相信在今后的学习和工作中能够更加熟练地运用指针来解决实际问题。
【实验指导书】实验3:循环结构程序设计-20150706
实验三:循环结构程序设计一、实验目的:1. 熟练使用for()、while()和do-while()三种语句实现循环程序设计;2. 理解循环条件和循环体,以及体会for()、while()和do-while()语句的相同及不同之处;3.掌握break和continue语句的使用。
二、实验要求:1. 参照《附件一:确定循环次数的程序设计》,完成相应的题目要求(共5题);2. 水仙花数是指各位数字的立方和等于该数本身的三位数。
例如,153是水仙花数,因为153=13+33+53。
请编程计算并输出所有的水仙花数,每个数占一行。
输出样例:153370371407#include<stdio.h>int main(){int s,d,z,i;for(i=100;i<=999;i++){s=i/100;d=i/10%10;z=i%10;if(i==s*s*s+d*d*d+z*z*z)printf("%d\n",i);}return 0;}3. 编写程序,输入一批正整数(以零或负数为结束标志),求其中的偶数和。
要求:使用while()语句实现此程序。
输入样例:1 2 3 4 5 0输出样例:6输入样例:-1输出样例:0#include<stdio.h>int main(){int n ,sum=0;while(scanf("%d",&n),n>0){if(n%2==0)sum+=n;}printf("%d",sum);return 0;}4.古代《张丘建算经》中有一道百鸡问题:鸡翁一,值钱五;母鸡一,值钱三;鸡雏三,值钱一。
百钱买百鸡,问鸡翁、母、雏各几何?其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。
请用穷举法编程计算,若用100元买100只鸡,则公鸡、母鸡和小鸡各能买多少只。
输出样例:0 25 754 18 788 11 8112 4 845.一球从100米高度自由落下,每次落地后反弹回原高度的一半,然后再落下再反弹。
实验六指针报告
中国矿业大学计算机学院实验报告campare(b1,b2);campare(b1,b3);campare(b2,b3);cout<<"用字符数组方法,排序后的字符数组为:"<<endl;cout<<b1<<endl;cout<<b2<<endl;cout<<b3<<endl<<endl;string s1,s2,s3;cout<<"用string方法"<<endl;cout<<"请初始化字符串:"<<endl;cin>>s1>>s2>>s3;cout<<"初始化的结果为:"<<endl;cout<<s1<<endl;cout<<s2<<endl;cout<<s3<<endl;if(s1>s2) cop(s1,s2);if(s1>s3) cop(s1,s3);if(s2>s3) cop(s2,s3);cout<<"用string方法,排序后的结果为:"<<endl;cout<<s1<<endl;cout<<s2<<endl;cout<<s3<<endl;}运行结果:*(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<<"最后数是第"<<*p<<"个"<<endl;return 0;}运行结果:编程挑战:5.编写一个程序,读取支票上的一个数值金额,并输出其文字表示。
指针实验报告
int change(char *s,int *p)
{ int k=0;
for(;*s!='\0';s++,p++ )
{if(*s>='0'&&*s<='9')
{*p=*s-'0';k++;}
}
return k;
}
int main()
{ char c[40];
int n,a[40],*p;
【增强题】:Eh8-1请在下面分别完本题的源程序代码及运行结果的画面:
源程序代码:
#include<stdio.h>
void lookup(int *str,int *l,int n )
{
int k;
*l=str[0];
for(k=0;k<n;k++)
if(str[k]<*l) *l=str[k];
}
int main()
{
int a[10],i,min,*b=&min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
lookup(a,b,10);
printf("min=%d\n",min);
}运行结果截图:
Eh8-2请在下面分别完成本题的源程序代码及运行结果的画面:
源程序代码:
p=a;
scanf("%s",&c);
n=change(c,a);
printf("%d",n);
《指针》C语言实验报告标准范本
报告编号:LX-FS-A45267 《指针》C语言实验报告标准范本The Stage T asks Completed According T o The Plan Reflect The Basic Situation In The Work And The Lessons Learned In The Work, So As T o Obtain Further Guidance From The Superior.编写:_________________________审批:_________________________时间:________年_____月_____日A4打印/ 新修订/ 完整/ 内容可编辑《指针》C语言实验报告标准范本使用说明:本报告资料适用于按计划完成的阶段任务而进行的,反映工作中的基本情况、工作中取得的经验教训、存在的问题以及今后工作设想的汇报,以取得上级的进一步指导作用。
资料内容可按真实状况进行条款调整,套用时请仔细阅读。
C语言实验报告《指针》学号:____ 姓名:____ 班级:____ 日期:____指导教师:____ 成绩:____实验五指针一、实验目的1、掌握指针的概念、会定义和使用指针变量2、掌握指向数组的指针变量3、掌握字符串指针的使用二、实验内容1、输入3个字符串,按由小到大的顺序输出。
(习题10.2)2、写一函数,求一个字符串的长度。
在main 函数中输入字符串,并输出其长度。
(习题10.6)3、完善程序,要求使用函数功能:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。
#include#includelong fun(char *p)填写程序void mainchar s[6];long n;printf("Enter a string: ");gets(s);n=fun(s);printf("%ld ",n);三、实验步骤与过程四、程序调试记录请在该处输入组织/单位名称Please Enter The Name Of Organization / Organization Here。
C++实验报告6
C++程序设计实验报告一、实验题目:实验六指针二、实验环境:硬件:系统windowns xp ;CPU:Pentium(R) 4 cpu 2.40GHz内存:512MB ;硬盘:38.2G软件:Microsoft Visual C++ 6.0三、实验目的(1)通过实验进一步掌握指针的概念,会定义和使用指针变量。
(2)能正确使用数组的指针和指向数组的指针变量。
(3)能正确使用字符串的指针和指向字符串的指针变量。
(4)能正确使用引用型变量。
四、实验内容编程序并上机调试运行程序(要求用指针或引用处理)。
(1)输入3个整数,按由大到小顺序输出。
编译一个函数用指针变量作为参数。
(2)在上题基础上将程序改为:输入3个字符串,按由小到大顺序输出。
(3)用引用变量作为形参,实现3个整数由小到大输出。
(4)有n个人围成一圈,顺序排号。
从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
(5)在主函数上输入10个等长字符串。
用另一函数对他们排序。
然后在主函数上输出10个已排好序的字符串。
要求用以下方法编程:1、指向一维数组的指针作函数参数;2、用string数组方法。
五、实验步骤与结果(1)输入3个整数,按由大到小顺序输出。
编译一个函数用指针变量作为参数。
程序如下:运行结果:(2)在上题基础上将程序改为:输入3个字符串,按由小到大顺序输出。
程序如下:运行结果:(3)用引用变量作为形参,实现3个整数由小到大输出。
程序如下:运行结果:(4)有n个人围成一圈,顺序排号。
从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
程序如下:运行结果:(5)在主函数上输入10个等长字符串。
用另一函数对他们排序。
然后在主函数上输出10个已排好序的字符串。
1、指向一维数组的指针作函数参数;程序如下:2、用string数组方法。
程序如下:运行结果:六、实验感想(1)实验二可以改写程序如下:运行结果:(2)实验三中应该运用引用形参。
指针实验报告
指针实验报告验实验6指针1.实验目的和要求(1)掌握指针的概念、指针变量定义格式和引用。
(2)掌握指针的运算方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针。
2.实验内容:实验指导书中的实验九。
3.实验步骤9.1调试程序,找出程序的错误。
9.2运行程序:9.3修改程序错误,并运行。
;9.4.程序填空:#includestdio.hmain(){inta[10],*p,i;p=a;/*p取得a的首地址*/for(i=0;ii++){*p=i;p++;}p=a;/*p取得数据*/for(i=0;ii++,p++)/*逐个扫描p中的元素*/printf(%-3d,*p);printf(\n}9.5.程序填空:程序填空:#includestdio.hmain(){inta[5][5]={0},*p[5],i,j;for(i=0;ii++)p[i]= a[i][0];for(i=0;ii++){*(p[i]+i=1;*(p[i]+5-(i+1))=1;}for(i=0;ii++){for(j=0;jj++)printf(%2d,p[i][j]);putchar("\ n");}}运行结果(请帖图):9.6编程(选作)97.运行程序(选作):4、实验心得:程序代码(请帖图):运行结果(请帖图):运行结果(请帖图):掌握了指针的变量定义格式和引用,掌握了指针的运算方法。
了解了数组的指针和指向数组的指针变量的区别。
能正确使用字符串的指针和指向字符串的指针变量,了解了指向函数的指针的使用方法,了解了指向指针变量的指针的使用方法。
1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南工业大学信息学院《程序设计基础》课程组实验指导
实验六:指针
一、实验目的:
1. 理解指针、地址和数组间的关系。
2. 掌握通过指针操作数组元素的方法;
3. 掌握数组名作为函数参数的编程方式。
4. 掌握通过指针操作字符串的方法。
二、实验要求:
1.设计一个程序计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2,float *psum,float *pdiff),其中op1和op2是输入的两个数,*psum和*pdiff是计算得出的和与差。
输入样例:1 3
输出样例:4.00 -2.00
2. 输入10个整数存入数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示“Not found”。
要求定义和调用函数seach(int list[],int n,int x),在数组list中查找元素x,若找到则返回相应的下标,否则返回-1,参数n代表数组list中元素的数量。
试编写相应程序。
输入样例:1 2 3 4 5 6 7 8 9 10
5
输出样例:4
输入样例:1 2 3 4 5 6 7 8 9 10
11
输出样例:Not found
3. 输入一个字符串,将该字符串中从第m个字符开始的全部字符复制成另一个字符串(不能使用系统库函数提供的strcpy()函数)。
m由用户输入,值小于字符串的长度。
要求编写一个函数mcopy(char *s,char *t,int m)来完成。
输入样例:abcde
3
输出样例:cde
三、实验内容:
(在实验课之前,根据实验要求,将程序流程图、源代码和测试用例整理于此;实验课上机调试过程中,发现错误,则直接在上面用其它颜色标记并修改出来。
)
四、实验结果&总结:
(列出实验过程中的收获和遇到的困难)
2014.9.制第1页。