目录
第1关:数据交换
任务描述
本关任务:编程实现两个数据的交换。要求将两个数据的交换功能写成一个函数,通过函数参数(指针变量或引用参数)实现两个数据的交换。
相关知识
为了完成本关任务,你需要掌握:1.C++的动态分配与释放语句。2.引用做为形参。
编程要求
根据提示,在右侧编辑器补充代码, 输出调用交换函数后的结果。
测试说明
平台会对你编写的代码进行测试:
测试输入:910,325;
预期输出:
交换后:325,910
测试输入:0,1;
预期输出:
交换后:1,0
开始你的任务吧,祝你成功!
#include <stdio.h>
#include <stdlib.h>
void exchange(int *x,int *y)
{
int cc;
cc=*x;
*x=*y;
*y=cc;
}
int main()
{
int a;
int b;
scanf("%d,%d",&a,&b);
exchange(&a,&b);
printf("%d,%d",a,b);
return 0;
}
第2关 最大最小值问题
任务描述
本关任务:编程实现对一组从键盘输入的数据(字符、整数或实数),求最大值、最小值、逆置等,并输出。
编程要求
根据提示,在右侧编辑器补充代码,计算并输出数组的最大值、最小值、逆置。
①分别采用静态/动态数组存储数据,数据元素的类型设计为ElemType;
②将计算最大值、最小值的求解过程写成函数
void Compute(ElemType a[ ],int n,ElemType &max, ElemType &min);
③设计算法 reverse(ElemTyep a[] ,int n 将数组中的所有数据进行逆置存放。
测试说明
平台会对你编写的代码进行测试:
测试输入:
3
4 9 5;
预期输出:
最大值:9
最小值:4
逆置为:5 9 4
开始你的任务吧,祝你成功!
#include <iostream>
#include <limits>
using namespace std;
typedef float ElemType;
void Compute(ElemType a[], int n, ElemType &max, ElemType &min);
void reverse(ElemType a[], int n);
int main() {
int n;
cin >> n;
ElemType arrStatic[100];
for (int i = 0; i < n; ++i) {
cin >> arrStatic[i];
}
ElemType max, min;
Compute(arrStatic, n, max, min);
cout << "最大值:" << max << endl;
cout << "最小值:" << min << endl;
reverse(arrStatic, n);
cout << "逆置为:";
for (int i = 0; i < n; ++i) {
cout << arrStatic[i] << " ";
}
cout << endl;
return 0;
}
void Compute(ElemType a[], int n, ElemType &max, ElemType &min) {
max = numeric_limits<ElemType>::lowest();
min = numeric_limits<ElemType>::max();
for (int i = 0; i < n; ++i) {
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
}
void reverse(ElemType a[], int n) {
int start = 0;
int end = n - 1;
while (start < end) {
ElemType temp = a[start];
a[start] = a[end];
a[end] = temp;
++start;
--end;
}
}
第3关:ADT-Complex
任务描述
本关任务:编写程序实现复数的相关功能(见教材P 9)。
相关知识
为了完成本关任务,你需要掌握:1.如何定义Complex的ADT,2.如何实现Complex。
测试说明
平台会对你编写的代码进行测试:
测试输入:
3,5;
6,3;
预期输出:
第1个复数的实部值为:3
第1个复数的虚部值为:5
第2个复数的实部值为:6
第2个复数的虚部值为:3
2个复数的实部和为:9
开始你的任务吧,祝你成功!
#include<stdio.h>
typedef struct{
int real;
int unreal;
}Complex;
Complex create(int x,int y){
Complex z;
z.real=x;
z.unreal=y;
return z;
}
Complex add(Complex a1,Complex a2){
Complex sum;
sum.real=a1.real+a2.real;
return sum;
}
int main()
{
Complex a1,a2,a3;
int a,b;
scanf("%d, %d\n",&a,&b);
a1=create(a,b);
int c,d;
scanf("%d, %d\n",&c,&d);
a2=create(c,d);
a3=add(a1,a2);
printf("`第1个复数的实部值为:%d`\n",a1.real);
printf("`第1个复数的虚部值为:%d`\n",a1.unreal);
printf("`第2个复数的实部值为:%d`\n",a2.real);
printf("`第2个复数的虚部值为:%d`\n",a2.unreal);
printf("`2个复数的实部和为:%d`",a3.real);
return 0;
}