diff --git a/【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.c b/【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.c new file mode 100644 index 0000000..70b22e2 --- /dev/null +++ b/【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.c @@ -0,0 +1,11 @@ +// double result_real, result_imag; + +void complex_add(double real1, double imag1, double real2, double imag2) { + result_real = real1 + real2; + result_imag = imag1 + imag2; +} + +void complex_prod(double real1, double imag1, double real2, double imag2) { + result_real = real1 * real2 - imag1 * imag2; + result_imag = real1 * imag2 + real2 * imag1; +} diff --git a/【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.md b/【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.md new file mode 100644 index 0000000..c57c657 --- /dev/null +++ b/【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.md @@ -0,0 +1,59 @@ +# 6-1 使用函数计算两个复数之和与之积 + +若两个复数分别为:`complex1 = real1 + imag1 i` 和 `complex2 = real2 + imag2 i`,则 + +它们的和为:`complex1 + complex2 = (real1 + real2) + (imag1 + imag2) i` + +它们的乘积为:`complex1 * complex2 = (real1 * real2 - imag1 * imag2) + (real1 * imag2 + real2 * imag1) i` + +本题要求实现两个函数分别计算两个复数之和、两个复数之积。 + +### 函数接口定义: + +```c++ +void complex_add (double real1, double imag1, double real2, double imag2); +void complex_prod (double real1, double imag1, double real2, double imag2); +``` + +其中用户传入的参数为两个复数`real1 + imag1 i` 和`real2 + imag2 i`;函数`complex_add`和函数`complex_prod`应将计算结果的实部存放在全局变量result_real中、虚部存放在全局变量result_imag中。 + +### 裁判测试程序样例: + +```c++ +#include + +double result_real, result_imag; +void complex_add(double real1, double imag1, double real2, double imag2); +void complex_prod(double x1, double y1, double x2, double y2); + +int main(void) +{ + double imag1, imag2, real1, real2; + + scanf("%lf %lf", &real1, &imag1); + scanf("%lf %lf", &real2, &imag2); + complex_add(real1, imag1, real2, imag2); + printf("addition of complex is (%f)+(%f)i\n", result_real, result_imag); + complex_prod(real1, imag1, real2, imag2); + printf("product of complex is (%f)+(%f)i\n", result_real, result_imag); + + return 0; +} + +/* 请在这里填写答案 */ +``` + +### 输入样例: + +```in +1 1 +-2 3 +``` + +### 输出样例: + +```out +addition of complex is (-1.000000)+(4.000000)i +product of complex is (-5.000000)+(1.000000)i + +``` diff --git a/【实践课内】12.函数3/6-2 全局变量和静态变量.c b/【实践课内】12.函数3/6-2 全局变量和静态变量.c new file mode 100644 index 0000000..6574f66 --- /dev/null +++ b/【实践课内】12.函数3/6-2 全局变量和静态变量.c @@ -0,0 +1,22 @@ +// int max=0,min=9999999,total=0; + +int fun() { + int x; + static int cnt = 0; + + while (scanf("%d", &x) != EOF && x != -1) { + total += x; + + if (x > max) { + max = x; + } + + if (x < min) { + min = x; + } + + cnt++; + } + + return cnt; +} diff --git a/【实践课内】12.函数3/6-2 全局变量和静态变量.md b/【实践课内】12.函数3/6-2 全局变量和静态变量.md new file mode 100644 index 0000000..ac887cf --- /dev/null +++ b/【实践课内】12.函数3/6-2 全局变量和静态变量.md @@ -0,0 +1,44 @@ +# 6-2 全局变量和静态变量 + +下面代码中,main函数三次调用函数fun,每次输入一组正整数,最后输出全部数据的最大值,最小值,总和,平均值。 +定义函数fun,完成一组数据处理,每组数组个数不确定,以负数结束输入,空格分隔。 + +### 函数接口定义: +```c++ +int fun (void); +fun返回值为这组数据的个数。(不包括结束标志) +``` + +### 裁判测试程序样例: +```c++ +在这里给出函数被调用进行测试的例子。例如: +#include +int max=0,min=9999999,total=0; +int fun (void); + +int main() +{ + int n; +n=fun(); +n=fun(); +n=fun(); +printf("max=%d min=%d total=%d ave=%.1f",max,min,total,(float)total/n); + +} + +/* 请在这里填写答案 */ +``` + +### 输入样例: + +```in +10 20 30 50 -1 +11 21 31 41 51 -1 +55 56 60 -1 +``` + +### 输出样例: + +```out +max=60 min=10 total=436 ave=36.3 +``` diff --git a/【实践课内】12.函数3/6-3 累计销售.c b/【实践课内】12.函数3/6-3 累计销售.c new file mode 100644 index 0000000..ee3456e --- /dev/null +++ b/【实践课内】12.函数3/6-3 累计销售.c @@ -0,0 +1,9 @@ +double price(double x) { + static double sum = 0; + + sum += x; + + if (sum < 5000) return sum * 0.01; + if (sum < 10000) return sum * 0.05; + return sum * 0.1; +} diff --git a/【实践课内】12.函数3/6-3 累计销售.md b/【实践课内】12.函数3/6-3 累计销售.md new file mode 100644 index 0000000..a29eb4e --- /dev/null +++ b/【实践课内】12.函数3/6-3 累计销售.md @@ -0,0 +1,45 @@ +# 6-3 累计销售 + +下面代码中,main函数三次调用函数fun,每次输入一组正整数,最后输出全部数据的最大值,最小值,总和,平均值。 +定义函数fun,完成一组数据处理,每组数组个数不确定,以负数结束输入,空格分隔。 + +### 函数接口定义: +```c++ +int fun (void); +fun返回值为这组数据的个数。(不包括结束标志) +``` + +### 裁判测试程序样例: +```c++ +在这里给出函数被调用进行测试的例子。例如: +#include +int max=0,min=9999999,total=0; +int fun (void); + +int main() +{ + int n; +n=fun(); +n=fun(); +n=fun(); +printf("max=%d min=%d total=%d ave=%.1f",max,min,total,(float)total/n); + +} + +/* 请在这里填写答案 */ +``` + +### 输入样例: + +```in +10 20 30 50 -1 +11 21 31 41 51 -1 +55 56 60 -1 +``` + +### 输出样例: + +```out +max=60 min=10 total=436 ave=36.3 +``` + diff --git a/【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.c b/【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.c new file mode 100644 index 0000000..10a818d --- /dev/null +++ b/【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.c @@ -0,0 +1,14 @@ +// int Row, Col; + +int fun(int array[N][M]) { + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + if (array[i][j] > array[Row][Col]) { + Row = i; + Col = j; + } + } + } + + return array[Row][Col]; +} diff --git a/【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.md b/【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.md new file mode 100644 index 0000000..9745b25 --- /dev/null +++ b/【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.md @@ -0,0 +1,53 @@ +# 6-4 求出二维数组的最大元素及其所在的坐标 + +编写一个函数fun,函数的功能是:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。 + +### 函数接口定义: +```c++ +int fun(int array[N][M]); +``` + +其中 `a` 是用户传入的参数。 函数须返回 N×M整型数组的最大元素,其所在的行坐标及列坐标放在全局变量Row和Col中。 + +### 裁判测试程序样例: +```c++ +#include +#define N 4 +#define M 3 +int Row,Col; +int fun(int array[N][M]); +int main() +{ + int a[N][M],i,j,max,row,col; + for(i=0;i