• 第六周编程总结


    第六周编程总结

    这个作业属于那个课程C语言程序设计2
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/MS/homework/2893
    我在这个课程的目标是 掌握指针的基本概念
    这个作业在那个具体方面帮助我实现目标 利用指针储存空间的动态分配
    参考文献 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
    ", 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 利用指针返回多个函数值 (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*p1,int*p2); 
    int n,a[1000];
    int main (void)
    
    {
      int min,max,i;
      int*p1=&max;
      int*p2=&min;
      scanf("%d",&n);
      for(i=0;i<n;i++)
      {
        scanf("%d",&a[i]);
      }
      max_min(p1,p2);
      printf("max = %d
    ",*p1);
      printf("min = %d",*p2); 
      return 0;
    }
    void max_min(int*p1,int*p2)
    {
      int j,c=0,m=0;
      for(j=0;j<n;j++)
      {
        if(a[j]>a[c])
        {
          *p1=a[j];
          c=j;
        }
      }
      *p2=a[m];
      for(j=0;j<n;j++)
      {
        if(a[j]<a[m])
        {
            *p2=a[j];
            m=j;
          }
      }
    }

    2.设计思路

    3.编程时遇到得问题
    对指针得不熟练,对于指针变量不理解,输出最值的时候不知道怎么操作

    4.运行结果

    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;
    }
    
    /* 请在这里填写答案 */
    

    输入样例:

    5 1 4 8 2 3 9 5 12 7
    

    输出样例:

      1  5  4  8  2  3  9  5  7 12

    1.实验编程
    #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 j,c=0,m=0,k;
      int min;
      int max;
      min=arr[c];
      for(j=0;j<n;j++)
      {
        if(min>arr[j])
        {
            min=arr[j];
            m=j;
          }
      }
      k=arr[m];
      arr[m]=arr[0];
      arr[0]=k;
      
      max=arr[c];
      for(j=0;j<n;j++)
      {
        if(max<arr[j])
        {
          max=arr[j];
          c=j;
        }
      }
      k=arr[c];
      arr[c]=arr[n-1];
      arr[n-1]=k;
    }
    void output(int *arr,int n)
    {
      int i;
      for(i=0;i<n;i++)
      {
        printf("%3d",arr[i]);
      }
    }

    2.设计思路

    找出最大值和最小值,分别和第一个最后一个换位置

    3.遇到的问题

    将数组直接换成了指针的变量,从开始就开始错。

    4.运行结果

    思考题
    思考题:(分值等同于编程题)
      1.为什么要使用指针?它有什么用?

    无法确定需要处理的数据数量时,就可以利用指针实现存储空间的动态分布。平时使用的别的变量(指的指针变量以外的变量),就是用变量名字代表了它所在的空间,本质还是到这个地址去访问;而用指针变量访问,就是直接访问这个空间了,因此更高效。
      2.指针变量在内存中暂用多大的空间?它的大小由什么决定?

    在编译器里定义一个指针变量,编译器会给这个指针变量分配一个空间。对于指针变量在内存中暂用多大的空间,其实指针变量用于存放变量的地址,由于不同类型的变量在内存中占用不同大小的存储单元,所以只知道内存地址,
    还不能确定改地址上的对象,因此在定义指针变量时除了指针变量名,还需要声明该指针变量所指向的内存空间上所存放数据类型,编译器给指针分配的空间大小是和CPU的寻址长度相关,而不是字长

    学习进度条

    日期累积的代码行数所花的时间累计博客字数时间
    11/3 12:00~17/3 12:00 120行 3h 300字 三小时


    心得


    心累,对于下一周的指针表示无语。爱与恨相互交错




  • 相关阅读:
    CRM小结 – Account Management 1
    懂ABAP的好处
    Enhancement in Sales order 销售订单中的增强
    Account Classification
    关于Business Data Toolset
    Account Life Cycle Stage - 客户的生命周期管理
    使用维护Relationship
    Tansaction Variant and Screen Variant
    关于软件测试的认识与学习目标
    《ASP.NET MVC Music Store Tutorial》在Visual Studio 2008简体中文环境下的代码修订
  • 原文地址:https://www.cnblogs.com/girlsteam/p/10658816.html
Copyright © 2020-2023  润新知