第六周作业
本周作业头
这个作业属于哪个课程 | C语言程序设计Ⅱ |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825 |
我在这个课程的目标 | 指针和地址的概念,指针变量的初始化和调用函数 |
这个作业在那个具体方面帮助我实现目标 | 数组与指针的运用 |
基础作业
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 i,j,result;
i=sqrt(*a);
j=sqrt(*b);
result=i+j;
return result;
}
流程图:
运行结果图:
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*pmax,int*pmin);
int main()
{
int n,i,a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int max,min;
max_min(a,n,&max,&min);
printf("max = %d
",max);
printf("min = %d
",min);
}
void max_min(int a[],int n,int*pmax,int*pmin)
{
int i;
*pmax=*pmin=a[0];
for(i=0;i<n;i++)
{
if(*pmax<a[i])
{
*pmax=a[i];
}
else if(*pmin>a[i])
{
*pmin=a[i];
}
}
}
流程图:
运行结果图:
思考题:
1.为什么要使用指针?它有什么用?
写程序需要尽可能少的内存,使用指针型变量在很多时候占用更小的内存空间
2.指针变量在内存中暂用多大的空间?它的大小由什么决定?
指针变量本身所占存储空间的大小取决于存储地址值所需的字节数,这个存储地址值就是一个32位的内存地址值
学习进度条:
周/日期 | 这周所花时间 | 学习到的知识点 | 目前比较迷惑的 |
---|---|---|---|
3/4-3/9 | 3小时 | 文件的读写 | 文件打开的代码格式 |
3/9-3/15 | 4小时 | 数组的运用 | 二位数组子数组的最大值的求和 |
3/16-3/22 | 3小时 | 选择排序法 | 冒泡排序法 |
3/22-3/29 | 5小时 | 二维数组 | 二维数组与字符串的结合使用 |
3/29-4/5 | 4小时 | 指针与地址 | 指针与数组的运用 |
学习感悟:
题目难度开始不断加大,需要更认真的去学习了