1
0
mirror of https://github.com/renbaoshuo/202401-programming-assignments.git synced 2024-11-27 08:26:20 +00:00

【实践课内】12.函数3

This commit is contained in:
Baoshuo Ren 2024-11-27 10:25:12 +08:00
parent c3a086d652
commit cf20fb9c7b
Failed to extract signature
8 changed files with 257 additions and 0 deletions

View 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;
}

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

View 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;
}

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

View 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;
}

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

View 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];
}

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