文档库 最新最全的文档下载
当前位置:文档库 › 实验6--指针

实验6--指针

实验6--指针

实验6

1.实验目的

通过本次实验

(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、进一步掌握指针的概念,会定义和使用指针变量。 2、能正确使用数组的指针和指向数组的指针变量。 3、能正确使用字符串的指针和指向宇符串的指针变量。 4、了解指向指针的指针的概念及其使用方法。 5、通过实验进一步理解指针和函数的几种关系。 ● 实验内容 1、输入两个整数,按由大到小的顺序输出。 输入以下程序并调试运行。 #include int main() { int a,b; int *p=&a,*q=&b,*t; cout<<"请输入a和b:"; cin>>a>>b; if(a

char *temp; int i,j,n=4; for(i=0;i0) { temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } //排序 for(i=0;i

c语言实验报告6 指针

实验6 指针1.实验目的和要求 (1)掌握指针的概念、指针变量定义格式和引用。 (2)掌握指针的运算方法。 (3)掌握数组的指针和指向数组的指针变量。 (4)掌握指针与函数的关系。 (5)能正确使用字符串的指针和指向字符串的指针变量。(6)了解指向函数的指针。 (7)了解指向指针变量的指针。 2.实验内容:实验指导书中的实验九。 3.实验步骤 9.1 调试程序,找出程序的错误。 改正后的程序代码(贴图): 运行结果(帖图): 9.2 运行程序:

运行结果:; 9.3 修改程序错误,并运行。 改正后程序代码: 运行结果(帖图): 9.4. 程序填空:

运行结果(请帖图):9.5. 程序填空:

程序填空: #include main() { int a[5][5]={0},*p[5],i,j; for(i=0; i<5; i++) p[i]= &a[i][0] ; for(i=0; i<5; i++) { *(p[i]+ i )=1; *(p[i]+5- (i+1) )=1; } for(i=0; i<5; i++) { for(j=0; j<5; j++) printf("%2d", p[i][j]); Printf("\n") ; } } 运行结果(请帖图):

9.6 编程(选作) #include main() { int *p,a[20],i,k,m,n; p=a; printf("请输入人数n:"); scanf("%d",&n); for(i=0;i

实验6、指针和结构体(有答案)

实验6、指针和结构体 【实验目的】 1.掌握地址和指针的基本概念,学会定义和使用指针变量; 2.熟悉指针与数组之间的关系,能正确使用数组的指针和指向数组的指针变量; 3.掌握指针形参的作用,熟练掌握编写指针形参的函数; 4.掌握结构体类型变量和结构体指针的定义及结构体成员的引用方式; 5.掌握结构体数组的定义及应用方法; 6.掌握链表的定义及操作,并能熟练编写链表应用程序。 【实验内容】 1、程序填空 给定程序中函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指字符串为baawrskjghzlicda,执行后p所指字符数组中的字符串应为aachjlsw。 在以下程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。不得增行或删行,也不得更改程序结构。 程序填空如下: #include void fun(char *s,char *p) { int i,j,n,x,t; n=0; for(i=0;s[i]!=’\0’;i++) n++; for(i=1;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 <> 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 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; } 相关知识:①调试程序时注意参数传递的是数值还是地址。②指针作为参数;③利用指针得到多个返回值。

C语言_实验六 指针剖析

实验六指针 一、实验目的 1、掌握指针的概念,定义和使用指针变量; 2、掌握指针与数组的关系,指针与数组有关的算术运算、比较运算。 3、掌握字符串指针作的用法。 二、相关知识点 ●地址和指针的概念; ●数组和指针的关系; ●字符串和指针的关系; 三、实验内容一(验证及程序分析) Eg5-1: 输入两个整数,并使其从大到小输出,用指针变量实现数的比较。 (1)源程序: #include void main() { int *p1,*p2,*p,a,b; scanf("%d,%d",&a,&b); p1=&a; p2=&b; if(a

printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } (2)程序运行结果: (3)在程序中的定义一个整型变量t,然后将语句段if(a

Eg5-2:运行并改正下面程序中的错误。#include void main() { int a=3,b; int *p; *p=a; b=*p; printf("%d\n",b); a=100; b=*p; printf("%d\n",b); } (1)程序运行结果:

(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 main () { char s*; char c; printf(“which style you want to :ln”); printf(“capital ( c ) or uncapital(a):”); c=getchar(); if(c=’c’)strcpy(s,”COMPUTER”);

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函数无法输出 正确程序

C++实验6 数组与指针

一、实验名称 实验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 using namespace std; class SimpleCircle { public: SimpleCircle(); SimpleCircle(int); SimpleCircle(const SimpleCircle &); ~SimpleCircle(){} void SetRadius(int); int GetRadius()const; private: int *itsRadius; }; SimpleCircle::SimpleCircle() { itsRadius=new int(5); } SimpleCircle::SimpleCircle(int radius) { itsRadius=new int(radius); } SimpleCircle::SimpleCircle(const SimpleCircle & rhs) { int val=rhs.GetRadius(); itsRadius=new int(val); } int SimpleCircle::GetRadius() const { return *itsRadius; } int main() { SimpleCircle CircleOne,CircleTwo(9); cout<<"CircleOne:"< #include using namespace std; const int key=12; void main() { string str; cout<<"请输入需要加密的字符:"<

实验报告一(指针)

实验报告一(指针) 指针实验一 指向变量得指针变量编程一.实验目得与要求 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 #define MAXLEN 20 int CountLetter(char *str, char ch) {

实验6指针程序设计

C语言程序设计实验报告 实验六指针程序设计 一、实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用数组的指针和指向数组的指针变量; (3)熟悉指针做函数参数的使用方法; (4)能正确使用字符串的指针和指向字符串的指针变量。 二、实验内容及步骤 1、按要求完善程序 下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。 程序代码如下所示:粗体部分为补充程序 #include #define N 20 void fun(int *a,int n,int *odd,int *even) { int i; for(i=0;i

实验六 指针

实验6指针 一.实验目的 1.熟练掌握指针、地址、指针类型、void指针、空指针等概念; 2.熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式; 3.会使用数组的指针和指向的指针变量; 4.会使用字符串的指针和指向字符串的指针变量 5.学会使用指向函数的指针变量; 6.了解指针与链表关系。 二.实验内容 1. 用调用函数,实现从两个数为输出较大者(要求用指针变量传递参数值)。 #include using namespace std; void swap(int *,int *); int main() { int x,y; cout<<"请输入两个整数:"<>x>>y; swap(&x,&y); cout<<"较大的数是:"< #include using namespace std; #define N 50 int main() { char a[N];

char *p = NULL; int len=0; int count1=0,count2=0,count3=0,count4=0,count5=0; cout<<"please input a string:"<= 'A' && *p <= 'Z') count1++; else if (*p >= 'a' && *p<= 'z') count2++; else if (*p == ' ') count3++; else if (*p >= '0' && *p<= '9') count4++; else count5++; } cout<<"大写字母:"< using namespace std; int findMinIndex(int a[], int n); int findMaxIndex(int a[], int n); void main() { int array[10]; cout<<"请输入十个数据:"<

实验六

C语言程序设计实验报告 实验六使用指针的程序设计(2) 班级2010196 学号201219628 姓名李明月 一、实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用字符串的指针和指向字符串的指针变量。 (3)能正确使用指向函数的指针变量; (4)了解指向指针的指针的概念及其使用方法。 二、实验内容及步骤 1.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。 程序代码: #include #include int main() { void nixu(char *to,int n); //声明函数 char c[30]; int n; printf("请输入一个字符串:"); gets(c); //输入字符串 printf("\n"); n=strlen(c); //计算输入的字符串的个数printf("您输入的字符串是:%s\n",c); nixu(c,n); //调用函数实现逆序输出功能 printf("\n"); printf("将您输入的字符串逆序输出:%s\n",c); return 0; } void nixu(char *to,int n) //定义nixu函数实现对函数的逆序排列 { int temp,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; temp=*(to+i); *(to+i)=*(to+j); *(to+j)=temp; }

} 运行结果: 2.写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)程序代码: #include #include void main() { void MaxString(char(*p)[81],char **max,int num); i nt n,i=0; c har str[10][81],*pt=NULL; p rintf("请输入几个字符串,以字符串****作为结束标志!:\n"); while(!strcmp(str[i-1],"****")==0) { gets(str[i]); i++; } n=i; M axString(str,&pt,n); p rintf("在您输入的字符串中,最长的字符串为:\n"); p uts(pt); } void MaxString(char(*p)[81],char **max,int num)//形参二维指针max 用于接收main()中最长字符串指针的地址 { *max=p[0]; f or(int i=1;istrlen(*max)) { *max=p[i]; } } }

实验报告6-指针实验

南京工程学院 电力工程学院 学年第 1 学期 实验报告 课程名称 C语言程序设计 实验项目名称指针 实验学生班级 实验学生姓名 同组学生姓名 实验时间 实验地点电力工程基础实验室 实验报告成绩:评阅教师签字: 年月日电力工程学院二O一O年制

说明 1. 实验报告为实验的重要考核依据之一,每个实验必须定一份实验报告. 本实验报告原则上要求手写。 2.本实验报告各项内容的具体格式、字数可由指导教师根据实验具体情况提出具体要求。各项内容可另附页,为便于归档,附页尺寸不得大于本实验报告尺寸,并注意粘牢于附页粘贴处。 3. 实验报告封面中的“实验名称”应为实验教学大纲上所列的规范名称,“实验地点”应写出实验室的具体名称。请确认无误后再填写。 4. 实验报告的建议格式为: 一、实验目的和要求; 二、主要实验仪器和设备; 三、本次实验内容 (一)实验项目名称(按本次实验各项目填写) 1、原理或接线图 2、实验步骤及注意事项 3、实验预习过程中所遇到问题 …… 四、实验记录及数据处理(主要内容包括实验具体实施步骤、 实验原始数据、计算过程与结果、数据曲线、图表等。具体 格式按指导教师要求) 五、实验结论(主要内容包括本实验小结、实验体会或疑 问等。具体格式按指导教师要求) 5. 实验成绩由实验预习、实验表现、实验报告三部分组成。其中前两项各占总成绩的30%。实验报告成绩依据报告的科学性、全面性、规范性及书写态度综合考核。实验报告采用百分制,占实验总成绩的40%,教师请阅本报告后需签字并给出实验报告百分制成绩。 6. 实验报告需按要求时间以班级为单位交给指导教师,最长时间不得超过两周,实验报告如有明显抄袭者或不交者,实验总评成绩按 0 分记。

实验六指针的应用64

一、在以下程序中,主函数main调用了3个函数swap1、swap2和swap3,还定义了变量a 和b,程序设计的目的是要求通过函数调用,交换main中变量a和b的值。请分析在swap1、swap2和swap3这3个函数中,哪个函数可以实现这样的功能。 分别使用变量和指针作为函数参数的示例程序 # include void main () { int a = 1, b = 2; int *pa = &a, *pb = &b; void swap1(int x, int y), swap2( int *px, int *py ), swap3 (int *px, int *py); swap1 (a, b); /* 使用变量a,b调用函数swap1() */ printf ("After calling swap1: a=%d b=%d\n", a, b); a = 1; b = 2; swap2(pa, pb); /* 使用指针pa,pb调用函数swap2()*/ printf ("After calling swap2: a=%d b=%d\n", a, b); a = 1; b = 2; swap3(pa, pb); /* 使用指针pa,pb调用swap3() */ printf ("After calling swap3: a=%d b=%d\n", a, b); } void swap1 (int x, int y) { int t; t= x; x = y; y = t; } void swap2 (int *px, int *py) { int t; t = *px; *px = *py; *py = t; }

实验 指针应用

实验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 int main() { void search(float score[100],int n,float *p1,float *p2,float *p3); float s[100]; int n,i; float max,min,avg; scanf("%d",&n); for(i=0;i*p1) *p1=score[i]; } *p2=score[0]; for(i=1;i

实验八指针

上机实验八指针 一.目的要求 1.掌握指针的基本概念。 2.掌握指针变量的定义和初始化。 二.实验内容 【实验题1】程序填空,交换指针p1,p2所指向的变量。 # include 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 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的值。

实验六指针

实验六指针 1.实验目的 (1)掌握指针变量的定义与引用。 (2)熟练使用数组指针、字符串指针编写应用程序。 (3)掌握C语言中指针数组的使用方法。 2.实验内容 1)验证性实验 (1)教材中188页阅读程序题1、2、3、4、5、8、9,写出程序的运行结果(写在书上),并理解程序的功能 (2) 阅读并运行下面程序,理解指向一维数组元素的指针。 #include void main() { int a[]={1,2,3}; int *p; p=a; /* 将数组a首地址送给p */ printf ("%d, %d, %d, %d\n",a[2],p[2],* (p+2),*(a+2)); printf ("%d, %d, %d, %d\n",a,a+2,p,p+2); } 2)设计性实验 (1)下面的程序是用来从键盘输入十个整数,然后求出其中的最小值。填写空缺部分。 #include void find(int *b,int *x,int n) { int i; *x=b[0]; for(i=1;i #include void main() { int i=0,j=0,k=0,m=0,n=0; char s[100],*p; printf("请输入一行字符:\n"); gets(s); for(p=s; ;p++) { if(*p>='A'&&*p<='Z') i+=1; else if( ) j+=1; /*统计小写字母的个数*/ else if(*p==' ') k+=1;

【实验指导书】实验6:指针-20150706

河南工业大学信息学院《程序设计基础》课程组实验指导 实验六:指针 一、实验目的: 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函数编写。在给出的部分主函数中完成程序,不要增加变量和其他函数。

相关文档