C语言实验八指针程序设计详解.docx
- 文档编号:4901463
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:11
- 大小:17.41KB
C语言实验八指针程序设计详解.docx
《C语言实验八指针程序设计详解.docx》由会员分享,可在线阅读,更多相关《C语言实验八指针程序设计详解.docx(11页珍藏版)》请在冰点文库上搜索。
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(\
Nowx=%d\n,x);
}
3.[目的]练习指针表达式。
[题目内容]已知,int
x,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(=%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++)
{
牰湩晴尨學搥?
%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); 精彩文档. 实用标准文案 牰湩晴尨? 搥y=%d\n,x,y); exchange(&x,&y); 牰湩晴尨? 搥y=%d\n,x,y); } voidexchange(int*a,int*b) { intt; t=*a; *a=*b; *b=t; } 目的.[]函数返回指针8int*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; } 精彩文档.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 指针 程序设计 详解
![提示](https://static.bingdoc.com/images/bang_tan.gif)