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

预习作业

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)要点

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

学习进度条

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

累计字数和代码行数

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

折线图

学习情况

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

猜你喜欢

转载自www.cnblogs.com/djhxxx/p/10656184.html