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

    作业头

    这个作业属于的课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888
    我在这个课程的目标是 学会简单运用指针
    这个作业在哪个具体方面帮助我实现目标 实现了一个函数返回多个值
    参考文献 C语言程序设计

    6-1 求两数平方根之和

    函数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
    ", y );
    return 0;
    }
    

    /* 请在这里填写答案 */
    输入样例:
    12 20
    输出样例:
    y=7.94

    1)代码

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

    2)思路

    3)问题及解决方法


    问题是想的太复杂了,删减一下代码就可以了。

    4)运行结果

    7-1 利用指针返回多个函数值

    读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。
    输入格式:
    输入有两行: 第一行是n值; 第二行是n个数。
    输出格式:
    输出最大值和最小值。
    输入样例:
    在这里给出一组输入。例如:
    5
    8 9 12 0 3
    输出样例:
    在这里给出相应的输出。例如:
    max = 12
    min = 0

    1)代码

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

    2)思路

    3)问题及解决方法

    第二次在运用max-min函数时没有重新定义i导致编译错误。
    而且一开始的代码有很多逻辑上的错误,数组和指针的混用搞得我头大。
    所以,这题的代码是借鉴别人的,但现在差不多能搞懂这题了。

    4)运行结果

    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 i,j,max=0,min=0;
    for(i=1;i<n;i++)
      if(arr[max]<arr[i])
      max=i;
      j=arr[max];
      arr[max]=arr[n-1];
      arr[n-1]=j;
      for(i=1;i<n;i++)
      if(arr[min]>arr[i])
      min=i;
      j=arr[min];
      arr[min]=arr[0];
      arr[0]=j;
    }
    void output(int *arr,int n)
    {
     int i;
      for(i=0;i<n;i++)
      printf("%3d",arr[i]);
    return 0;
    }
    

    2)思路

    3)问题及解决方法


    开始没想好要用到哪几种函数,题意没搞明白,心情烦躁。
    在最大值换在最后一位的时候,忽略了最后一位的下标,应改为n-1。
    经过多次调试和同学的指导终于运行成功。

    4)运行结果

    思考题:

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

    为什么:作为编程语言中的一个对象,它可以帮助我们灵活的操作数据。
    用处:利用地址,它的值直接指向存储在另一个地方的值。通过它能快速找到以它为地址的内存单元,方便了我们的编程。

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

    空间:一般是四字节
    由当前CPU运行模式的寻址位数决定。

    学习进度条

    周/日期 这周所花的时间 代码行数 学到的知识点 目前比较疑惑的问题
    4.2-4.4 两天 280 运用指针进行运算以及指针与数组的结合使用 还是不能熟练分析出题目所需要运用的函数

    学习进度表

    时间 累计代码行数 累计博客字数
    第二周 50 300
    第三周 60 0
    第四周 100 400
    第五周 180 500
    第六周 280 700

    学习感悟:

    1.本周我学习了变量、内存单元和地址之间的关系,定义指针变量,进行指针变量的初始化,指针变量的基本运算,以及使用指针实现函数调用返回多个值。
    2.看了老师发表的相关预习视频,我也对指针的概念及其用法有了初步了解,这也说明了课前预习的重要性。多看教材,独立做题。心态要平稳,别慌,水到渠成。
    3.难点:上课跟不上老师思路,反应迟钝,基础不够。

    结对感悟:

    1.思想可以很好的融合,及时发现错误。
    2.增进了同学之间的关系。
    3.可以互相监督一下学习进度。
    4.不足:讨论时出现矛盾耽误了时间。

    继续加油吧...哎

  • 相关阅读:
    C++学习9 this指针详解
    福建省第八届 Triangles
    UVA 11584 Partitioning by Palindromes
    POJ 2752 Seek the Name, Seek the Fame
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    HDU 2988 Dark roads(kruskal模板题)
    HDU 1385 Minimum Transport Cost
    HDU 2112 HDU Today
    HDU 1548 A strange lift(最短路&&bfs)
  • 原文地址:https://www.cnblogs.com/saury/p/10657233.html
Copyright © 2011-2022 走看看