这个做业属于哪一个课程 | C语言程序设计II |
这个做业要求在哪里 | 2019年春季学期第六周做业 |
我在这个课程的目标是 | 我但愿可以经过学习C语言的知识,编写程序 |
这个做业在哪一个具体方面帮助我实现目标 | 这个做业让我知道了怎样将指针做为参数传入自定义函数中使用 |
参考文献 | sqrt函数 |
函数fun的功能是:求两数平方根之和,做为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。html
函数接口定义:编程
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
double fun (double *a, double *b) { double Y; Y = sqrt(*a) + sqrt(*b); return Y; }
读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。.net
输入格式:
输入有两行: 第一行是n值; 第二行是n个数。设计
输出格式:
输出最大值和最小值。3d
输入样例:
在这里给出一组输入。例如:指针
5 8 9 12 0 3
输出样例:
在这里给出相应的输出。例如:
max = 12 min = 0
#include<stdio.h> void max_min(int n, int number[10000], int *max, int *min); int main(void) { int i, n, max, min; scanf("%d", &n); int number[10000]; for(i = 0;i < n;i ++) scanf("%d", &number[i]); max_min(n, number, &max, &min); printf("max = %d\nmin = %d", max, min); return 0; } void max_min(int n, int number[10000], int *max, int *min) { *max = number[0]; *min = number[0]; for(int i = 0;i < n;i ++) { if(*max < number[i]) *max = number[i]; if(*min > number[i]) *min = number[i]; } }
为一维数组输入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
void input(int *arr,int n) { for(int i = 0;i < n;i ++) scanf("%d", arr+i); } void max_min(int *arr,int n) { int max, min, medium = 0, a, b, i; max = arr[0]; min = arr[0]; for(i = 0;i < n;i ++) { if(max < arr[i]) { max = arr[i]; a = i; } if(min > arr[i]) { min = arr[i]; b = i; } } medium = arr[a]; arr[a] = arr[n-1]; arr[n-1] = medium; medium = arr[b]; arr[b] = arr[0]; arr[0] = medium; } void output(int *arr,int n) { for(int i = 0;i < n;i ++) printf(" %d ", arr[i]); }
具体要求请参看邹欣老师博客 现代程序设计做业
第一步 输入二维数组
第二步 循环进行相邻(上下或左右)的元素的比较(难点)
第三步 循环比较大小的同时也不断将最大的元素的地址存储在另外一个数组中
第四步 输出最大矩形子数组的和
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
3/2-3/8 | 20h | 300行 | 数组,指针的大体意义,文件入门 | 数组串的使用,指针 |
3/9-3/15 | 25h | 400行 | 二维数组,文件与数组的结合运用 | 双for循环的流程图(再不上课,光自学感受太艰难了) |
3/16-3/22 | 22h | 450行 | 一维数组,二维数组,几种数组排序法 | 字符串使用 |
3/23-3/29 | 20h | 350行 | 字符串的定义及其使用 | 指针的具体使用 |
3/30-4/5 | 15h | 340行 | 指针变量的定义,使用,初始化及其基本运算,指针做为函数参数的做用;使用指针实现函数调用返回多个值 | 指针在运行时内存的变化 |