zoukankan      html  css  js  c++  java
  • 第六周作业

    要求 回答
    这个作业属于哪个课程 C语言程序设计
    这个作业的要求在哪儿 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/2891
    在这个课程的目标 学习指针与数组及函数间的关系
    这个作业在哪些方面帮助我 自己在练习中渐渐学会了运用指针。
    参考文献 C语言程序设计

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

    函数接口定义:

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

    其中 ab是用户传入的参数。函数求 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
    ", y );
    return 0;
    }
    
    
    /* 请在这里填写答案 */
    

    输入样例:

    12 20
    

    输出样例:

    y=7.94
    实验代码:

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

    设计思路:(1)将两个数的地址赋给指针变量a,b

                       (2)通过sqr函数求平方根,然后相加求和

    遇到的问题及解决方法:

     对于题目的理解不到位,不知道如何动手

     自己慢慢细致的看题解决

    运行结果截图

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

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

    输入格式:

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

    输出格式:

    输出最大值和最小值。

    输入样例:

    在这里给出一组输入。例如:
    5
    8 9 12 0 3

    输出样例:

    在这里给出相应的输出。例如:
    max = 12
    min = 0

    实验代码:

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

    设计思路:

    遇到的问题及解决方法:

    自定义函数中的符号问题

    看大佬们的代码,自己再摸索以及百度

    运行结果截图 :

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

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

    函数接口定义:

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

    三个函数中的 arrn 都是用户传入的参数。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;
    }
    
    /* 请在这里填写答案 */
    
    实验代码:

    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 i, max, min, h, j;

    for(i=0;i<n;i++){

    if(arr[h]>arr[i]){

    h=i;

    }

    }

    min=arr[0];

    arr[0]=arr[h];

    arr[h]=min;

    for(i=0;i<n;i++){

    if(arr[j]<arr[i]){

    j=i;

    }

    }

    max=arr[n-1];

    arr[n-1]=arr[j];

    arr[j]=max;

    }

    void output(int *arr,int n)

    {

    int i;

    for(i=0;i<n;i++){

    printf("%3d",arr[i]);

    }

    }

    设计思路:

     遇到的问题及解决方法:foy语句中循环出错,自己一遍又一遍的进行调试。

    运行结果截图:

     思考题
    为什么要使用指针?
    答:1.指针更有效率,特别是它能有效的处理数组;2.指针所代表的地址可以发生变化,在有些算法中会更加的容易理解;3.指针在数据传递时,因其传递的是地址而不是数据,所以既能提高速率,又能节省空间;4.指针做数据转换时能更加的灵活等等。
    指针有什么作用?
    答:1.指针存放变量的地址,不会只取原来变量的值;2.存放地址值,用以指向内存空间的数据;3.节省大量空间。
    指针变量在内存中暂用多大空间?
    答:32位编译器:4个字节;64位编译器:8个字节。
    它的大小由什么决定?

    答:由编译器的版本决定。

     

    条形图表不会做

    学习感悟:痛并快乐着。

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/FLZ1208/p/10659914.html
Copyright © 2011-2022 走看看