目录
6-2 求最大值和最小值
本题要求实现一个函数f,可找出10个整数中最大值max和最小值min。
函数接口定义:
在主函数中将以下列形式调用该函数
f(a,10,max,min);
例如:其中a是数组名,max用来保存最大值,min用来保存最小值。
裁判测试程序样例:
#include
using namespace std;
/ 你提交的代码将被嵌入到这里 /
int main( )
{
int a[10];
int max,min,i;
for(i=0;i<10;i++){
cin>>a[i];
}
f(a,10,max,min);
cout<<"Max: "<<max<<endl;
cout<<"Min: "<<min<<endl;
return 0;
}
输入样例:
2 5 8 1 4 7 3 6 9 0
输出样例:
Max: 9
Min: 0
void f(int * a,int b,int &max,int &min)
{
int i;
max=min=a[0];
for(i=1;i<10;i++)
{
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
}
}
6-3 定义一个名为Stock的股票类
***定义一个名为Stock的股票类,这个类包括:一个名为symbol的字符串表示股票代码。一个名为name的字符串数据成员表示股票名称。一个名为previousClosingPrice的double数据成员,它存储前一日的股票收盘价。一个名为currentPrice数据成员,它存储当前的股票成交价格。创建一个设置股票代码和股票名称的set( )函数。一个名为changePercent()函数返回股价涨跌幅度。(即从previousClosingPrice变化到currentPrice的百分比。)
###类名为:
Stock
裁判测试程序样例:
#include
using namespace std;
/ 你提交的代码将被嵌入到这里 */
int main( ) {
char s1[10],n1[20];
cin>>s1>>n1;
Stock stock;
stock.set(s1, n1);
// 输入前一日收盘价
cin>>stock.previousClosingPrice;
// 输入当前成交价
cin>>stock.currentPrice;
// 显示股票信息
cout<<stock.name<<" price changed: " <<(stock.changePercent() * 100)<<"%";
return 0;
}
输入样例:
002594
比亚迪
56.98
55.40
输出样例:
比亚迪price changed: -2.7729%****
class Stock{
public:
char* symbol;
char* name;
double previousClosingPrice;
double currentPrice;
public:
void set(char* s,char* n){
symbol = s;
name = n;
}
double changePercent(){
return (currentPrice-previousClosingPrice)/previousClosingPrice;
}
};
7-1 模拟EXCEL排序
Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。
输入格式:
输入的第一行包含两个正整数N(≤10
5
) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性用1个空格隔开。
输出格式:
在N行中输出按要求排序后的结果,即:当C=1时,按学号递增排序;当C=2时,按姓名的非递减字典序排序;当C=3时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
输入样例:
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
输出样例:
000001 Zoe 60
000007 James 85
000010 Amy 90
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Student
{
string id;
string name;
int grade;
};
int main() {
int n, c;
cin >> n >> c;
vector<Student> students(n);
for (auto& it : students)
cin >> it.id >> it.name >> it.grade;
if (c == 1)
sort(students.begin(), students.end(),
[](Student& a, Student& b) {
return a.id < b.id;
});
else if (c == 2)
sort(students.begin(), students.end(),
[](Student& a, Student& b) {
return a.name != b.name ? a.name < b.name:a.id < b.id;
});
else
sort(students.begin(), students.end(),
[](Student& a, Student& b) {
return a.grade != b.grade ? a.grade < b.grade : a.id < b.id;
});
for (auto& it : students)
cout << it.id << " " << it.name << " " << it.grade << endl;
return 0;
}
**
6-4 体育俱乐部I(构造函数)
**
一个俱乐部需要保存它的简要信息,包括四项:名称(字符串),成立年份(整数),教练姓名(字符串)和教练胜率(0-100之间的整数)。用键盘输入这些信息后,把它们分两行输出:第一行输出名称和成立年份,第二行输出教练姓名和胜率。
裁判测试程序样例:
#include
#include
using namespace std;
class Coach{
string name;
int winRate;
public:
Coach(string n, int wr){
name=n; winRate=wr;
}
void show();
};
class Club{
string name;
Coach c;
int year;
public:
Club(string n1, int y, string n2, int wr);
void show();
};
int main(){
string n1, n2;
int year, winRate;
cin>>n1>>year>>n2>>winRate;
Club c(n1,year, n2, winRate);
c.show();
return 0;
}
/ 请在这里填写答案 /
输入样例:
Guanzhou 2006 Tom 92
输出样例:
Guanzhou 2006
Tom 92%
void Coach::show()
{
cout<<name<<" "<<winRate<<"%"<<endl;
}
Club::Club(string n1,int y,string n2,int wr):c(n2,wr)
{//这里必须使用初始化列表的方法
name=n1;
year=y;
}
void Club::show()
{
cout<<name<<" "<<year<<endl;
c.show();
}