c语言上机实验实验七

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七

(2018-12-03~2018-12-05)

一、实验名称:

指针。

二、实验目的

(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;

(2)能正确使用数组的指针和指向数组的指针变量;

(3)能正确使用字符串的指针和指向字符串的指针变量;

(4)了解指向指针的指针的概念及使用方法。

三、实验项目(必做题)

本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。

以下均用指针方法编程:

(1)下面程序的功能是:用选择法排序,将输入的数按由小到大的次序排列。先仔细阅读程序及注释,然后根据题意填空。

main()

{ int i,j,k,t,*p;

int a[10];

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

scanf("%d",&a[i]); /*输入数据*/

p=a; /*指针p指向数组a*/

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

{ k=i; /*变量k中存放最终需要交换的元素的位置*/

for(j=i+1;j<10;j++)

if( ________ ) k=j; /*有更小的元素值时更新k的指向*/

if(k!=i) /*当k被更新后就需要交换数据*/

{ t=*(p+k);

*(p+k)=*(p+i);

______________; }

for(p=a;p

}

(2)以下程序的功能是:用函数实现a, b两个整数的交换。程序的部分语句如下,请先仔细读程序及注释,然后在此基础上写出完整的程序(缺少的语句可直接写在预留的空白处),并对新写的语句加上注释,最后上机调试通过。

main()

{ int a,b,*pa,*pb;

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

pa=&a; /*指针pa指向整数a*/

pb=&b; /*指针pb指向整数b*/

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

swap(pa,pb); /*调用函数swap,实参为指针*/

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

swap(p1,p2) /*定义函数swap,完成交换功能*/

int *p1, *p2; /*形参说明*/

(3)调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:

⑴2个数的和,

⑵2个数交换值。

要求用函数指针调用这两个函数,结果在主函数中输出。

main()

{ int a,b,c,(*p)();

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

p=sum;

*p(a,b,c);

p=swap;

*p(a,b);

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

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

}

sum(int a,int b,int c)

{ c=a+b;

}

swap(int a;int b)

{ int t;

t=a;

a=b;

b=t;

}

调试程序时注意参数传递的是数值还是地址。

(4) 在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数,

要求:数组中元素按照输入时的顺序不能改变位置。

测试实例:

输入: 101 13 71 37 31 17 73 79 97 11

输出: 11 13 17 31 37 71 73 79 97 101

(5) 用一个函数实现两个字符串的比较,即自己编写一个strcmp 函数,函数原型为:

int strcmp(char *p1,char *p2); 设p1指向字符串s1,p2指向字符串s2,

要求:

1)当s1=s2时,函数的返回值为0,

2)如果s1不等于s2,返回它们二者第一个不同字符的ASCII 码差值(如“BOY ”与“BAD ”,第二个字母不相同,“O ”与“A ”之差为79-65=14);如果s1>s2,则输出正值;如果s1

测试实例:

输入: T estPointer Testpointer

输出:-32

(6)将一个4×4的矩阵转置,用一函数实现之。

要求:

1)在主函数中用scanf 函数输入矩阵元素。

2)将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。 测试实例:

输入: 13741

1596

3 19118

5 2018

16

14 输出: 14531 16864 18

1197 20191513

(7)用指向指针的指针的方法对n 个整数按从大到小排序并输出。

要求:

1)将排序单独写成一个函数。

2)n 和各整数在主函数中输入,最后在主函数中输出。

测试实例:

输入:101 13 71 37 31 17 73 79 97 11

输出:101 97 79 73 71 37 31 17 13 11

将一个4×4的矩阵转置,用一函数实现之。

四、 实验项目(选做题)

(1) 任意输入5个字符串,调用函数按从大到小顺序对字符串进行排序,在主函数中输出排序结果。

(2) 课堂、以及教材中的一些示例程序。

(3) 教材278页开始习题:10.1-10.21。

相关文档
最新文档