C语言实验八指针程序设计详解Word文档格式.docx
- 文档编号:7012140
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:11
- 大小:17.41KB
C语言实验八指针程序设计详解Word文档格式.docx
《C语言实验八指针程序设计详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言实验八指针程序设计详解Word文档格式.docx(11页珍藏版)》请在冰点文库上搜索。
,地址输出采用%u格式(因为内存地址是无符号的整数)。
#include<
stdio.h>
voidmain()
{
chara;
a='
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格式
intx,y;
int*ptr;
x=10;
ptr=&
y=*ptr;
printf(%disstoredataddr%u.\n,*&
printf(%disstoredataddr%u.\n,*ptr,ptr);
printf(%disstoredataddr%u.\n,y,&
*ptr);
printf(%disstoredataddr%u.\n,ptr,&
ptr);
y);
*ptr=25;
printf(\
Nowx=%d\n,x);
3.[目的]练习指针表达式。
[题目内容]已知,int
x,y,a,b;
int
*ptr1,*ptr2;
而且x=12;
y=4;
ptr2=&
y;
,编写程序,当执行表达式:
a=*ptr1**ptr2-6;
以及:
b=(4*(-*ptr2))/(*ptr1)+10;
后,各变量的值分别为多少?
[输出各变量的值。
intx,y,a,b;
int*ptr1,*ptr2;
x=12;
ptr1=&
ptr2=&
a=*ptr1**ptr2-6;
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++;
int*p,sum=0,i;
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;
for(i=0;
n;
i++,p++)
floataverage(floatx[],intn);
inti;
floata[10],ave;
printf(Enter10numbers:
);
10;
scanf(%f,&
a[i]);
ave=average(a,10);
printf(ave=%f\n,ave);
floataverage(floatx[],intn)
floatave1,sum=0.0;
ave1=sum/n;
returnave1;
6.[目的]指针与字符串
[题目内容]已知,charname[20]=DELHIk;
intlength;
char
*cptr=name;
,编写程序,使用指针来确定字符串的长度。
[输出字符串的长度][提示]关键语句:
while(*cptr!
='
\0'
)cptr++;
length=cptr-name;
先将指针定位于字符串开始处,利用循环结构将指针移动到字符串尾部,length=cptr-name;
即为字符串长度。
charname[20]=DELHIk;
char*cptr=name;
printf(%s\n,name);
)
printf(%c%u\n,*cptr,cptr);
cptr++;
printf(length=%d\n,length);
7.[目的]指针与函数
[题目内容]使用指针作函数参数,编写用于交换两个参数值的函数。
调用该函数用于对从键盘输入的两个整数进行交换。
[输入]x=100,y=200
[输出x=200,y=100
][提示]用于交换两个参数值的函数原型为:
exchange(int*a,int*b);
voidexchange(int*a,int*b);
printf(Entertwointegers:
);
scanf(%d%d,&
牰湩晴尨?
搥y=%d\n,x,y);
exchange(&
voidexchange(int*a,int*b)
intt;
t=*a;
*a=*b;
*b=t;
目的.[]函数返回指针8int*larger(int*a,int*b)题目内容]有函数:
[{
if(*a>
*b)
returna;
else
returnb;
和主函数:
int*larger(int*a,int*b);
intx=10,y=20;
int*p;
p=larger(&
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);
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;
printf(%d%d%d,a,b,c);
inttemp;
temp=*p1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 指针 程序设计 详解