博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019春第六周编程总结
阅读量:4986 次
发布时间:2019-06-12

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

这个作业属于哪个课程 C语言程序设计Ⅱ
这个作业要求在哪里
我在这个课程的目标是 利用指针知识解决相关实际问题
在具体哪方面帮我实现目标 设计密码开锁、交换变量解决问题以及电码加密
参考文献 C语言基础、

6-1 求两数平方根之和 (10 分)

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

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

其中 a和 b是用户传入的参数。函数求 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

实验代码:

#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;}double fun(double *a,double *b){double sum;sum=sqrt(*a)+sqrt(*b);return sum;

设计思路:

1580382-20190405182753550-916300768.png
遇到的问题及解决办法:
此题比较顺利,没遇到什么问题。
运行结果截图:
1580382-20190405182922593-1659506053.png

7-1 利用指针返回多个函数值 (30 分)

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

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

输出格式:

输出最大值和最小值。

输入样例:

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

58 9 12 0 3

输出样例:

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

max = 12min = 0

实验代码:

#include
void max_min(int sz[],int n,int *max,int *min); int main(){ int i,max,min,n; scanf("%d",&n); int sz[n]; for(i=0;i
sz[i]) { *min=sz[i]; } }}

设计思路:

1580382-20190405190312099-935692212.png
遇到问题及解决办法:
在调用max_min函数时遇到瓶颈,后面查阅百度了解了相关知识。
运行结果截图:
1580382-20190405190503771-954999440.png
预习题:
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
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

实验代码:

#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;}void input(int *arr,int n){int i;for(i=0;i
arr[sum]) sum=i;}t=arr[n-1];arr[n-1]=arr[sum];arr[sum]=t;sum=0;for(i=0;i
arr[i]) { sum=i; }}t=arr[0];arr[0]=arr[sum];arr[sum]=t;}void output(int *arr,int n){int i;for(i=0;i

设计思路:

1580382-20190405194242249-1064671114.png
遇到问题及解决办法:
在反复调用fo循环以及if语句时出错了,将sum、i、及中间变量t的值搞混淆了,最后问同学,了解了问题所在,并帮助我解决问题。
运行结果截图:
1580382-20190405194444368-66449385.png
思考题:
1.为什么要使用指针?它有什么用?
2.指针变量在内存中暂用多大的空间?它的大小由什么决定?
答:
1:

指针在很多情况可以用到。如 将一个结构体传递给一个函数。如果不用指针,传送速度慢,如果通过指针,只要传递一个地址。

作用:

1)直接操作内存,程序效率更高;2)可以写复杂度更高的数据结构,程序员可以操作内存,也可以写出灵活、复杂的数据结构;3)编写出简洁、紧凑、高效的程序。

2:

指针只是一个地址,在汇编后都是一个32位的内存地址(32位系统),指针变量本身所占存储空间的大小取决于存储地址值所需的字节数 。

学习进度表:

日期 总代码行数 博客字数(个) 所花时间 知识点
03/03 39 781 4hour 查找整数(函数章节)
03/09 41 680 5hour 数组,文件
03/18 45 580 3hour 数组、指针
03/22 26+42+24=92 720 6hour 数组的综合运用
03/29 35+22=57 790 7hour 数组、指针
04/05 17+38+52=107 650 6hour 指针、数组、函数等

1580382-20190405195510788-1023108016.png

学习感悟:

本周系统的学习了指针的相关内容,并利用其解决实际问题,
对于如何画好流程图有了较好的认知;
我觉得本周的难点是变量的初始化以及使用指针作为函数的参数的运用。还将继续学习指针的相关知识,能够熟练的运用指针的知识解决实际问题。

转载于:https://www.cnblogs.com/ImportantMagic/p/10659731.html

你可能感兴趣的文章
关于<meta name="viewport" content="width=device-width, initial-scale=1.0">的解释
查看>>
浪味仙
查看>>
LUOGU P4777 【模板】扩展中国剩余定理(EXCRT)
查看>>
[转]expect的安装
查看>>
HDU 1070 [Milk] 贪心
查看>>
关于 IsLocalUrl 方法的注意事项
查看>>
ln -s 软连接介绍
查看>>
计算到今天多少天--字符集要选GB2312
查看>>
《Python数据分析与挖掘实战》-第四章-数据预处理
查看>>
觉得父母思想过时,有时甚至阻碍到自己,如何有效沟通并说服?
查看>>
P3480 [POI2009]KAM-Pebbles 阶梯NIM
查看>>
STM32之CAN ---CAN ID过滤器分析
查看>>
android studio ndk 调试
查看>>
ylb-ASP.NET技术搭建不错的网站列表
查看>>
数据库实例: STOREBOOK > 用户 > 编辑 用户: PUBLIC
查看>>
tempfile module 临时文件/文件夹
查看>>
程序性能优化
查看>>
模板引擎StringTemplate
查看>>
【共读Primer】3.[1.3]注释简介 Page8
查看>>
Linux虚拟地址空间布局以及进程栈和线程栈总结(转)
查看>>