第六周作业

mac2022-06-30  21

第六周作业

这个作业属于那个课程C语言程序设计Ⅱ这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/MS/homework/2893我在这个课程的目标是学会使用指针这个作业在哪个具体方面帮助我实现目标利用指针返回多个函数值参考文献《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\n", y ); return 0; } /* 请在这里填写答案 */

输入样例:

12 20

输出样例:

y=7.94

1.实验代码

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

2.设计思路

3.本题遇到的问题及解决办法 没有问题

4.结果截图

7-1 利用指针返回多个函数值 (30 分) 读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。

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

输出格式: 输出最大值和最小值。

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

5 8 9 12 0 3

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

max = 12 min = 0

1.实验代码

#include<stdio.h> void max_min(int * pmin, int * pmax, int * a, int n); int main(void) { int i, n, max=0, min=0; int a[1000]; scanf("%d", &n); for(i=0;i<n;i++) { scanf("%d", &a[i]); } max_min(&min,&max,a,n); printf("max = %d\nmin = %d",max,min); return 0; } void max_min(int * pmin, int * pmax, int * a, int n) { int temp; int i,j,index; for ( i=0 ; i< n-1 ; i++) { index=i; for (j=i+1 ; j < n ; j++) { if (a[j] < a[index] ) index=j; } if ( index!=i) { temp = a[i]; a[i] = a[index]; a[index] = temp; } } *pmax=a[n-1]; *pmin=a[0]; }

2.设计思路

3.运行遇到的问题及解决办法

问题:1.函数的调用这一部分知识忘记了好多,导致这里max_min(&min,&max,a,n);出现了错误。 解决办法:在我自己找不到错误后,我请教了同学,并且重新温习了函数的调用。 4.实验结果截图

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<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

1.实验代码

#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; } void input(int *arr,int n) { int i; for(i=0;i<n;i++) { scanf("%d", &arr[i]); } } void max_min(int *arr,int n) { int i, *min, *max, b; min = max = &arr[0]; for(i=1;i<10;i++) { if(*min > arr[i]) { min = &arr[i]; } if(*max < arr[i]) { max = &arr[i]; } } b = arr[0]; arr[0] = *min; *min = b; b = arr[9]; arr[9] = *max; *max = b; } void output(int *arr,int n) { int i; for (i=0;i<n;i++) { printf("=", arr[i]); } }

2.设计思路

3.运行时所遇到的问题及解决办法

问题:说到底是太菜了呀,之前一直编译错误,我最开始的是写成这样,输出的结果全部是1

void input(int *arr,int n) { int i; for(i=0;i<n;i++) { scanf("%d", &a[i]); int*arr=&a[i]; } }

解决办法:询问了同学,后来想起老师上课时说的以及结合函数的调用 百度了一下: 函数指针:返回的是函数的类型数据

指针函数:返回的是一个指针地址

函数名和数组名一样都是一个指针;即是地址 问题:最后修改后还是格式错误 解决办法:请教了助教,发现=前 加了个空格 4.运行结果截图

思考题:

  1.为什么要使用指针?它有什么用?   2.指针变量在内存中暂用多大的空间?它的大小由什么决定? 首先:指针就是地址 指针变量存放地址的变量 1.使用指针型变量在很多时候占用更小的内存空间。 指针通过地址传递参数,可以双向传递值。

指针的作用 1)处理堆中存放的大型数据 2)快速访问类的成员数据和函数 3)以别名的方式向函数传递参数

2.指针的大小与CPU的寻址长度相关

指针占用的内存空间大小与指针指向的内容和内容的大小无关。 在不同的操作系统及编译环境中,指针类型占用的字节数是不同的。一般而言, 编译生成16位的代码时,指针占2个字节 编译生成32位的代码时,指针占4个字节 编译生成64位的代码时,指针占8个字节

结对编程

本周结对编程时请假回家了,故没有与队友一起结对编程,以及与队友之间差距过大,一般都请教大佬了

结对编程的优点: (1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。 (2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。 (3)在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。 缺点:有的时候两个人会有不同的思路,将会导致一些分歧,这时会有些麻烦,一个人的时候更利于静下心来仔细思考

学习进度条

周/日期这周所花的时间代码行数学到的知识点简介目前比较迷惑的问题2/27-3/74h220文件这次作业没有3/8-3/144h230二维数组感觉还好,就是学习指针后面还是有点蒙3/15-3/248h250数组,冒泡排序法和选择法排序指针3/24-3/295h180字符串函数的使用3/30-4/58h224指针调用函数忘记了很多

博客字数和代码函行数

转载于:https://www.cnblogs.com/muxixixixi/p/10651509.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)