- 5
- 0
- 约7.78千字
- 约 10页
- 2017-08-03 发布于河南
- 举报
实验八、指针(一)
1.教学教学进程:
序号 章节 名称 1 §9.1 地址和指针的概念 2 §9.2 指针变量 3 §9.3 指针与数组 2.考查知识点:
指针变量的使用,指针与数组。
3.实验目的:
(1) 掌握指针变量的定义与引用。
(2) 掌握指针与变量、指针与数组的关系。
4.实验内容:
课外实验题目(90分):
如下图所示,本程序由若干个文件组成。其中主函数在文件“main.c”中。其它文件中包含了相应的子程序、变量定义和宏定义。请阅读程序完成题目要求。
(1)文件“fun1.c”包含了三个函数:fun1()、swap()和swap_point()。其中函数swap()实现地址传递的两个参数交换;函数swap_point()实现两个变量地址的交换。请完成程序的空白。(每空3分,共15分)
序号 内容 1 2 3 4 5 (2)在文件“fun1.c”中,编写函数swap()的内容,使其完成对应功能。(10分)
(3)请回答fun1()的最后一行的输出结果是否实现从小到大的排序?为什么?(5分)
(4)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人。在文件“fun2.c”中使用函数fun2()实现上述功能。请根据主函数中对该函数的调用形式填写程序中的空白。(每空3分,共30分)
序号 内容 1 2 3 4 5 6 7 8 9 10 (5)有一个班3个学生,4门课存储在二维数组score中(学生编号从1开始)。①求所有成绩的平均分;②输出指定学号学生的所有成绩;③找出有不及格成绩的学生,并输出其所有成绩。上述功能在文件“fun3.c”中实现。请填写程序中的空白。(每空3分,共30分)
序号 内容 1 2 3 4 5 6 7 8 9 10 提示:可以改变数组score的分数再观察函数find的输出结果。
程序代码(题目部分):
/*************************fun1.c*****************************/
#includestdio.h
void fun1()
{
void swap(int *p1,int *p2);
void swap_pointer(int *p1,int *p2);
int n1,n2,n3,*p1,*p2,*p3;
printf(请输入三个整数 n1,n2,n3:);
scanf(%d,%d,%d,n1,n2,n3);
getchar();
p1=n1;
p2=n2;
p3=n3;
if(n1n2) ;
if(n1n3) ;
if(n2n3) ;
printf(\n 现在,按顺序排列的数为:%d,%d,%d\n,n1,n2,n3);
printf(\n请再次输入三个整数 n1,n2,n3 :);
scanf(%d,%d,%d, ); //要求用指针形式
getchar();
if(n1n2) swap_pointer(p1,p2);
if(n1n3) swap_pointer(p1,p3);
if(n2n3) swap_pointer(p2,p3);
printf(\n 现在,按顺序排列的数为:%d,%d,%d\n,*p1,*p2,*p3);
}
void swap(int *p1,int *p2)
{
}
void swap_pointer(int *p1,int *p2)
{
int ;
p=p1;p1=p2;p2=p;
}
/*************************fun2.c*****************************/
#includestdio.h
void fun2( )
{
int i,k,m,n;
printf(请输入游戏人数:n=);
scanf(%d,n);
;
for(i=0;in;i++)
*(p+i)= ; //以1到n为序给每个人编号
i=0; //i为每次循环时计数变量
k=0; //k为按1、2、3报数时的计数变量
m=0; //m为退出人数
while( )
{
if(*(p+
原创力文档

文档评论(0)