zoukankan      html  css  js  c++  java
  • 2019春季第6周作业

    本周作业头
    这个教程属于哪个教程
    C语言程序设计II
    这次作业要求在哪里
    https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2889
    我在这个课程的目标是
    指针和地址的概念,指针变量的初始化和调用函数
    这个具体在哪个方面帮助我实现目标的
    类似于比赛中求人们的平均分
    参考文献
    指针

    一、基础作业#

    题目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 result;
        result=sqrt(*a)+sqrt(*b);
        return result;
     } 
    

    2)设计思路


    3)实验结果

    4)错误

    error: redefinition of ‘main’它意思是主函数重复定义把主函数去掉就行了

    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 n, int *a);
    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;
    }
    
    void max_min(int n, int *a)
    {
        int i,j,t; 
        for(i = 0;i < n - 1;i++)
        {
            for(j = 0;j < n - i - 1;j++)
            {
                if(*(a + j) < *(a + j + 1))
                {
                    t = *(a + j + 1);
                    *(a + j + 1) = *(a + j);
                    *(a + j)= t; 
                }
            }
        }
        printf("max = %d
    ", *(a));
        printf("min = %d
    ", *(a + n - 1));
        
    }
    

    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);
    

    三个函数中的 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 idx=0,i,t;
        for ( i = 0; i < n; i++ ) 
        { 
             if ( arr[i] < arr[idx] )
            { 
              idx=i; }      
        }   
       
        if(idx!=0){
            t=arr[0];arr[0]=arr[idx];arr[idx]=t;
        }
        idx=0;
        for ( i = 0; i < n; i++ ) 
        { 
             if ( arr[i] > arr[idx] )
            { 
               idx=i;}      
        } 
    
        if(idx!=(n-1)){
            t=arr[n-1];
            arr[n-1]=arr[idx];
            arr[idx]=t;}
    }
    
    void output(int *arr,int n)
    {
        int i;
        for(i = 0;i < n;i++){
            printf("%3d",*(arr + i));
        }   
    }
    

    2)实验思路


    3)实验结果

    思考题#

    1.为什么要使用指针?它有什么用?
    指向这个变量或数组的首地址,是变量的间接引用方式。其值如果改变,变量的值或数组元素的值也会跟着改变。程序对变量的操作实际上是对变量所在的存储空间读取和写入数据。方便对变量的操作。
    2.指针变量在内存中暂用多大的空间?它的大小由什么决定?
    32位编译器:4个字节;64位编译器:8个字节;由编译器的版本决定。

    学习进度条##

    学习总结##

    本周学习指针,指针作为函数的参数要记住参数传递是实参传到形参,并且指针变量的值是具有实际值的变量地址有了
    指针类型变量在其中放的实际上是地址。编码本就是一件熟能生巧的事,我还是要多学啊,做题时要仔细分析一个问题有
    好几种表答方法,总之还是要多再咯!

  • 相关阅读:
    Leetcode NO.110 Balanced Binary Tree 平衡二叉树
    Leetcode NO.226 Invert Binary Tree 翻转二叉树
    Leetcode NO.215 Kth Largest Element In An Array 数组中的第K个最大元素
    根据特征的浏览器判断
    Cygwin在打开在当前目录
    【转帖】科学对待 健康养猫 打造快乐孕妇
    解决chrome浏览器安装扩展、应用程序一直处在“检查中”的问题
    对【SQL SERVER 分布式事务解决方案】的心得补充
    关于“点击这里继续访问您选择的百度XXX”
    VBA一例:如何保持文本框焦点
  • 原文地址:https://www.cnblogs.com/luoyuliang/p/10659094.html
Copyright © 2011-2022 走看看