设为首页 收藏本站
查看: 1141|回复: 0

[经验分享] 2017春季华为实习生编程题

[复制链接]

尚未签到

发表于 2017-7-10 11:27:59 | 显示全部楼层 |阅读模式
  题目有三道,个人感觉比较简单,这里简单的说一下:
  1.第一道:将输入的字符串中的大写字母转小写输出,错误的字符不管(除大小写之外的都是错误的)。


DSC0000.gif DSC0001.gif


#include <stdio.h>
#define MAX 1001
// 输入字符串
char str[MAX];

int main()
{
     int i=0;
     scanf("%s",str);
     while(str){
         if(str>='a' &&str<='z') printf("%c",str);
         else if(str>='A' && str<='Z') printf("%c",str+32);
         i++;
     }
     return 0;   
}
View Code  2.第二道:题目是集五福相关的,大概意思是:一群人都有一些福字,大家可以交换和赠与,问对多可以集合多少套福?这里输入的是11100这样的字符串,代表每一个人有的福字集合,1代表对应的福字有,0则是没有。





#include<stdio.h>
#include<stdlib.h>
int mark[5];
char str[5]; // 每一个人五福情况
int findMinPos(int arr[],int n)
{
     int i,min=0;
     for(i=1;i<n;i++)
     {
         if(arr<arr[min]) min = i;
     }
     
     return min;
}

int main()
{
     int i;
     int num;
     while(scanf("%s",str)!=EOF)
     {
         for(i=0;i<5;i++) {
             num = str - '0';
             if(num==1) mark++;
         }
     }

    // 找到最小的
     printf("%d\n",mark[findMinPos(mark,5)]);
     
     return 0;
}
View Code  3.第三道:后缀表达式求值:这里数字只有0-9和A-E,运算符只有+,-,*。





#include <stdio.h>
#define MAX 1001
// 获得字符串的值  
int getCharVal(char c)
{
     if(c>='0' &&c<='9') return c - '0';
     else if(c>='A' && c<='F') return c - 'A' + 10;
     else if(c>='a' && c<='f') return c - 'a' + 10;
     else return -1;   
}

// 判断c是不是运算符
int isOperationChar(char c)
{
     return c=='+' || c=='-' || c=='*';
}

// 计算两数结果
int Calu(int num1,int num2,char c)
{
     switch(c)
     {
         case '+': return num1 + num2;
         case '-': return num2 - num1;
         case '*': return num1 * num2;
     }
     
     return -MAX;
}

// 计算后缀表达式的值并返回  
int postfixCalc(const char *input)
{
     int i=0; // 记录字符串位置
     char c;
     int num1,num2; //双目运算符的数字
     
     // 栈
     int stack[MAX];
     int pos = 0;
     c=input;
     
     while( c ){
         
         // 如果是数字
         if(isOperationChar(c)==0){
             stack[pos++] = getCharVal(c);
         } else { // 是运算符
             num1 = stack[pos-1];
             num2 = stack[pos-2];
             stack[pos-2] = Calu(num1,num2,c);
             pos--;
         }
         c = input[++i];
     }
     
     // 返回计算结果
     return stack[0];   
}

int main()
{
     char str[MAX];
     scanf("%s",str);
     printf("%d\n",postfixCalc(str));
     
     return 0;
}
View Code

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-392305-1-1.html 上篇帖子: 华为OJ之最长公共子串 下篇帖子: 任正非督战 华为强攻公有云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表