华为机试练习

Posted zhang-qc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试练习相关的知识,希望对你有一定的参考价值。

1. 计算字符个数

输入 ABCDEF A           输出 1

#include <iostream>
#include <cstring>
using namespace std;
int main(){
    string str,res;
    getline(cin,str); //只能使用getline函数来读入直到换行符
    char ch;
    cin>>ch;
    int size=str.length(),sum=0,flag=0;
    if(ch>=‘A‘&&ch<=‘Z‘) flag=1;    //注意ascall码,A-Z 65-90; a-z 97-122;相差32
    if(ch>=‘a‘&&ch<=‘z‘) flag=2;
    for(int i=0;i<size;i++)
    	if(flag==1){
    		if(str[i]==ch||(str[i]-ch)==32) sum++;
		}
        else if(flag==2){
        	if(str[i]==ch||(ch-str[i])==32) sum++;
		}
		else if(str[i]==ch) sum++;
    cout<<sum<<endl;
    return 0;
}

 明明的随机数(注意的是测试有多组数,需要加while) //可以用set,或者是其他的排序,桶排序

技术分享图片

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        if(n<0||n>1000) return 0;
        int inputArray[n];
        for(int i=0;i<n;i++){
            cin>>inputArray[i];
            if(inputArray[i]<1||inputArray[i]>1000) return 0;
        }
        sort(inputArray,inputArray+n);
        for(int i=0;i<n-1;i++){
            if(inputArray[i]!=inputArray[i+1]) cout<<inputArray[i]<<endl;
        }
        cout<<inputArray[n-1]<<endl;
    }
    return 0;
}

  

#include <iostream>
#include <set>
using namespace std; 
int main(){
    int n=0;
    while (cin>>n)                 
    {
        int a[1000],i=0;
        for (int i=0;i<n;i++) cin>>a[i];
        set<int> num(a,a+n);        //使用set容器直接初始化
        for (set<int>::iterator it =num.begin();it!=num.end();it++){
            cout<<*it<<endl;
        }
    }
    return 0;
}

  

以上是关于华为机试练习的主要内容,如果未能解决你的问题,请参考以下文章

[华为机试练习题]1.周期串问题

[华为机试练习题]56.求子数组的最大和

[华为机试练习题]58.查找同构数的数量

华为机试练习

华为机试练习句子逆序

牛课网——华为机试练习题