博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业——7
阅读量:5123 次
发布时间:2019-06-13

本文共 3498 字,大约阅读时间需要 11 分钟。

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

第六周作业

一 1 、求两数平方根之和

函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。

函数接口定义:

double fun (double *a, double *b);

其中ab是用户传入的参数。函数求a指针和b指针所指的两个数的平方根之和,并返回和。

裁判测试程序样例:

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

设计思路

1580745-20190405181127075-1996559548.png

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

无。

运行结果截图

1580745-20190405005200913-1314682634.png

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

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

输入格式:

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

输出格式:

输出最大值和最小值。

输入样例:

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

58 9 12 0 3

输出样例:

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

max = 12min = 0

实验代码

#include
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
a[i]){ *min = a[i]; } }}

设计思路

1580745-20190405181346302-1747225487.png

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

1580745-20190405014048276-1503024651.png

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

运行结果截图

1580745-20190405014219702-1180766365.png

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
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));    }}

设计思路

1580745-20190405182304702-1021825352.png

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

无。

运行结果截图

1580745-20190405021924817-393146878.png

预习的主要内容

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

思考题

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 了解了变量、内存单元和地址之间的关系;了解了如何定义指针变量,怎样使用指针变量,怎样进行指针变量的初始化;了解了指针变量的基本运算;了解了指针作为函数参数的作用;了解了如何使用指针实现函数调用返回多个值。 ...
...

三、学习折线图

1580745-20190405183828303-221702173.png

四、学习感悟&结对编程

  • 由于在上课时因为自身原因困意太深在课后完成作业时有些吃力,但大多书上的题目还是有流程和大纲的,给出的题目就是会有一些条件限制,这些是要注意的点。然后本周的结对编程又没有如期完成,因为个人有事,无法同同学一起结对编程,结对编程优劣参半吧,看个人情况了。

转载于:https://www.cnblogs.com/s-su/p/10657743.html

你可能感兴趣的文章
JavaWeb学习——自定义标签
查看>>
Saving Activity state in Android
查看>>
SquirrelMQ消息队列
查看>>
剑指Offer_编程题_4
查看>>
有多少人忽视了这简单的道理,又有多少人觉得理所當然。。。。
查看>>
[转帖]SQL中partition关键字的使用
查看>>
小程序实战小汇总
查看>>
inner join 与 left join 之间的区别
查看>>
more命令(转)
查看>>
SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
查看>>
warshall 求传递闭包 Cow Contest POJ - 3660
查看>>
css3学习笔记之渐变
查看>>
你会使用super()吗?你确定你了解它吗?
查看>>
【bzoj4825】[Hnoi2017]单旋 线段树+STL-set
查看>>
【小记】-003--a标签与 window.location.href 的区别
查看>>
python学习第十天列表的增加,修改,删除操作方法
查看>>
专题2(附篇):平面问题的差分解之差分公式的推导
查看>>
Vim命令
查看>>
pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下
查看>>
PLSQL不好用,提示ora-12514 错误解决方法
查看>>