发布于 2014-10-17 07:39:56 | 252 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

华为

华为技术有限公司是一家生产销售通信设备的民营通信科技公司,总部位于中国广东省深圳市龙岗区坂田华为基地。华为的产品主要涉及通信网络中的交换网络、传输网络、无线及有线固定接入网络和数据通信网络及无线终端产品,为世界各地通信运营商及专业网络拥有者提供硬件设备、软件、服务和解决方案。华为于1987年在中国深圳正式注册成立。


上午第一题:要求递归实现计算整数的各个位置之和

    #include <cstdio>  
    #include <cstring>  
    #include <iostream>  
    #include <algorithm>  
    using namespace std;  
    int calc(int x)  
    {  
        if(x < 10) return x;  
        return (x%10) + calc(x/10);  
    }  
    int main()  
    {  
        int a;  
        scanf("%d" , &a);  
        int ans = calc(a);  
        printf("%d\n" , ans);  
    }  

上午第二题:整数排序。要求输入一串整数,中间用逗号隔开,然后排完序用逗号隔着输出,要求
:只输出连续数中最大和最小的两个数,例如
输入为
1,4,7,2,5,8,9,11
输出为
11,9,7,5,4,2,1

    #include <cstdio>  
    #include <cstring>  
    #include <iostream>  
    #include <algorithm>  
    using namespace std;  
    int a[1010] , n;  
    char s[10100];  
    bool cmp(int a,int b)  
    {  
        return a > b;  
    }  
    int main() {  
        while(scanf("%s" , s) != EOF) {  
            int tmp = 0 , len = strlen(s);  
            n = 0;  
            for(int i=0;i<len;i++)  
            {  
                if(s[i] >= '0' && s[i] <= '9')  
                    tmp = tmp * 10 + (s[i] - '0');  
                else  
                {  
                    a[n++] = tmp;  
                    tmp = 0;  
                }  
            }  
            a[n++] = tmp;  
            sort(a , a+n , cmp);  
            printf("%d" , a[0]);  
            for(int i=1;i<n;i++) {  
                if(i!= n-1 && a[i-1]-a[i]==1 && a[i]-a[i+1]==1) continue;  
                printf(",%d" , a[i]);  
            }  
            puts("");  
        }  
        return 0;  
    }  


下午第二题:N个人报数
有N个人围成一圈,从1开始顺序排号,从第一个人开始报数(从一到三报数),凡到三的人退出圈子,问最后留下来的是原来第几号的那位?
解:循环链表实现。

    #include <cstdio>  
    #include <cstring>  
    #include <iostream>  
    #include <algorithm>  
    using namespace std;  
    int next[110] , n;  
    void init() {  
        for(int i=1;i<n;i++) next[i] = i + 1;  
        next[n] = 1;  
    }  
    int get(int p) {  
        int q;  
        for(int i=0;i<2;i++) {  
            q = p;  
            p = next[p];  
        }  
        next[q] = next[p];  
        return next[p];  
    }  
    int main() {  
        while(scanf("%d" , &n) != EOF) {  
            init();  
            int p = 1;  
            for(int i=0;i<n;i++) p = get(p);  
            printf("%d\n" , p);  
        }  
        return 0;  
    }  


java代码:


    import java.util.*;  
      
    public class Main  
    {  
        public static void getLastPeople(int number)  
        {  
            int[] people = new int[number];  
            for (int i = 0; i < number; i++)  
                people[i] = 1;  
      
            int index = 0, count = number;  
            while (count > 1)  
            {  
                for (int i = 0; i < number; i++)  
                {  
                    if (people[i] > 0)  
                    {  
                        index++;  
                        if (index == 3)  
                        {  
                            people[i]--;  
                            index = 0;  
                            count--;  
                        }  
                    }  
                }  
            }  
            for (int i = 0; i < number; i++)  
            {  
                if (people[i] > 0)  
                {  
                    System.out.print((i + 1) % 3);  
                }  
            }  
        }  
      
        public static void main(String args[])  
        {  
            Scanner cin = new Scanner(System.in);  
            while (cin.hasNext())  
            {  
                int number = cin.nextInt();  
                getLastPeople(number);  
            }  
        }  
    }  

 

下午第一题:输入一个正整数,并编码为字符串进行输出。
描述:
1.输入一个正生疏,并编码为字符串进行输出。
编码规则为:数字0~9分别编码为字符a-j。
2.输入肯定是正整数,不用做错误校验。
例:
输入
123
输出
bcd

    #include <cstdio>  
    #include <cstring>  
    #include <iostream>  
    #include <algorithm>  
    using namespace std;  
    char s[1010];  
    int main() {  
        while(scanf("%s" , s) != EOF) {  
            int len = strlen(s);  
            for(int i=0;i<len;i++) putchar(s[i]-'0'+'a');  
            puts("");  
        }  
        return 0;  
    }  


下午第三题:字符串比较排序(2)
描述:
1.字符串由大小写字母、数字机空格组成,一个或多个空格将多个字符串隔开
2.解析出个字符串
3.输出结果时,将得出的各子串从大到小排序,如果长度一样,按照小写字母>大写字母>数字,进行排序
比如w23r at 1rt Af w13r , 排序后为13r w23r 1rt at Af
用C++的string类很好实现,主要是比较函数cmp稍微有点烦


    #include <cstdio>  
    #include <cstring>  
    #include <iostream>  
    #include <algorithm>  
    #include <string>  
    using namespace std;  
    char ch[101010];  
    string s[1010];  
    int n , len;  
    bool isl(char c) {  
        return c >= 'a' && c <= 'z';  
    }  
    bool isb(char c) {  
        return c >= 'A' && c <= 'Z';  
    }  
    bool isd(char c) {  
        return c >= '0' && c <= '9';  
    }  
    bool cmp(string a,string b) {  
        if(a.length() != b.length()) return a.length() > b.length();  
        int len = a.length();  
        for(int i=0;i<len;i++) {  
            if( (isl(a[i]) && isl(b[i]) || isb(a[i]) && isb(b[i]) || isd(a[i]) && isd(b[i])) && a[i] != b[i]) return a[i] > b[i];  
            if(isl(a[i]) || isd(b[i])) return 1;  
            if(isl(b[i]) || isd(a[i])) return 0;  
        }  
        return 1;  
    }  
    int main() {  
        gets(ch);  
        len = strlen(ch);  
        n = 0;  
        s[0] = "";  
        for(int i=0;i<len;i++) {  
            if(ch[i] == ' ') {  
                if(s[n].length()) n++ , s[n] = "";  
            }  
            else s[n] += ch[i];  
        }  
        if(s[n].length()) n ++;  
        /*
        printf("length is %d\n" , len);
        printf("n is %d\n" , n);
        for(int i=0;i<n;i++) {
            printf("%d : %d\n" , i , s[i].length());
        }
        cout << s[0];
        for(int i=1;i<n;i++) cout << " " <<s[i];
        cout << endl;
        */  
        sort(s , s+n , cmp);  
        cout << s[0];  
        for(int i=1;i<n;i++) cout << " " <<s[i];  
        cout << endl;  
        return 0;  
    } 



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务