实验六指针
一、实验目的及要求
1.通用实验进一步掌握指针的概念,会定义和使用指针变量;
2.能正确使用数组的指针和指向数组的指针变量;
3.能正确使用字符串的指针和指向字符串的指针变量;
4.能正确使用指向函数的指针变量;
5.了解指向指针的指针的概念及其使用方法。
二、实验学时
4学时
三、实验任务
编程序并上机调试运行程序(都要求用指针处理)。
1.上机验证以下c70101.c程序的运行结果
#include
void main()
{ inti,j,*pi,*pj;
pi=&i;
pj=&j;
i=5;
j=7;
printf("\n%d\t%d\t%d\t%d",i,j,pi,pj);
printf("\n%d\t%d\t%d\t%d",&i,*&i,&j,*&j);
}
运行结果:
5 7 -34 -32
-34 5 -32 7
相关知识:指针的值与指针指向的变量值的区别。在VC环境下,以上运行结果中的负数是另一个值。
2.上机验证以下c70102.c程序的运行结果
#include
void main()
{ inti,a[]={1,2,3},*p;
p=a;/*将数组a首地址赋给指针p*/
for (i=0;i<3;i++)
printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i));
}
运行结果:
1,1,1,1
2,2,2,2
3,3,3,3
相关知识:①指针指向数组的方法;②指针表示数组元素的方法。③数组元素的多种表示方法。
3.调试下列c70103.c程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。
#include
void main()
{ intj,a[12],*p=a;
for(j=0;j<12;j++)
scanf("%d",p++);
p=a;
for(j=1;j<=12;j++)
{ printf("%4d",*p++);
if(j%4 == 0)
printf("\n");
}
}
相关知识:①调试时指针变量指向哪个目标变量;②区分指针的值和指针指向变量的值;
③通过指针操作数组元素。
4.调试下列c70104.c程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴2个数的和,⑵2个数交换值。
#include
void main( )
{ inta,b,c,*p=&c;
void sum(int ,int ,int *);
void swap(int * ,int * );
scanf("%d,%d",&a,&b);
sum(a,b,p);
swap(&a,&b);
printf("sum=%d\n",c);
printf("a=%d,b=%d\n",a,b);
}
void sum(inta,intb,int *c)
{ *c=a+b;
}
void swap(int *a,int *b)
{ int *t;
t=a;
a=b;
b=t;
}
相关知识:①调试程序时注意参数传递的是数值还是地址。②指针作为参数;③利用指针得到多个返回值。
5.下面的c70105.c程序是用来从键盘输入十个整数,然后求出其中的最小值。填写空缺部分。
#include
int table[10];
void lookup(int *t,int *a,int n)
{ int k;
*a=t[0];
for(k=1;k if( ) *a=t[k]; } void main() { intk,min,*p=&min; for (k=0;k<10;k++) scanf("%d",table+k); lookup( , ,10); printf("min=%d\n",min); } 相关知识:①用数组名加地址偏移量表示数组元素地址的方法;②数组名作为函数参数; ③指针变量作为函数参数。 6.以下c70106.c程序建立一个如下所示的二维数组,并按以下格式输出。请从对应的一组选择项中,选择正确的填入。 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 #include void main() { int a[5][5]={0},*p[5],i,j; for(i=0;i<5;i++) p[i]= (1) ;A for(i=0;i<5;i++) { *(p[i]+ (2) )=1;C *(p[i]+5- (3) )=1;D } for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%2d",p[i][j]); (4) ;B } (1) A.&a[i][0] B.&a[i][1] C.&p[i] D.&a[0][i] (2) A.0 B.1 C.i D.(i+1) (3) A.0 B.1 C.i D.(i+1) (4) A.putchar("\n"); B. putchar('\n'); C. putchar(\n); D.printf('\n'); 相关知识:①二维数组与指针;②数组指针的概念和使用。 7.综合编程题:已知一个整型数组a[5],其各元素值为4,6,8,10,12。使用指针求该数组元素之积。 四、实验重点、难点 1.指针的定义、引用 2.指针与变量 3.指针与数组 4.指针与函数 五、注意事项 1.不同类型的指针混用 2.混淆数组与指针变量的区别 实验六指针 ●实验目的 1、进一步掌握指针的概念,会定义和使用指针变量。 2、能正确使用数组的指针和指向数组的指针变量。 3、能正确使用字符串的指针和指向宇符串的指针变量。 4、了解指向指针的指针的概念及其使用方法。 5、通过实验进一步理解指针和函数的几种关系。 ● 实验内容 1、输入两个整数,按由大到小的顺序输出。 输入以下程序并调试运行。 #include char *temp; int i,j,n=4; for(i=0;i 实验6 指针1.实验目的和要求 (1)掌握指针的概念、指针变量定义格式和引用。 (2)掌握指针的运算方法。 (3)掌握数组的指针和指向数组的指针变量。 (4)掌握指针与函数的关系。 (5)能正确使用字符串的指针和指向字符串的指针变量。(6)了解指向函数的指针。 (7)了解指向指针变量的指针。 2.实验内容:实验指导书中的实验九。 3.实验步骤 9.1 调试程序,找出程序的错误。 改正后的程序代码(贴图): 运行结果(帖图): 9.2 运行程序: 运行结果:; 9.3 修改程序错误,并运行。 改正后程序代码: 运行结果(帖图): 9.4. 程序填空: 运行结果(请帖图):9.5. 程序填空: 程序填空: #include 9.6 编程(选作) #include 实验6、指针和结构体 【实验目的】 1.掌握地址和指针的基本概念,学会定义和使用指针变量; 2.熟悉指针与数组之间的关系,能正确使用数组的指针和指向数组的指针变量; 3.掌握指针形参的作用,熟练掌握编写指针形参的函数; 4.掌握结构体类型变量和结构体指针的定义及结构体成员的引用方式; 5.掌握结构体数组的定义及应用方法; 6.掌握链表的定义及操作,并能熟练编写链表应用程序。 【实验内容】 1、程序填空 给定程序中函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指字符串为baawrskjghzlicda,执行后p所指字符数组中的字符串应为aachjlsw。 在以下程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。不得增行或删行,也不得更改程序结构。 程序填空如下: #include 一、实验项目名称 指针 二、实验目的 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 <> void main() { int a[10],n,sum=0; float aver;/* 定义平均数为浮点型*/ int *p=a;/*初始化*/ printf("Please input 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 <> void arr(int *a,int n);/*定义排序函数*/ void insert(int *a,int num);/*插入并排序函数*/ int n=10;/*定义数据个数,可修改*/ void main() 实验六指针 一、实验目的及要求 1.通用实验进一步掌握指针的概念,会定义和使用指针变量; 2.能正确使用数组的指针和指向数组的指针变量; 3.能正确使用字符串的指针和指向字符串的指针变量; 4.能正确使用指向函数的指针变量; 5.了解指向指针的指针的概念及其使用方法。 二、实验学时 4学时 三、实验任务 编程序并上机调试运行程序(都要求用指针处理)。 1.上机验证以下c70101.c程序的运行结果 #include 3,3,3,3 相关知识:①指针指向数组的方法;②指针表示数组元素的方法。③数组元素的多种表示方法。 3.调试下列c70103.c程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。 #include 实验六指针 一、实验目的 1、掌握指针的概念,定义和使用指针变量; 2、掌握指针与数组的关系,指针与数组有关的算术运算、比较运算。 3、掌握字符串指针作的用法。 二、相关知识点 ●地址和指针的概念; ●数组和指针的关系; ●字符串和指针的关系; 三、实验内容一(验证及程序分析) Eg5-1: 输入两个整数,并使其从大到小输出,用指针变量实现数的比较。 (1)源程序: #include printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } (2)程序运行结果: (3)在程序中的定义一个整型变量t,然后将语句段if(a Eg5-2:运行并改正下面程序中的错误。#include (2)请简要分析程序错误的原因: (3)请将程序中的错误改正后重新运行: Eg5-3:用指针法输入12 个数,然后按每行4 个数输出。 (1)算法分析:定义一个整型数组和一个整型指针,这样通过数组就可以静态分配内存空间,存储数据;然后将指针与数组相关,使指针指向与数组相同 昆明理工大学(C++面向对象编程)上机报告 实验六指针(一) 一、目的和要求 1. 熟悉指针的正确用法。 2. 掌握指针作为函数参数的使用方式 二、实验内容和步骤 1、指出下面程序错误的原因。 main( ) { int x=10,y=5,*px,*py; px=py; px=&x; py=&y; printf(“*px=%d,*py=%d,*px,*py); } 答:警告是px,py没有赋初值; 错误时printf语句中缺少了” 正确:printf(“*px=%d,*py=%d”,*px,*py); 2、下面的程序试图有如下运行结果: 请调试下面的程序,使其有如上执行结果。#include else strcpy(s,”computer”); put(s); } 分析出错原因。 If(c=’ c’)不应用赋值语句 Strcpy函数中s 不应该为指针!!应定义为数组;正确程序 3.下面的程序能获得上述运行结果吗? main() { char *S=”COMPUTER”; char c; printf(“which style you want t o \n”); printf(“capital (c) or uncapital(u);”); c=getchar(); if(c=’c’) put(s); else { s=”computer”; puts(s); } } 分析出错原因。 If(c=’ c’)不应用赋值语句 Put函数无法输出 正确程序 一、实验名称 实验6 数组与指针 二、实验目的 指针是C++最灵活最有特色的部分,没有熟练掌握指针,则不能说学会了C++。数组在处理同类型的多个数据问题时非常有效,是C++的重要数据类型。数组与指针之间有着密切关系。通过实践要求掌握: 1、指针的定义和使用; 2、指针与数组的相互关系; 3、数组或指针作为函数参数的函数定义及调用方法; 三、实验内容 1、课本6-18,6-20 2、按一定的规则可以将一个字符串经加密转换为一个新的串。 【提示】例如加密的简单方法是当为‘a’~‘y’的小写字母时用后一个字母代替前一个字母,其中‘z’变换为‘a’,其他字符时不变。例如:原串为This is a secret code! 加密后的串为Tijt jt b tfdsfu dpef! 编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。自己另设计一个带密钥的加密算法,例如密钥是一个常数,字符串加密的方法是将每个字符的ASCII 码值加上该常数,然后对128 求模。 【要求】编写程序,以密钥将输入的字符串加密输出,再以相同的密钥,将加密字符串解密输出。 四、实验环境 PC微机 Windows 操作系统 Microsoft Visual Studio 6.0集成开发环境; Microsoft Visual Studio 6.0集成开发环境的MSDN 五、实验步骤 1、6-18:#include using namespace std; int *Fn1(); int main() { int *a=Fn1(); cout<<"the value of a is:"<<*a; delete a; return 0; } int *Fn1() { int *p=new int (5); return p; } 6-20: #include 实验报告一(指针) 指针实验一 指向变量得指针变量编程一.实验目得与要求 1、理解指针得概念。 2、掌握指针变量得定义与使用。 3、掌握指针变量作为函数参数得使用方法。 二二. 实验题目1、用指针变量编程,求数组中得最大元素与最小元素. #include "stdio、h”#define N 10 void main() { ;)n tni,2tp* tni,1tp* tni,][rra tni(nimxamdiov?int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; ;b&=2p ;a&=1p? ;)N,2p,1p,yarra(nimxam? printf("max=%d,min=%d\n",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; * ;]0[rra=2tp*=1tp? for(i=1;i C语言程序设计实验报告 实验六指针程序设计 一、实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用数组的指针和指向数组的指针变量; (3)熟悉指针做函数参数的使用方法; (4)能正确使用字符串的指针和指向字符串的指针变量。 二、实验内容及步骤 1、按要求完善程序 下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。 程序代码如下所示:粗体部分为补充程序 #include 实验6指针 一.实验目的 1.熟练掌握指针、地址、指针类型、void指针、空指针等概念; 2.熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式; 3.会使用数组的指针和指向的指针变量; 4.会使用字符串的指针和指向字符串的指针变量 5.学会使用指向函数的指针变量; 6.了解指针与链表关系。 二.实验内容 1. 用调用函数,实现从两个数为输出较大者(要求用指针变量传递参数值)。 #include char *p = NULL; int len=0; int count1=0,count2=0,count3=0,count4=0,count5=0; cout<<"please input a string:"< C语言程序设计实验报告 实验六使用指针的程序设计(2) 班级2010196 学号201219628 姓名李明月 一、实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用字符串的指针和指向字符串的指针变量。 (3)能正确使用指向函数的指针变量; (4)了解指向指针的指针的概念及其使用方法。 二、实验内容及步骤 1.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。 程序代码: #include } 运行结果: 2.写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)程序代码: #include 南京工程学院 电力工程学院 学年第 1 学期 实验报告 课程名称 C语言程序设计 实验项目名称指针 实验学生班级 实验学生姓名 同组学生姓名 实验时间 实验地点电力工程基础实验室 实验报告成绩:评阅教师签字: 年月日电力工程学院二O一O年制 说明 1. 实验报告为实验的重要考核依据之一,每个实验必须定一份实验报告. 本实验报告原则上要求手写。 2.本实验报告各项内容的具体格式、字数可由指导教师根据实验具体情况提出具体要求。各项内容可另附页,为便于归档,附页尺寸不得大于本实验报告尺寸,并注意粘牢于附页粘贴处。 3. 实验报告封面中的“实验名称”应为实验教学大纲上所列的规范名称,“实验地点”应写出实验室的具体名称。请确认无误后再填写。 4. 实验报告的建议格式为: 一、实验目的和要求; 二、主要实验仪器和设备; 三、本次实验内容 (一)实验项目名称(按本次实验各项目填写) 1、原理或接线图 2、实验步骤及注意事项 3、实验预习过程中所遇到问题 …… 四、实验记录及数据处理(主要内容包括实验具体实施步骤、 实验原始数据、计算过程与结果、数据曲线、图表等。具体 格式按指导教师要求) 五、实验结论(主要内容包括本实验小结、实验体会或疑 问等。具体格式按指导教师要求) 5. 实验成绩由实验预习、实验表现、实验报告三部分组成。其中前两项各占总成绩的30%。实验报告成绩依据报告的科学性、全面性、规范性及书写态度综合考核。实验报告采用百分制,占实验总成绩的40%,教师请阅本报告后需签字并给出实验报告百分制成绩。 6. 实验报告需按要求时间以班级为单位交给指导教师,最长时间不得超过两周,实验报告如有明显抄袭者或不交者,实验总评成绩按 0 分记。 一、在以下程序中,主函数main调用了3个函数swap1、swap2和swap3,还定义了变量a 和b,程序设计的目的是要求通过函数调用,交换main中变量a和b的值。请分析在swap1、swap2和swap3这3个函数中,哪个函数可以实现这样的功能。 分别使用变量和指针作为函数参数的示例程序 # include 实验7 指针应用 一、目的 1、理解和掌握指针及指针变量的基本概念和定义。 2、熟练掌握指针的运算、算术运算、关系运算和赋值运算。 3、熟练掌握几种不同类型的指针、指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针、指向指针的指针。 二、要求 完成规定的内容,编写出符合题目要求的程序,当堂检查完成情况。尤其需要注意的是问题中输入输出的描述。同时,注意程序中需要处理的数据特点。 三、示例程序 701 求平均成绩 Description 某班期末考试后要统计本班某门课程的平均成绩、最高成绩和最低成绩,你的任务是编程序实现这一功能。一个班的人数不超过30人,要求实现求最高成绩,最低成绩和平均成绩的功能用一个函数完成,并用参数返回最高成绩、最低成绩和平均成绩。 Input 一组测试数据,第一行为一个整数N,表示本班有N个人,N<=30,接下来的N行中每行一个整数表示一个人的成绩。 Output 输出一行。该行包含三个数,分别是最高成绩、最低成绩和平均成绩。成绩之间由空格分隔,其中平均成绩为实数,并精确到小数点后两位。 Sample Input 5 90 83 76 85 62 Sample Output 90 62 79.20 参考代码: #include 上机实验八指针 一.目的要求 1.掌握指针的基本概念。 2.掌握指针变量的定义和初始化。 二.实验内容 【实验题1】程序填空,交换指针p1,p2所指向的变量。 # include 实验六指针 1.实验目的 (1)掌握指针变量的定义与引用。 (2)熟练使用数组指针、字符串指针编写应用程序。 (3)掌握C语言中指针数组的使用方法。 2.实验内容 1)验证性实验 (1)教材中188页阅读程序题1、2、3、4、5、8、9,写出程序的运行结果(写在书上),并理解程序的功能 (2) 阅读并运行下面程序,理解指向一维数组元素的指针。 #include 河南工业大学信息学院《程序设计基础》课程组实验指导 实验六:指针 一、实验目的: 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页 实验六指针 一.实验要求 1.掌握指针和间接访问的概念及定义指针变量方法。 2.熟练掌握指针变量作为函数参数传递的方法。 3.掌握通过指针变量引用数组的方法。 4.熟练掌握字符串的指针和指向字符串的指针变量的使用方法。 二.实验准备 1.新建文件夹实验六 三.实验内容和操作步骤 1.输入a和b两个整数,输出a和b的值,然后按先大后小的顺序输出。 操作步骤 (1)自己建立工作区及工程。 (2)新建C++源程序文件ex6_1.cpp。 (3) (4)编译、连接、运行程序。键盘上输入3 5, 观察运行结果 2.将上题改用函数处理。 操作步骤 (1)自己建立新工程。 (2)新建C++源程序文件ex6_2.cpp。 (3)在ex6_2文件中输入以下程序。 (4)编译、连接、运行程序,输入3 5,观察程序运行结果。 (5)将swap函数改为以下程序段,再编译、连接、运行程序,输入3 5, 观察程序运 行结果。 (6)将swap函数改为以下程序段,再编译,注意系统会有一个“警告”,思考为什么 有“警告”。 3.将数组a中的n个数按相反顺序存放。 操作步骤 (1)自己建立工作区及工程。 (2)新建C++源程序文件ex6_3.cpp。 (3)在ex6_3.cpp文件中输入以下程序。 (4)编译、连接、运行程序。观察运行结果。 (5)将inv函数改为以下程序段,再编译、连接、运行程序,观察程序运行结果 (6)inv函数的形参可以用*x和x[]两种形式,其程序段内也可以有x[i]和*(x+i)两种 形式,自己试验一下这几种可能,观察程序运行是否一致。 四.思考与实践 1、输入3个数a,b,c,按由小到大顺序输出,用指针及函数实现,以myf1.c存盘。 提示:先编写交换函数void swap(int *p1,int *p2),可以参照ex6_2.cpp中的swap函数编写。在给出的部分主函数中完成程序,不要增加变量和其他函数。实验六 指针.
c语言实验报告6 指针
实验6、指针和结构体(有答案)
C语言实验六实验报告——指针
实验六 指针(题目)
C语言_实验六 指针剖析
实验六 指 针
C++实验6 数组与指针
实验报告一(指针)
实验6指针程序设计
实验六 指针
实验六
实验报告6-指针实验
实验六指针的应用64
实验 指针应用
实验八指针
实验六指针
【实验指导书】实验6:指针-20150706
实验六