• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
海丿洋
博客园    首页    新随笔    联系   管理    订阅  订阅

第六周作业

这个作业属于哪个课程 C语言程序设计
这个作业要求在哪里 第六周作业
我在这个课程的目标是什么 掌握指针的运用
这个作业在那个具体方面帮助我实现目标 在自定义函数中指针的作用
参考文献 百度

 

函数题:基础作业

求两数平方根之和

函数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 x;
x=sqrt(*a)+sqrt(*b);

return x;
}

流程图省略了 ...........................就这么一行代码的东西

程序题:利用指针返回多个函数值

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

输入格式:

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

输出格式:

输出最大值和最小值。

输入样例:

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

5
8 9 12 0 3

输出样例:

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

max = 12
min = 0

1)我的代码

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

int max_min(int a[],int n,int *max,int *min )
{
    int i;
    *max=a[0];
    *min=a[0];
    for(i=0;i<n;i++)
    {
        if(a[i]>*max)
        *max=a[i];
        if(a[i]<*min)
        *min=a[i];
    }
    
}

预习作业

函数题:最小数放前最大数放后

为一维数组输入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

代码

#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;
}
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,min,i,q,p;
  
  max=*(arr+n);
  min=*arr;
  for(i=1;i<n;i++)
  {
    if(*(arr+i)<min)
    {
      min=i;
    }
  }
  for(i=0;i<n-1;i++)
  {
    if(*(arr+i)>max)
    {
      max=i;
    }
  }
  
  for(i=0;i<n;i++)
  {
    if(i==max)
    {
        p=*(arr+n-1);
        *(arr+n-1)=*(arr+i);
        *(arr+i)=p;
    }
    if(i==min)
    {
        q=*arr;
        *arr=*(arr+i);
        *(arr+i)=q;

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

 

 

思考题

为什么要用指针?它有什么用?

 就我个人认为,指针的作用更像是一种提高效率的工具。

没有指针,很多东西一样可以做,但是效率会低很多。

而使用指针后,可以用很小的内存对一些非常大的数据进行调用,同时指针也有一些特殊的用途,比如实现储存空间的动态分配,以及在函数中使用指针返回多个值。

指针变量在内存中暂用多大的空间?它的大小由什么决定?

指针变量的内存只与指针自身以及其编译环境有关,与其所指向的地址无关。

也正是如此,指针可以以很小的内存调动非常大的数据来提高效率。

 

四、学习进度条

 

周\日期

这周所花时间

代码行数

学到的知识点简介

目前比较迷惑的问题

4/5

10小时

107

自定义函数中指针的运用

莫得

 

 

 

 

 

posted @ 2019-04-05 21:51  海丿洋  阅读(264)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3