zoukankan      html  css  js  c++  java
  • 作业——7

    这个作业属于哪个课程 C语言程序设计Ⅱ
    这个作业的要求在哪里 C语言作业评价标准
    我在这个课程的目标是 学会运用指针并复习数组的使用
    这个作业在哪个具体方面帮助我实现目标 用指针和数组
    参考文献 指针的作用

    第六周作业

    一 1 、求两数平方根之和

    函数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 c;
      c=sqrt (* a) + sqrt (* b);
      return c;
    }
    

    设计思路

    本题调试过程碰到问题及解决方法

    无。

    运行结果截图

    2 、利用指针返回多个函数值

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

    输入格式:

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

    输出格式:

    输出最大值和最小值。

    输入样例:

    在这里给出一组输入。例如:

    5
    8 9 12 0 3
    

    输出样例:

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

    max = 12
    min = 0
    

    实验代码

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

    设计思路

    本题调试过程碰到问题及解决方法

    愚蠢的问题,我在输出结果的等于号前后打了空格,然后一直格式错误,放进devc++运行结束后发现的......

    运行结果截图

    3 、第六周预习作业:最小数放前最大数放后

    为一维数组输入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
    

    实验代码

    void input(int *arr,int n){
        int i;
        for(i=0;i<10;i++){
            scanf("%d",arr+i);
        }
    }
    void max_min(int *arr, int n)
    {
        int i = 0, max = *arr, min = *arr, t = 0, indexmax = 0, indexmin = 0;
        for(i = 0;i < n; i++)
        {
            if(*(arr+i) > max)
            {
                max = *(arr+i);
                indexmax = i;
            }
        }  
        t = *(arr + n - 1);
        *(arr+n-1) = max;
        *(arr+indexmax) = t;   
        for(i = 0; i < n; i++)
        {
            if(*(arr+i) < min){
                min = *(arr+i);
                indexmin = i;
            }
        }    
        t = *arr;
        *arr = min;
        *(arr + indexmin) = t;
    }
    void output(int *arr, int n)
    {
        int i;
        for(i = 0; i < n; i++)
        {
            printf("%3d", *(arr+i));
        }
    }
    

    设计思路

    本题调试过程碰到问题及解决方法

    无。

    运行结果截图

    预习的主要内容

    ●变量、内存单元和地址之间的关系;定义指针变量,使用指针变量,进行指针变量的初始化;指针变量的基本运算;指针作为函数参数的作用;如何使用指针实现函数调用返回多个值。

    思考题

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

    ● 指针只是一个变量,它存储一个内存地址。如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程。
    ● 指针能够有效的表示数据结构,能动态分配内存,能较方便的使用字符串,有效的使用数组。
    ● 值传递不如地址传递高效,因为值传递先从实参的地址中提出值,再赋值给形参带入函数计算;而指针则把形参的地址直接指向实参地址,使用时直接提出数据,使效率提高,特别在频繁赋值等情况下。

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

    ● 指针变量是保存一个变量地址的变量,它里面保存的是一个特殊的东西:地址,即内存单元。一个内存单元要用32个状态来表示,(32个0和1),一个0或1占用1个位,8个位是一个字节,所以当然要占用32/8=4个字节的空间。
    ● 因机器不同所占的字节数也有所不同。在32位的机器上,一个指针变量占4个字节,在64位的机器上,一个指针变量占8个字节。

    二、学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第二周 4 hours 35 用c语言程序读取电脑中的文本文件并对其进行基础操作 ...
    第三周 4 hours 69 初步使用二维数组,如何写入一个矩阵 ...
    第四周 5 hours 102 认识了选择排序法、二分查找法和冒泡排序法以及在二维数组的定义、引用、初始化和其矩阵。 ...
    第五周 5 hours 98 用到二维数组,初用头文件<string.h>中的strlen函数和strcpy函数 ...
    第六周 5 hours 96 了解了变量、内存单元和地址之间的关系;了解了如何定义指针变量,怎样使用指针变量,怎样进行指针变量的初始化;了解了指针变量的基本运算;了解了指针作为函数参数的作用;了解了如何使用指针实现函数调用返回多个值。 ...
    ...

    三、学习折线图

    四、学习感悟&结对编程

    • 由于在上课时因为自身原因困意太深在课后完成作业时有些吃力,但大多书上的题目还是有流程和大纲的,给出的题目就是会有一些条件限制,这些是要注意的点。然后本周的结对编程又没有如期完成,因为个人有事,无法同同学一起结对编程,结对编程优劣参半吧,看个人情况了。
  • 相关阅读:
    开源项目中标准文件命名和实践
    linux远程拷贝命令-scp
    Linux访问Windows共享目录的方法——smbclient
    ADB Fix error : insufficient permissions for device
    APT典型应用示例
    我的参考书籍列表
    GCC Reference
    GNU make简介
    Windows下搭建Android NDK开发环境及命令行编译
    Git命令行基本操作
  • 原文地址:https://www.cnblogs.com/s-su/p/10657743.html
Copyright © 2011-2022 走看看