《C语言程序设计Ⅱ》实验指导书

C语言程序设计Ⅰ》实验指导书

(2012—2013学年第二学期)

班 级: 学 号: 姓 名: 教 师: 李洪波

医药信息工程学院·计算中心

2013年2月

目 录

实验1、指针(1) ................................ 1 实验2、指针(2) ................................ 4 实验3、结构体 .................................. 10 实验4、链表 .................................... 14 实验5、文件 .................................... 17

实验日期: 2013 年 月 日

实验1、指针(1)

一、实验目的

1、理解指针和指针变量、内存单元和地址、变量与地址、数组与地址的关系。 2、掌握指针变量的定义和初始化,指针变量的引用方式。 3、掌握指针运算符以及指向变量的指针变量的使用。 4、初步熟悉指向一维数组的指针变量的使用。 5、进一步熟悉和掌握调试程序的方法。

二、实验内容

1、读懂以下各组程序,画示意图理解指针的使用,单步执行观察各个变量取值情况,回答相应问题。

⑴以下两个程序的功能是输入三个整数,按由小到大的顺序输出。

#include //程序A #include //程序B

main() main() { int a,b,c,*p1,*p2,*p3,*t; { int a,b,c,*p1,*p2,*p3,t; scanf(\ scanf(\ p1=&a;p2=&b;p3=&c; p1=&a;p2=&b;p3=&c; if(*p1>*p2) {t=p1;p1=p2;p2=t;} if(a>b) {t=*p1;*p1=*p2;*p2=t;} if(*p1>*p3) {t=p1;p1=p3;p3=t;} if(a>c) {t=*p1;*p1=*p3;*p3=t;} if(*p2>*p3) {t=p2;p2=p3;p3=t;} if(b>c) {t=*p2;*p2=*p3;*p3=t;} printf(\ printf(\ } }

回答:两个程序的主要不同在于:

⑵以下两个程序的功能是通过指针变量的操作输出数组元素的值。 #include #include void main() void main() { int a[5]; { int i,a[5] ,*p=a; printf(\ int *p,i; for(i=0;i<5;i++) printf(\scanf(\ for(i=0;i<5;i++) p=a; scanf(\ for(i=0;i<5;i++,p++) for(p=a;p<(a+5);p++) printf(\ printf(\ printf(\ printf(\ } } 回答:两个程序的主要不同在于:

⑶下面所给程序是利用指针求解一个趣味智力问题(P291 习题5):有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。(先画示意图理解算法!)

#include

#define N 5 main()

{ int i,j,k,a[N+1],*p;

for(i=0,p=a;p<=a+N;i++,p++) *p=i; //给每人排号,a[0]=0表示未用

1

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4