指针参考答案

指针参考答案
指针参考答案

1.字符串的连接。

#include

#include

void main()

{char s1[800],s2[50],*p1,*p2;

printf("输入字符串s1及s2:\n");

gets(s1);

gets(s2);

for(p1=s1;*p1!='\0';p1++);

for(p2=s2;*p2!='\0';p2++,p1++)

*p1=*p2;

*p1='\0';

printf("字符串s1是:");

p1=s1;

printf("%s\n",p1);

}

2.求字符串的长度。

#include

#include

void main()

{char s1[800],s2[50],*p1,*p2;

printf("输入字符串s1及s2:\n");

gets(s1);

gets(s2);

for(p1=s1,p2=s2;*p1!='\0'&&*p2!='\0';p1++,p2++) if(*p1!=*p2) break;

if(*p1=='\0'&&*p2=='\0') printf("%d\n",0);

else if(*p1>*p2) printf("%d\n",1);

else if(*p1<*p2) printf("%d\n",-1);

}

3.字符串的复制。

#include

#include

void main()

{char s1[50],s2[50],*p1,*p2;

printf("输入字符串s2:\n");

gets(s2);

for(p1=s1,p2=s2;*p2!='\0';p1++,p2++)

*p1=*p2;

*p1='\0';

printf("字符串s1是:");

p1=s1;

printf("%s\n",p1);

}

4.求字符串长度。

#include

#include

void main()

{char s[50],*p;

int n=0;

printf("输入字符串s:\n");

gets(s);

for(p=s;*p!='\0';p++)

n++;

printf("字符串s长度是:");

printf("%d\n",n);

}

5.(实验八用指针法在一维有序数组中插入一个数据程序)#include "stdio.h"

#define M 10

main( )

{

int a[M+5]={10,20,30,40,50,60,70,80,90,99};

int i,n,*p;

printf("请输入要插入的数据:\n");

scanf("%d",&n);

for(p=a+M-1;p>=a;p--)

if(n<=*p) *(p+1)=*p;

else break;

*(p+1)=n;

printf("\n插入数据后的数列:\n");

for(p=a,i=0;i

printf("%d ",*(p+i));

printf("\n");

}

习题:8-13

#include "stdio.h"

#define M 10

void main( )

{

int a[5]={1,2,3,4,5}, b[5]={10,20,30,40,50};

int i,t,*p1=a,*p2=b;

printf("数组a是:\n");//输出数组a

for(;p1

printf("%4d",*p1);

printf("\n");

printf("数组b是:\n");//输出数组b

for(i=0;i<5;i++)

printf("%4d",*(p2+i));

printf("\n");

for(p1=a,p2=b;p2

printf("交换后的数组a是:\n");//输出数组a

for(p1=a;p1

printf("%4d",*p1);

printf("\n");

printf("交换后的数组b是:\n");//输出数组b

for(p2=b,i=0;i<5;i++)

printf("%4d",*(p2+i));

printf("\n");

}

实验六 指针.

实验六指针 ●实验目的 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

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

实验报告一(指针)

实验报告一(指针) 指针实验一 指向变量得指针变量编程一.实验目得与要求 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]; } } }

实验 指针应用

实验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

实验报告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; }

实验六指针

实验六指针 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页

10级实验六 指针与数组

实验四指针与数组 一、实验目的 (1)熟悉指针的概念,并掌握指针变量的定义及使用。 (2)掌握数组的指针和指向数组的指针变量及其应用。 (3)掌握字符串的指针和指向字符串的指针变量及应用。 (4)熟悉指针数组的概念及应用。 二、实验准备 1.指针与数组的基础知识 ①指针的定义: int a; //定义了一个整形变量a int *p; //定义了一个整型指针,可以存储整型变量的地址 p=&a; //p就指向了a,对a的访问就可以通过p去间接访问。*p=10;就完全等同于a=10; 说明:p指向了a,有p=&a,就有如下关系 1)*p完全等同于a; 2)p完全等同于&a; 3)程序中的*p=10;完全可以用a=10;去替代 4)*p---间接访问目标单元a;a是通过变量名直接访问a。 ②指针与一维数组: int a[6]={1,2,3,4,5,6},*p; p=a;//完全等同于p=&a[0]; 说明:1)a---地址常量,不能自增; 2)p---地址变量,p=&a[0];p++;这时p指向了a[1];如果有*p=10;相当于a[1]=10; 3)p=a;数组元素表示方法有:a[i], p[i], *(a+i), *(p+i) 数组元素的地址表示方法有:&a[i], &p[i], a+i, p+i ③指针与二维数组: int a[3][4], *p1, (*p2)[4] ; //p1—只能存放列地址,p2---只能存放行地址 p1=&a[i][j]; //等同于p1=a[i]+j; p1=*(a+i)+j; p1=a[0]; //等同于p1=&a[0][0]; p1=*a; p2=a; //等同于p2=&a[0] for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”, &a[i][j] ); //&a[i][j]等同于&p2[i][j],p2[i]+j, *(p2+i)+j 说明:1)a---地址常量,且是行指针,a+1,加的是一行; 2)p1----1级指针变量,只能存放列地址,即元素的地址,它的目标单元是二维数组的元素,p1+1,加的是一列。 3)p2----行指针变量,实质是2级指针,指向的是一行,要通过两次间接访问才能访问数组的元素。P2+1,加的是一行 4)a, p2, a+1, p2+2-----行指针 *a, p2[0], a[1], *(a+1),*a+1-----列地址 *aa, p2[0][0], *(a[1]+1), a[1][1]----元素 ③字符指针 系统规定:1)输出字符指针就是输出指针指向的字符串; 2)输出字符指针指向的目标对象,就是输出指针指向的单个字符。 char *p; p=“I love China!”;

实验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)掌握指针与变量、指针与数组的关系 二. 实验环境 Turbo C++ 3.0或Visual C++ 6.0 三. 实验预习 (1)、变量的指针就是变量的______。存放变量地址的变量是指针变量,它用来指向另一个变量。 (2)、指针变量的基类型用来指定该指针变量可以指向的__________。例如int *pointer_1,*pointer_2;定义的基类型为_____指针变量__________和__________。 (3)、指针变量全面的“*”表示该变量的类型为__________,在定义指针变量时必须指定__________。注意,只有整型变量的地址才能放到指向整型变量的指针变量中。 (4)、指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量。其中,取地址运算符为_____,指针运算符(“间接访问”运算符)为_____,取其指向的内容。 四.上机实验 1、编辑运行下面程序,并分析运行结果。 有n个人围成一圈,从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位。 #include #define N 50 int main() { int i,k,m,n,num[N],*p; printf("please input the total of numbers:"); scanf("%d",&n); p=num; for(i=0;i

实验六

题目:实验6 数组、指针与字符串 班级:11计算机一班姓名:邱光兰学号:2011131122 完成日期:2012/4/25 一.实验目的 (1)学习使用数组数据对象; (2)学习标准C++库的使用。 (3)学习字符串数据的组织和处理; (4)掌握指针的使用方法; (5)练习通过Debug观察指针的内容及其所指的对象的内容; (6)联系通过动态内存分配实现动态数组,并体会指针在其中的作用; (7)分别使用字符数组和标准C++库练习处理字符串的方法。 二.实验任务 (1)编写并测试3X3矩阵转置函数,使用数组保存3X3矩阵; (2)使用动态内存分配生成动态数组来重新完成第(1)题,使用指针视线函数的功能; (3)编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数; (4)使用string类声明字符串对象,重新实现第(3)题; (5)声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display ()显示姓名、街道地址、城市和邮编等属性,change_name() 改变对象的姓名属性,实现并测试这个类。

三.实验步骤 (1)编写矩阵转置函数,输入参数为3X3的整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操 作,编写main()函数实现输入、输出。 (2)改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过 debug观察指针的内容及其所指的对象中的内容。 (3)编程实现两字符串的连接。生命字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显 示输出。 (4)使用string类声明字符串对象,编程实现两个字符串的连接,在string 类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。 (5)在employee.h文件中声明Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符型数组来表示, 在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋 值可以使用字符串拷贝函数strcpy(char*, char*name);display() 中使用cout显示姓名、街道地址、城市和邮编等属性,change_name ()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中 声明这个类的对象并对其进行操作。 四.实验结果 (1)lab6_1.cpp

相关主题
相关文档
最新文档