0
点赞
收藏
分享

微信扫一扫

PTA-C++(1)

DYBOY 2022-05-03 阅读 52
c++

目录

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();
}
举报

相关推荐

0 条评论