• 第六周作业


    ||
    |-|-|
    |这次作业属于那个课程|C语言程序设计|
    |这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2889|
    |我在这个课程的目标是|理解变量、内存单元和地址之间的关系;掌握如何使用指针变量;掌握指针变量的基本运算;理解指针作为函数参数的作用;掌握如何使用指针实现函数调用返回多个值|
    |这个作业在那个具体方面帮助我实现目标|正确使用字符串|
    |参考文献|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
    1).实验代码

    #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;
    }
    double fun (double *a, double *b)
    {
        double y;
        y=sqrt(*a)+sqrt(*b);
        return y;
    }
    

    2).设计思路

    3).本题调试过程

    4).实验结果截图

    利用指针返回多个函数值
    读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。
    输入格式:
    输入有两行: 第一行是n值; 第二行是n个数。
    输出格式:
    输出最大值和最小值。
    输入样例:
    在这里给出一组输入。例如:

    5
    8 9 12 0 3
    

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

    max = 12
    min = 0
    

    1).实验代码

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

    2).设计思路

    3).本题调试过程

    4).实验结果截图

    二、预习作业:

    最小数放前最大数放后
    为一维数组输入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).实验代码

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

    2).设计思路

    3).本题调试过程

    4).实验结果截图

    三、思考题:

      1.为什么要使用指针?它有什么用?
      2.指针变量在内存中暂用多大的空间?它的大小由什么决定?
    答:
    1.指针有利于数据的管理,通过指针访问数据更方便,值传递不如地址传递高效,在自定义函数中用指针使数据的改变作用到内存,并保留下来。指针解引用 *MyHouse:意思就是指的这块内存存放的实际数据。
    2.32位windows系统占用4字节,64位windows系统占用8字节。操作系统的位数决定了指针变量所占的字节数。

    四、学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    3/2-3/8 4小时 200 从文件上读入数据 文件结构和文件类型指针
    3/9-3/15 5小时 300 预习二维数组 文件文本
    3/16-3/22 5小时 300 1.一维数组:选择排序法、二分查找法;2.二维数据:定义、引用、初始化,二维数组与矩阵
    3/23-3/29 4小时 200 字符串与一维字符数组的区别、字符串的存储以及字符串的操作方法 指针
    3/30-4/5 3小时 200 理解变量、内存单元和地址之间的关系;掌握如何使用指针变量;掌握指针变量的基本运算;理解指针作为函数参数的作用;掌握如何使用指针实现函数调用返回多个值

    五、学习感悟

    指针还行没想象中的难,应该是还接触不深的原因。在预习作业中的max_min函数想用数组代替指针没弄成功,最后还是用的指针。

    六、结对编程

    结对编程更容易碰撞出思维的火花,可更全面的思考问题。不过每个人的想法不同,有时很难统一,都想用自己的想法。

  • 相关阅读:
    Ruby笔记四(数组)
    中央直属企业名单【中国级别最高的169家企业】(转)找工作按这个来
    循环pthread_create导致虚拟内存上涨(续1)
    除掉行数小程序
    client comserver编译配置运行详细说明
    网络监听技术概览(转待看)
    查看 linux系统版本,内核,CPU,MEM,位数的相关命令(实验)
    项目中Shell脚本说明(待完善)
    多线程 or 多进程 (实验1)
    循环pthread_create导致虚拟内存上涨(续2)
  • 原文地址:https://www.cnblogs.com/scafer/p/10659526.html
Copyright © 2020-2023  润新知