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

    基础作业一
    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
    (一)实验代码:
    double fun (double a, double b)
    {
    double y;
    y=pow(a,0.5)+pow(b,0.5);
    return y;
    }
    (二)设计思路

    (三)实验遇到的问题及解决方案
    此题是一个较易的函数题,以前做过类似的,现在只是求和所用变量变成了指针变量,没遇到问题,一遍过。

    (四)运行结果截图

    7-1 利用指针返回多个函数值 (30 分)
    读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。

    输入格式:

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

    输出格式:

    输出最大值和最小值。

    输入样例:

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

    5
    8 9 12 0 3
    输出样例:

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

    max = 12
    min = 0
    实验代码

    include<stdio.h>

    void max_min(int n, int *a);

    int main()
    {
    int i, n;
    int a[n];
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    scanf("%d", (a + i));

    max_min(n, a);
    
    printf("max = %d
    ", *(a));
    printf("min = %d", *(a + n - 1));   
    
    return 0;

    }

    void max_min(int n, int a)
    {
    int i, j, t;
    for(i = 0; i < n; 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;
    }
    }
    }
    }
    2.设计思路:

    3.本题调试中遇到的问题及解决办法
    问题1:真心不懂数组,反复看视频依旧觉得有点懵
    问题2;刚学指针不会用,是参考了其他博主的代码,我看了2种写法都去尝试了编写,存在的问题其实很多
    这一种是相较而言我比较理解的,数组名即使数组的首地址,可直接使用。
    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
    一 实验代码
    void input(int arr,int n)
    {
    for(int i=0;i<10;i++){
    scanf("%d",&arr[i]);
    }
    }
    void max_min(int
    arr,int n)
    {
    int t,q=0,w=0;
    for(int i=0;i<10;i++){
    if(arr[q]<arr[i])
    q=i;
    if(arr[w]>arr[i])
    w=i;
    }
    t=arr[w];
    arr[w]=arr[0];
    arr[0]=t;
    t=arr[q];
    arr[q]=arr[9];
    arr[9]=t;
    }
    void output(int *arr,int n)
    {
    int i;
    for(i=0;i<10;i++){
    printf("%3d",arr[i]);
    }
    }
    设计思路:

    3.运行截图

    思考题
    (一)为什么要使用指针?它有什么用?
    1、指针有利于大块数据的管理,特别是已经存在于内存中的数据,通过指针访问更方便, 在一些情况下指针和数组的效果差不多。
    2、用指针在函数间传递数据效率高,尤其是当数据量大的时侯。
    3.在函数调用中使用指针还可以返回多个值。
    4.指针计算更快速,节省空间 数据的处理与调用
    5.指针只是一个变量,它存储一个内存地址。如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程
    (二).指针变量在内存中暂用多大的空间?它的大小由什么决定?
    一般是四字节
    指针的大小实际上是由CPU的寻址位数决定,而不是字长
    结对编程:

    两个人对编写程序的熟练度都不高,不是很好

  • 相关阅读:
    C/C++多文件之间的变量定义
    PKU POJ 2186 Popular Cows 强连通分量
    重载函数
    ZOJ 2763 Prison Break
    201357 训练赛总结
    hdu 4467 Graph 构造
    201356 训练赛总结
    201353 NEERC 2012, Eastern subregional contest
    2013512 CF 183 总结
    一道动态规划
  • 原文地址:https://www.cnblogs.com/xiaoyao1234/p/10659507.html
Copyright © 2011-2022 走看看