我是靠谱客的博主 外向音响,最近开发中收集的这篇文章主要介绍牛客网华为机试2HJ101输入整型数组和排序标识,对其元素按照升序或降序进行排序HJ100等差数列HJ99自守数HJ98自动售货系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HJ101输入整型数组和排序标识,对其元素按照升序或降序进行排序

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;

int sort1(int a ,int b ){
    return a>b;
}
int sort2(int a ,int b ){
    return a<b;
}
int main(){
    int num;
    cin>>num;
    int x=num;
    vector<int> data(num,0);
    int i = 0;
    while(x>0){
        cin>>data[i];
        i++;
        x--;
    }
    int ans;
    cin>>ans;
    if(ans == 0){
        sort(data.begin(),data.end(),sort2);
        for(i = 0;i<num;i++){
            cout<<data[i]<<" ";
        }
    }
    else if(ans == 1){
        sort(data.begin(),data.end(),sort1);
        for(i = 0;i<num;i++){
            cout<<data[i]<<" ";
        }
    }
    return 0;
}

HJ100等差数列

在这里插入图片描述

#include<iostream>
using namespace std;
int main(){
    int num;
    cin>>num;
    int x=2;
    int d=3;
    int res = 0;
    for(int i =0;i<num;i++){
        res += x;
        x += d;
    }
    cout<<res<<endl;
    return 0;
}

HJ99自守数

在这里插入图片描述

#include<iostream>
using namespace std;
int main() {
	int n;
	while (cin >> n) {
		int base = 10, count = 0;
		for (int i = 0; i <= n; i++) {
			if (i == base) base *= 10;
			if (i*i%base == i)
				count++;
		}
		cout << count << endl;
	}
	return 0;
}

HJ98自动售货系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

// 存钱盒  投币余额 各种面额钱币张数 
#include<cstring>
#include<bits/stdc++.h>
using namespace std;

typedef struct {
    int hao;   // 只存序号
    int price;
    int num;    
}Prod;
typedef struct {
    int hao;
    int num;
}Face;

vector<Prod> prod(6);
vector<Face> face(4);
int spare = 0;  // 唯一一个单独的全局变量:‘投币余额’
void init(string s);
void back(string s);
void query(string s);
void in(string s);
void buy(string s);
int main() {
    string line;
    while (getline(cin, line)) {
        stringstream ss(line);
        string s;
        while (getline(ss, s, ';')) {
            if (s[0] == 'r') init(s);
            if (s[0] == 'c') back(s);
            if (s[0] == 'q') query(s);
            if (s[0] == 'p') in(s);
            if (s[0] == 'b') buy(s);
        }
    }
}

void init(string s) {
    spare=0;
    s = s.substr(2);
    int pos = s.find(' ');
    string str1 = s.substr(0, pos), str2 = s.substr(pos + 1);
    stringstream ss1(str1), ss2(str2);
    char punc = '-';       // 这里有个疑问是,ss1中类型并非int、是如何传输成功的?// 但是VS里面传输失败,只有在牛客能成功
    ss1 >> prod[0].num >> punc >> prod[1].num >> punc >> prod[2].num >> punc >> prod[3].num >> punc >> prod[4].num >> punc >> prod[5].num;
    ss2 >> face[0].num >> punc >> face[1].num >> punc >> face[2].num >> punc >> face[3].num;
    for (int i = 0; i < 6; i++) prod[i].hao = i;
    prod[0].price = 2; prod[1].price =3; prod[2].price = 4; prod[3].price = 5; prod[4].price = 8; prod[5].price = 6;
    face[0].hao = 1; face[1].hao = 2; face[2].hao = 5; face[3].hao = 10;
    cout << "S001:Initialization is successful" << endl;
}

void back(string s) {
    int sum=0;
    int backCot[4] = {0};
    if (spare == 0) cout << "E009:Work failure" << endl;
    else if(spare>0){
        for(int i=3;i>=0;i--){
            int face_num = face[i].num;
            for(int j=0;j<face_num;j++){
                if(face[i].hao>spare) break;
                if(sum+face[i].hao<=spare){
                    sum += face[i].hao;
                    face[i].num--;
                    backCot[i]++;
                }
            }
        }
        spare -= sum;
        for(int i=0;i<4;i++){
            cout<<face[i].hao<<" yuan coin number="<<backCot[i]<<endl;
        }
    }
    
}
bool cmp(Prod a, Prod b) {
    if (a.num != b.num) return a.num > b.num;
    return a.hao < b.hao;
}

void query(string s) {
    if (s.size() <= 2) {
        cout << "E010:Parameter error"<<endl;
        return;
    }
    else if (s[2] == '0') {
        sort(prod.begin(), prod.end(), cmp);
        for (int i = 0; i < 6; i++) cout << 'A' << prod[i].hao + 1 <<' '<< prod[i].price << ' ' << prod[i].num<<endl;
    }
    else if (s[2] == '1') {
        for (int i = 0; i < 4; i++)
            cout << face[i].hao << " yuan coin number=" << face[i].num << endl;
    }
    else 
        cout << "E010:Parameter error" << endl;
}
void in(string s){
    int sN = stoi(s.substr(2));
    bool limit = true,exist=false;
    if(sN == 1 || sN == 2) limit = false;
    for(int i=0;i<6;i++){
        if(prod[i].num >0) exist=true;
    }
    if((sN>2 && sN<5)||(sN>5 &&sN<10)|| (sN>10)) cout<<"E002:Denomination error"<<endl;
    else if((face[0].num + face[1].num*2 < sN) && limit) cout<<"E003:Change is not enough, pay fail"<<endl;
    else if(!exist) cout<<"E005:All the goods sold out"<<endl;
    else{  // 投币成功!
        for(int i=0;i<4;i++){
            if(face[i].hao == sN) face[i].num++;
        }
        spare += sN;  // 投币余额
        cout<<"S002:Pay success,balance="<<spare<<endl;
    }
}
void buy(string s){
    int hao = stoi(s.substr(3));   // 先只提取hao,不包括‘A’
    bool exist=false,nums=false;
    for(int i=0;i<6;i++){
        if(i+1 == hao) exist=true;
    }
    if(!exist) cout<<"E006:Goods does not exist"<<endl;
    else if(prod[hao-1].num==0) cout<<"E007:The goods sold out"<<endl;
    else if(spare < prod[hao-1].price) cout<<"E008:Lack of balance"<<endl;
    else{
        spare -= prod[hao-1].price;  // 投币余额得减掉了
        cout<<"S003:Buy success,balance="<<spare<<endl;
    }
}

最后

以上就是外向音响为你收集整理的牛客网华为机试2HJ101输入整型数组和排序标识,对其元素按照升序或降序进行排序HJ100等差数列HJ99自守数HJ98自动售货系统的全部内容,希望文章能够帮你解决牛客网华为机试2HJ101输入整型数组和排序标识,对其元素按照升序或降序进行排序HJ100等差数列HJ99自守数HJ98自动售货系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部