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.941.实验代码
#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 = 01.实验代码
#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 121.实验代码
#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)在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。 缺点:有的时候两个人会有不同的思路,将会导致一些分歧,这时会有些麻烦,一个人的时候更利于静下心来仔细思考
转载于:https://www.cnblogs.com/muxixixixi/p/10651509.html
相关资源:JAVA上百实例源码以及开源项目