2019春季第六周作业

2019春季第六周作业

问题 回答
这个作业属于哪个课程 第八章·指针
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/2826
我在这个课程的目标是 能够熟练运用指针
这个作业在那个方面帮我实现目标 在自定义函数中可以返回多个值
参考文献 C语言程序设计

基础作业

6-1 求两数平方根之和 (10 分)

函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。

函数接口定义:

double fun (double *a, double *b); 

其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。

裁判测试程序样例:

#include<stdio.h>
#include <math.h> 
double fun (double *a, double *b); 
int main ( )
{ double a, b, y;
scanf ("%lf%lf", &a, &b );
 y=fun(&a, &b); printf ("y=%.2f\n", y );
return 0;
}


/* 请在这里填写答案 */

输入样例:

12 20

输出样例:

y=7.94

1)

实验代码

double fun (double *a, double *b)
{
   double y;
  y=sqrt(*b)+sqrt(*a);
  return y;
}

2)流程图

3)错误截图

这个题目的错误主要是定义错误,用int定义,而题目要求是保留两位数,放到c++里面运行就知道了

4)正确运行截图

5)心得

这个题目主要是考我们对指针的理解,要是理解了就不会有太大的问题。

7-1 利用指针返回多个函数值 (30 分)

读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。

输入格式:

输入有两行: 第一行是n值; 第二行是n个数。

输出格式:

输出最大值和最小值。

输入样例:

在这里给出一组输入。例如:

5
8 9 12 0 3

输出样例:

在这里给出相应的输出。例如:

max = 12
min = 0

1)实验代码

#include<stdio.h>
void max_min(int a[],int t,int *max,int *min);
int main()
{
  int n,i,max,min,t;
  scanf("%d",&n);
  int a[n];
  for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    
     max_min(a,t,&max,&min);
        printf("max = %d\n",max);
        printf("min = %d",min);
         return 0;
   
}
void max_min(int a[],int t,int *max,int *min)
{
  int i;
  *max=a[0];
  *min=a[0];
  
  for(i=1;i<t;i++){
    if(*max<a[i]){
       *max=a[i];
     }
      if(*min>a[i]){
        *min=a[i];
          }
        }
}

2)流程图

3)遇到的问题及错误

再输出的时候总是会无限循环,然后最大值等于于一个很大的数,最小值等于0

4)解决及正确截图

先在开头就给一个定义,然后再自定义中就会收到,这样就不会进入无限循环了

5)心得

这个题目考的是指针的运用,可以返回多个值。

预习作业

6-3 最小数放前最大数放后 (10 分)

为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。。

函数接口定义:

void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);

三个函数中的 arr和n 都是用户传入的参数。n 是元素个数。
input函数的功能是输入 n个元素存到指针arr所指向的一维数组中。
max_min函数的功能是求指针arr所指向的一维数组中的最大值和最小值,其中最小的数与第一个数对换,将最大的数与最后一个数对换。
output函数的功能是在一行中输出数组元素,每个元素输出占3列。

裁判测试程序样例:

#include<stdio.h>
void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);
int main()
{ int a[10];
input(a,10);
 max_min(a,10);
 output(a,10);
 return 0;
}

/* 请在这里填写答案 */

输入样例:

5 1 4 8 2 3 9 5 12 7

输出样例:

1  5  4  8  2  3  9  5  7 12

1)实验代码

void input(int *arr,int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
}
void max_min(int *arr,int n)
{
int max=0,min=0,t,i;
for(i=1;i<n;i++)
  if(arr[max]<arr[i])
  
   max=i;
  t=arr[max];
  arr[max]=arr[n-1];
  arr[n-1]=t;
  
  for(i=1;i<n;i++)

  if(arr[min]>arr[i])
 
  min=i;
  t=arr[min];
  arr[min]=arr[0];
  arr[0]=t;

}

void output(int *arr,int n)
{
	int i;
  for(i=0;i<n;i++)
  printf("%3d",arr[i]);
}

2)流程图

3)遇到的问题

在交换时没有交换下标,导致有两个最大最小值

4)正确截图

5)要点

这个题目主要是了解数组和指针的关系,知道关系就容易多了。

思考题

1.为什么要使用指针,它有什么用?

为什么:指针可以更好的处理数组中的数据操作,
用途:指针可以是我们快速找到他地址的内存单元,指针还可以比return更强,在自定义函数中返回多个值

2,指针变量在内存中占用空间多大,它的大小有什么决定?

指针的大小一般由cpu的寻位指数和处理位数有关,一般占用空间是以字节为单位,2字节,4字节,8字节都有。

学习进度条

第六周 这周所花时间 代码行数 学到的内容简介 目前比较困惑
4/1-4/7 10小时 69 用指针定义来返回多个值 对指针的定义,赋值,运用不了解

累计字数和代码行数

时间 累计字数 累计代码长度
第一周 126 23
第二周 335 68
第三周 461 105
第四周 584 157
第五周 724 227
第六周 841 283

折线图

学习情况

这周我们学习了指针,主要是理解指针是干嘛的,指针的定义和可以返回多个值

结对编程总结

优点:

      1,如果代码有问题可以两个人找错误
       2,两个人可以相互督促学习
       3,可以增进两个人之间的友谊

缺点

要是两个人有不同的思路,处理不好会闹矛盾,从而单独解决
posted @ 2019-04-04 19:03  渔家傲。  阅读(341)  评论(4编辑  收藏  举报