之前的作业链接:http://www.cnblogs.com/1204113692yang/p/8625650.html
过去两周学习了指针的概念、指针变量的定义、指针的基本运算、指针操作改变主调函数的变量值、指针操作常规数组、指针操作字符数组等知识点。但是呢,无论是从上学期还是这学期,对于数组来说,还是一知半解的状态,一到数组,就听不懂了,凡是遇到数组的,即使是之前会的,也变得不会了,整的最近也是茫茫然。。。
代码托管Gitee平台:https://gitee.com/yangjinkuncharley/daily_pta/tree/master
评论同学的链接:http://www.cnblogs.com/Vinecy/p/8619059.html
http://www.cnblogs.com/Lixinhua18/p/8569649.html
http://www.cnblogs.com/X-JY/p/8619229.html
题目6-1 最小数放前最大数放后
1.设计思路
(1) 主要描述题目算法
第一步:阅读题目,明确题目要求。最小的数与第一个数对换,将最大的数与最后一个数对换。引用void input(int arr,int n);
void max_min(int arr,int n);
void output(int *arr,int n);
第二步:定义出各个函数所需求的变量。
第三步:遍历数组,该交换的交换,该输出的输出。
2.实验代码
void input(int *arr,int n)
{
int i = 0;
for(i = 0;i < n;i++)
{
scanf("%d",arr+i);
}
}
void max_min(int *arr,int n)
{
int i = 0, max = *arr, min = *arr, t = 0, indexmax = 0,indexmin = 0;
for(i = 0;i < n;i++)
{
if(*(arr+i)>max){
max = *(arr+i);
indexmax = i;
}
if(*(arr+i)<min){
min = *(arr+i);
indexmin = i;
}
}
t = *(arr+n-1);
*(arr+n-1)=max;
*(arr+indexmax) = t;
t = *arr;
*arr=min;
*(arr+indexmin) = t;
}
void output(int *arr,int n)
{
int i;
for(i = 0;i < n;i++)
{
printf(" %d ",*(arr+i));
}
}
3.流程图
4.实验结果
看的辛静瑶的,自己研究了一部分,拆开还可以,合并就不行了。
题目6-2 指针选择法排序
1.设计思路
(1) 主要描述题目算法
第一步:阅读题目,明确题目要求。对10个数进行由大到小的排序。引用void sort(int *x,int n);
第二步:通过指针选择排序法的模板对题目进行适当的调整;
第三步:代入所要求的数据进行检验。
2.实验代码
void sort(int *x,int n)
{
int *p,i,*j,*k,t;
for(k=x;k<x+9;k++)
{
p=k;
for(j=p+1;j<x+10;j++)
{
if(*p>*j)
{
p=j;
t=*k;
*k=*p;
*p=t;
}
}
}
}
3.流程图
4.调试结果
不知道哪里出错了
表格