2019第六次作业
作业头
第六周基础题
作业一
函数题
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\n", y );
return 0;
}
/* 请在这里填写答案 */
输入样例:
12 20
输出样例:
y=7.94
一、实验代码
double fun (double *a, double *b) { double z; z=sqrt(*a)+sqrt(*b); return z; }
二、设计思路
根据题目例出函数声明,然后利用函数解决问题。
7-1 利用指针返回多个函数值 (30 分)
三、错误截图
问题:在例公式的时候加了double造成编译错误
解决方法:消去double
四、运行截图
作业二
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 *p,int b[]); int main (){ int a,i,b[10],c,*p,*q; scanf ("%d",&a); for(i = 0;i < a;i++) { scanf ("%d",&b[i]); } max_min(&a,b); return 0; } void max_min(int*p,int b[]) { int i, max, min; max = b[0]; min = b[0]; for(i = 0; i < *p ; i++){ if(max < b[i]) max=b[i]; if (min>b[i]) min=b[i]; } printf ("max = %d\nmin = %d",max,min); }
二、设计思路
三、错误截图
问题:min顺序搞反
四、运行截图
思考题
1、为什么要用指针?它有什么作用?
因为简单地说指针就是指向变量和对象的地址。指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。
2、.指针变量在内存中暂用多大的空间?它的大小由什么决定?
定义指针时并不是开辟内存空间,指定指针类型主要是为了在 *p 访问指针指向内容时可以确定怎样读取这块连续的内存(例如int与long所占的字节是不同的)
学习感悟
本周过后最大的感慨就是身边的同学都有很大的进步,但是我的进步不是很明显,我相信我自己我会加油的。
学习进度条