2017春季华为实习生编程题
生活随笔
收集整理的這篇文章主要介紹了
2017春季华为实习生编程题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目有三道,個(gè)人感覺比較簡(jiǎn)單,這里簡(jiǎn)單的說一下:
1.第一道:將輸入的字符串中的大寫字母轉(zhuǎn)小寫輸出,錯(cuò)誤的字符不管(除大小寫之外的都是錯(cuò)誤的)。
1 #include <stdio.h> 2 #define MAX 1001 3 4 // 輸入字符串 5 char str[MAX]; 6 7 8 int main() 9 { 10 int i=0; 11 scanf("%s",str); 12 while(str[i]){ 13 if(str[i]>='a' &&str[i]<='z') printf("%c",str[i]); 14 else if(str[i]>='A' && str[i]<='Z') printf("%c",str[i]+32); 15 i++; 16 } 17 return 0; 18 } View Code?
2.第二道:題目是集五福相關(guān)的,大概意思是:一群人都有一些福字,大家可以交換和贈(zèng)與,問對(duì)多可以集合多少套福?這里輸入的是11100這樣的字符串,代表每一個(gè)人有的福字集合,1代表對(duì)應(yīng)的福字有,0則是沒有。
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int mark[5]; 5 char str[5]; // 每一個(gè)人五福情況 6 7 int findMinPos(int arr[],int n) 8 { 9 int i,min=0; 10 for(i=1;i<n;i++) 11 { 12 if(arr[i]<arr[min]) min = i; 13 } 14 15 return min; 16 } 17 18 int main() 19 { 20 int i; 21 int num; 22 while(scanf("%s",str)!=EOF) 23 { 24 for(i=0;i<5;i++) { 25 num = str[i] - '0'; 26 if(num==1) mark[i]++; 27 } 28 } 29 30 // 找到最小的 31 printf("%d\n",mark[findMinPos(mark,5)]); 32 33 return 0; 34 } View Code?
3.第三道:后綴表達(dá)式求值:這里數(shù)字只有0-9和A-E,運(yùn)算符只有+,-,*。
1 #include <stdio.h> 2 #define MAX 1001 3 4 // 獲得字符串的值 5 int getCharVal(char c) 6 { 7 if(c>='0' &&c<='9') return c - '0'; 8 else if(c>='A' && c<='F') return c - 'A' + 10; 9 else if(c>='a' && c<='f') return c - 'a' + 10; 10 else return -1; 11 } 12 13 // 判斷c是不是運(yùn)算符 14 int isOperationChar(char c) 15 { 16 return c=='+' || c=='-' || c=='*'; 17 } 18 19 // 計(jì)算兩數(shù)結(jié)果 20 int Calu(int num1,int num2,char c) 21 { 22 switch(c) 23 { 24 case '+': return num1 + num2; 25 case '-': return num2 - num1; 26 case '*': return num1 * num2; 27 } 28 29 return -MAX; 30 } 31 32 // 計(jì)算后綴表達(dá)式的值并返回 33 int postfixCalc(const char *input) 34 { 35 int i=0; // 記錄字符串位置 36 char c; 37 int num1,num2; //雙目運(yùn)算符的數(shù)字 38 39 // 棧 40 int stack[MAX]; 41 int pos = 0; 42 c=input[i]; 43 44 while( c ){ 45 46 // 如果是數(shù)字 47 if(isOperationChar(c)==0){ 48 stack[pos++] = getCharVal(c); 49 } else { // 是運(yùn)算符 50 51 num1 = stack[pos-1]; 52 num2 = stack[pos-2]; 53 stack[pos-2] = Calu(num1,num2,c); 54 pos--; 55 } 56 c = input[++i]; 57 } 58 59 // 返回計(jì)算結(jié)果 60 return stack[0]; 61 } 62 63 int main() 64 { 65 char str[MAX]; 66 scanf("%s",str); 67 printf("%d\n",postfixCalc(str)); 68 69 return 0; 70 } View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/xiangbin1207/p/6611172.html
總結(jié)
以上是生活随笔為你收集整理的2017春季华为实习生编程题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.Net请求小周期
- 下一篇: PHP经验总结(一)序言