C语言实验八指针程序设计详解.docx

上传人:b****6 文档编号:7740139 上传时间:2023-01-26 格式:DOCX 页数:8 大小:16.40KB
下载 相关 举报
C语言实验八指针程序设计详解.docx_第1页
第1页 / 共8页
C语言实验八指针程序设计详解.docx_第2页
第2页 / 共8页
C语言实验八指针程序设计详解.docx_第3页
第3页 / 共8页
C语言实验八指针程序设计详解.docx_第4页
第4页 / 共8页
C语言实验八指针程序设计详解.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

C语言实验八指针程序设计详解.docx

《C语言实验八指针程序设计详解.docx》由会员分享,可在线阅读,更多相关《C语言实验八指针程序设计详解.docx(8页珍藏版)》请在冰豆网上搜索。

C语言实验八指针程序设计详解.docx

C语言实验八指针程序设计详解

实验八指针的应用

一、实验目的

1.掌握指针变量的定义和引用。

2.掌握指针与变量的程序设计方法

3.掌握指针与数组的程序设计方法

4.掌握指针与字符串的程序设计方法

5.掌握指针与函数的程序设计方法

二、实验内容

1.[目的]访问变量的地址。

[题目内容]已知,chara;intx;floatp,q;而且a=’A’;x=125;p=10.25;q=18.75;编写程序显示变量a,x,p,q的值及其地址。

[输入]无

[输出]变量a,x,p,q的值及其地址

[提示]使用运算符&,地址输出采用%u格式(因为内存地址是无符号的整数)。

#include

voidmain()

{

chara;intx;floatp,q;

a='A';x=125;p=10.25;q=18.75;

printf("%cisstoredataddr%u.\n",a,&a);

printf("%disstoredataddr%u.\n",x,&x);

printf("%fisstoredataddr%u.\n",p,&p);

printf("%fisstoredataddr%u.\n",q,&q);

}

Aisstoredataddr1245052.

125isstoredataddr1245048.

10.250000isstoredataddr1245044.

18.750000isstoredataddr1245040.

Pressanykeytocontinue

2.[目的]通过指针访问变量。

[题目内容]已知,intx,y;int*ptr;而且x=10;ptr=&x;y=*ptr;,运行下列程序,使用运算符*来访问指针所指的值。

[输入]无

[输出]x,&x、*&x,&x、*ptr,ptr、y,&*ptr、ptr,&ptr、y,&y。

[提示]地址输出采用%u格式

#include

voidmain()

{

intx,y;

int*ptr;

x=10;

ptr=&x;

y=*ptr;

printf("%disstoredataddr%u.\n",x,&x);

printf("%disstoredataddr%u.\n",*&x,&x);

printf("%disstoredataddr%u.\n",*ptr,ptr);

printf("%disstoredataddr%u.\n",y,&*ptr);

printf("%disstoredataddr%u.\n",ptr,&ptr);

printf("%disstoredataddr%u.\n",y,&y);

*ptr=25;

printf("\nNowx=%d\n",x);

}

3.[目的]练习指针表达式。

[题目内容]已知,intx,y,a,b;int*ptr1,*ptr2;而且x=12;y=4;ptr=&x;ptr2=&y;,编写程序,当执行表达式:

a=*ptr1**ptr2-6;以及:

b=(4*(-*ptr2))/(*ptr1)+10;后,各变量的值分别为多少?

[输入]无

[输出]各变量的值。

[提示]地址输出采用%u格式

#include

voidmain()

{

intx,y,a,b;

int*ptr1,*ptr2;

x=12;y=4;

ptr1=&x;

ptr2=&y;

a=*ptr1**ptr2-6;

b=(4*(-*ptr2))/(*ptr1)+10;

printf("%disstoredataddr%u.\n",x,&x);

printf("%disstoredataddr%u.\n",y,&y);

printf("%disstoredataddr%u.\n",*ptr1,ptr1);

printf("%disstoredataddr%u.\n",*ptr2,ptr2);

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

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

}

4.[目的]指针与数组

[题目内容]已知,int*p,sum,i;intx[5]={5,9,6,3,7};,编写程序,使用指针来计算数组中所有元素的总和。

[输入]无

[输出]

ElementValueAddress

x[0]51245024

x[1]91245028

x[2]61245032

x[3]31245036

x[4]71245040

sum=30

[提示]关键语句:

sum=sum+*p;以及p++;

#include

voidmain()

{

int*p,sum=0,i;

intx[5]={5,9,6,3,7};

p=x;

printf("ElementValueAddress\n\n");

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

{

printf("x[%d]%d%u\n",i,*p,p);

sum=sum+*p;

p++;

}

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

}

5.[目的]指针与数组

[题目内容]编写一个函数,用于对作为参数的数组中的元素求平均值,函数以指针方式进行处理。

平均值为函数的返回值。

[输入]10个实数

[输出]平均值

[提示]函数原型floataverage(intx[],intn);关键语句:

float*p;

p=x;

for(i=0;i

sum=sum+*p;

#include

voidmain()

{

floataverage(floatx[],intn);

inti;

floata[10],ave;

printf("Enter10numbers:

");

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

scanf("%f",&a[i]);

ave=average(a,10);

printf("ave=%f\n",ave);

}

floataverage(floatx[],intn)

{

floatave1,sum=0.0;

inti;

float*p;

p=x;

for(i=0;i

sum=sum+*p;

ave1=sum/n;

returnave1;

}

6.[目的]指针与字符串

[题目内容]已知,charname[20]="DELHIk";intlength;char*cptr=name;

,编写程序,使用指针来确定字符串的长度。

[输入]无

[输出]字符串的长度

[提示]关键语句:

while(*cptr!

='\0')cptr++;length=cptr-name;先将指针定位于字符串开始处,利用循环结构将指针移动到字符串尾部,length=cptr-name;即为字符串长度。

#include

voidmain()

{

charname[20]="DELHIk";

intlength;

char*cptr=name;

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

while(*cptr!

='\0')

{

printf("%c%u\n",*cptr,cptr);

cptr++;

}

length=cptr-name;

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

}

7.[目的]指针与函数

[题目内容]使用指针作函数参数,编写用于交换两个参数值的函数。

调用该函数用于对从键盘输入的两个整数进行交换。

[输入]x=100,y=200

[输出]x=200,y=100

[提示]用于交换两个参数值的函数原型为:

exchange(int*a,int*b);

#include

voidmain()

{

voidexchange(int*a,int*b);

intx,y;

printf("Entertwointegers:

");

scanf("%d%d",&x,&y);

printf("x=%dy=%d\n",x,y);

exchange(&x,&y);

printf("x=%dy=%d\n",x,y);

}

voidexchange(int*a,int*b)

{

intt;

t=*a;

*a=*b;

*b=t;

}

8.[目的]函数返回指针

[题目内容]有函数:

int*larger(int*a,int*b)

{

if(*a>*b)

returna;

else

returnb;

}

和主函数:

#include

voidmain()

{

int*larger(int*a,int*b);

intx=10,y=20;

int*p;

p=larger(&x,&y);

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

}

运行程序,给出运行结果,并说明此程序的功能。

9.[目的]指针综合应用

[题目内容]假设已有函数:

voidswap(int*p1,int*p2)

{

inttemp;

temp=*p1;*p1=*p2;*p2=temp;

}

编写程序,输入3个整数,调用swap函数,完成将3个整数按从小到大顺序输出的功能。

[输入]3个数

[输出]从小到大顺序输出

[提示]关键语句:

if(a>b)swap(p1,p2);

if(a>c)swap(p1,p3);

if(b>c)swap(p2,p3);

#include

voidmain()

{

voidswap(int*p1,int*p2);

inta,b,c;

int*p1,*p2,*p3;

printf("Enter3numbers:

");

scanf("%d%d%d",&a,&b,&c);

p1=&a;p2=&b;p3=&c;

if(a>b)swap(p1,p2);

if(a>c)swap(p1,p3);

if(b>c)swap(p2,p3);

printf("%d%d%d",a,b,c);

}

voidswap(int*p1,int*p2)

{

inttemp;

temp=*p1;*p1=*p2;*p2=temp;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1