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

    作业头:

    | 1 | 2 | |
    | -------- | -----: |
    | 课程名称 | c语言程序设计2|
    | 作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2889 |
    | 我的课程目标 | 我希望通过c语言的学习,学会灵活运用指针和数组 |
    |这个作业在哪个方面帮助我实现目标| 作业中使用了指针和数组 |
    |参考文献|课本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
    

    代码:

    {
    	double y; 
    	y=sqrt(*a)+sqrt(*b);
    	return y;
    }
    

    设计思路:

    问题及解决:

    sqrt()里面一定记得加 * ;否则编译错误。

    答案截图:

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

    设计思路:

    问题及解决:


    本题是照着冒泡排序法改的,排好后第一个为最小值,最后一个为最大值。
    最后一个printf语句的地址忘记加 () 所以错误。

    答案截图:

    思考题:

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

    因为作业要用,作用是提升作业难度,让咱脱发掉发。(以上是我瞎说的大实话,别看了)指针能够有效的表示数据结构,能动态分配内存,能较方便的使用字符串,有效的使用数组。指针直接与数据等的储存地址有关。

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

    这个限度是操作系统定义的。
    32位处理器上32位操作系统的32位编译器,指针大小4字节。32位处理器上32位操作系统的16位编译器,指针大小2字节。 32位处理器上16位操作系统的16位指针大小2字节。16位处理器上16位操作系统的16位编译器,指针大小2字节。

    预习作业:

    最小数放前最大数放后 (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)
    {
    	int i;
    	for(i=0;i<10;i++){
    	scanf ("%d",&arr[i]);
    }
    	}
    void max_min(int *arr,int n)
    {
    	int i,k,max,min,a,b;
    	min=max=arr[0];
    	for(i=0;i<10;i++)
    	{
    		if(max<=arr[i])
    		{
    			max=arr[i];
    			a=i;
    		}
    		if(min>=arr[i])
    		{
    			if(min=arr[i]);
    			b=i;
    		}
    	}
    	k=arr[9];
    	arr[9]=arr[a];
    	arr[a]=k;
    	k=arr[0];
    	arr[0]=arr[b];
    	arr[b]=k;
    }
    void output(int *arr,int n)
    {
    	int i;
    	for(i=0;i<n;i++){
    		printf("%3d",arr[i]);
    	}
    }
    

    设计思路:

    问题及错误:

    c++上运行的出,pta不可以。因为从c++复制代码过去的时候连函数声明一起复制过去了,大写的尴尬。

    因为输出的时候是%d空格空格,所以错误。
    答案截图:

    学习感悟:

    题目难度还在上升,但是老师觉得这些都很简单,我觉得老师以后上课讲题目每种类别的都要点一下,不一定要精讲,讲个大体思路就OK,但是题目类型一定要全面。

    结对编程:

    没啥太大用,还是百度来的实在。

    学习进度:


  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/y-x-n/p/10656364.html
Copyright © 2011-2022 走看看