实验10 指针2 (修复的)

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

实验报告

实验时间:6月7号

实验班级:计算机双学位1501

实验报告总份(片)数: 1 份(片)实验教师:饶东宁

计算机学院工一实验室

广东工业大学

实验报告

实验题目:实验10

实验时间:6月7号

实验班级:双学位1501

实验人学号:3213010359

实验人姓名:梁雪卿

实验教师:饶东宁

计算机学院工一实验室

广东工业大学

实验10 指针2

1 实验目的

(1)进一步掌握指针的应用

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

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

(4)了解指向指针的指针的用法

2 实验内容

根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要的讨论分析。

(1)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的人。

算法说明:

程序清单:

#include

int main()

{

int i,k,m,n,num[50],*p;

scanf("n=%d",&n);

p=num;

for(i=0;i

*(p+i)=i+1;

i=0;

k=0;

m=0;

while(m

{

if(*(p+1)!=0) k++;

if(k==3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n) i=0;

}

while(*p==0) p++;

printf("The last one is NO.%d\n",*p);

return 0;

}

运行结果:

分析与思考:

以1到n为序给每个人编号,i为每次循环时计数变量,k为按1,2,3报数时的计数变量,m为退出人数,当退出人数比n-1少时执行循环体,对推村恩编号为0,报数到尾i恢复为0,循环继续。

(2)将一个5*5的矩阵(二维数组)中最大元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。

算法说明:

change(int *p)

程序清单:

#include

int main()

{

void change(int *p);

int a[5][5],i,j,*q;

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

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

q=&a[0][0];

change(q);

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

{

for(j=0;j<5;j++)

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

void change(int *p)

{

int i,j,temp;

int *pmax,*pmin;

pmax=p;

pmin=p;

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

{

for(j=0;j<5;j++)

{

if(*pmax<*(p+i*5+j)) pmax=p+i*5+j;

if(*pmin>*(p+5*i+j)) pmin=p+i*5+j; }

}

temp=*(p+12);

*(p+12)=*pmax;

*pmax=temp;

temp=*p;

*pmin=temp;

pmin=p+1;

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

{

for(j=0;j<5;j++)

{if(i==0&&j==0) continue;

if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;}

}

temp=*pmin;

*pmin=*(p+4);

*(p+4)=temp;

pmin=p+1;

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

{

for(j=0;j<5;j++)

{if((i==0&&j==0)||(i==0&&j==4)) continue; if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;}

}

temp=*pmin;

*pmin=*(p+20);

*(p+20)=temp;

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

{

for(j=0;j<5;j++)

{if((i==0&&j==0)||(i==0&&j==4)||(i==4&&j==0)) continue;

if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;}

}

temp=*pmin;

*pmin=*(p+24);

*(p+24)=temp;

}

运行结果:

分析与思考:

change函数实现元素值交换。找出最大最小之,最大值与中心

相关文档
最新文档