mirror of
https://github.com/renbaoshuo/202401-programming-assignments.git
synced 2024-11-27 02:25:37 +00:00
【实践课内】12.函数3
This commit is contained in:
parent
c3a086d652
commit
cf20fb9c7b
11
【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.c
Normal file
11
【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.c
Normal file
@ -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;
|
||||||
|
}
|
59
【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.md
Normal file
59
【实践课内】12.函数3/6-1 使用函数计算两个复数之和与之积.md
Normal file
@ -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 <stdio.h>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
```
|
22
【实践课内】12.函数3/6-2 全局变量和静态变量.c
Normal file
22
【实践课内】12.函数3/6-2 全局变量和静态变量.c
Normal file
@ -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;
|
||||||
|
}
|
44
【实践课内】12.函数3/6-2 全局变量和静态变量.md
Normal file
44
【实践课内】12.函数3/6-2 全局变量和静态变量.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# 6-2 全局变量和静态变量
|
||||||
|
|
||||||
|
下面代码中,main函数三次调用函数fun,每次输入一组正整数,最后输出全部数据的最大值,最小值,总和,平均值。
|
||||||
|
定义函数fun,完成一组数据处理,每组数组个数不确定,以负数结束输入,空格分隔。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int fun (void);
|
||||||
|
fun返回值为这组数据的个数。(不包括结束标志)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
在这里给出函数被调用进行测试的例子。例如:
|
||||||
|
#include <stdio.h>
|
||||||
|
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
|
||||||
|
```
|
9
【实践课内】12.函数3/6-3 累计销售.c
Normal file
9
【实践课内】12.函数3/6-3 累计销售.c
Normal file
@ -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;
|
||||||
|
}
|
45
【实践课内】12.函数3/6-3 累计销售.md
Normal file
45
【实践课内】12.函数3/6-3 累计销售.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# 6-3 累计销售
|
||||||
|
|
||||||
|
下面代码中,main函数三次调用函数fun,每次输入一组正整数,最后输出全部数据的最大值,最小值,总和,平均值。
|
||||||
|
定义函数fun,完成一组数据处理,每组数组个数不确定,以负数结束输入,空格分隔。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int fun (void);
|
||||||
|
fun返回值为这组数据的个数。(不包括结束标志)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
在这里给出函数被调用进行测试的例子。例如:
|
||||||
|
#include <stdio.h>
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
14
【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.c
Normal file
14
【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.c
Normal file
@ -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];
|
||||||
|
}
|
53
【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.md
Normal file
53
【实践课内】12.函数3/6-4 求出二维数组的最大元素及其所在的坐标.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# 6-4 求出二维数组的最大元素及其所在的坐标
|
||||||
|
|
||||||
|
编写一个函数fun,函数的功能是:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int fun(int array[N][M]);
|
||||||
|
```
|
||||||
|
|
||||||
|
其中 `a` 是用户传入的参数。 函数须返回 N×M整型数组的最大元素,其所在的行坐标及列坐标放在全局变量Row和Col中。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
#include <stdio.h>
|
||||||
|
#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<N;i++)
|
||||||
|
for(j=0;j<M;j++)
|
||||||
|
scanf("%d",&a[i][j]);
|
||||||
|
for(i=0;i<N;i++)
|
||||||
|
{ for(j=0;j<M;j++)
|
||||||
|
printf("%5d",a[i][j]);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
max=fun(a);
|
||||||
|
printf("max=%d,row=%d,col=%d",max,Row,Col);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 请在这里填写答案 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
5 8 4
|
||||||
|
4 5 11
|
||||||
|
1 2 3
|
||||||
|
7 4 1
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
5 8 4
|
||||||
|
4 5 11
|
||||||
|
1 2 3
|
||||||
|
7 4 1
|
||||||
|
max=11,row=1,col=2
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user