華為上機考試-2016-8-29
阿新 • • 發佈:2019-01-22
有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?
輸入描述:
輸入檔案最多包含10組測試資料,每個資料佔一行,僅包含一個正整數n(1<=n<=100),表示小張手上的空汽水瓶數。n=0表示輸入結束,你的程式不應當處理這一行。
輸出描述:
對於每組測試資料,輸出一行,表示最多可以喝的汽水瓶數。如果一瓶也喝不到,輸出0。
輸入例子:
3 10 81 0
輸出例子:
1 5
40
//飲料瓶換飲料 #include "stdafx.h" #include <iostream> using namespace std; int func(int x) { if(x==2) return 1; else return (x/3); } int main() { int a[10]; int b[10]; int c[10]; int i; for(i=0;i<10;i++) { cin>>a[i]; if(a[i]==0) { break; } } for(int n=0; n<i; n++) { int m=0; b[n]=a[n]; int temp; for(;b[n]>1;) { temp=func(b[n]); m=m+temp; if(b[n]<=2) b[n]=0; else b[n]=b[n]%3+b[n]/3; } c[n]=m; cout<<c[n]<<endl; } //cout<<endl; system("pause"); return 0; }
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作。
Input Param
n 輸入隨機數的個數
inputArray n個隨機整陣列成的陣列
Return Value
OutputArray 輸出處理後的隨機整數
注:測試用例保證輸入引數的正確性,答題者無需驗證。測試用例不止一組。
輸入描述:
輸入多行,先輸入隨機整數的個數,再輸入相應個數的整數
輸出描述:
返回多行,處理後的結果
輸入例子:
11 10 20 40 32 67 40 20 89 300 400 15
輸出例子:
10 15 20 32 40 67 89 300 400
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int n;
int i=0;
int a[1000];
while(cin>>n)
{
if(n>1000)
break;
if(n<1)
break;
int m;
for(m=0;m<n;m++)
{
cin>>a[i];
for(int l=0;l<i;l++)
{
if(a[i]==a[l])
{
i--;
break;
}
}
i++;
}
if(m==n)
break;
}
for(int q=0;q<i;q++)
{
for(int j=q+1;j<i;j++)
{
if(a[q]>a[j])
{
int temp=a[q];
a[q]=a[j];
a[j]=temp;
}
}
cout<<a[q]<<endl;
}
system("pause");
return 0;
}
寫出一個程式,接受一個十六進位制的數值字串,輸出該數值的十進位制字串。(多組同時輸入 )
輸入描述:
輸入一個十六進位制的數值字串。
輸出描述:
輸出該數值的十進位制字串。
輸入例子:
0xA
輸出例子:
10
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int func(char x)
{
if(x=='A') return 10;
if(x=='B') return 11;
if(x=='C') return 12;
if(x=='D') return 13;
if(x=='E') return 14;
if(x=='F') return 15;
if(x=='0') return 0;
if(x=='1') return 1;
if(x=='2') return 2;
if(x=='3') return 3;
if(x=='4') return 4;
if(x=='5') return 5;
if(x=='6') return 6;
if(x=='7') return 7;
if(x=='8') return 8;
if(x=='9') return 9;
else return 0;
}
int main()
{
string s;
int a;
while(cin>>s)
{
//a=sizeof(s);
//a=strlen(s);
for(a=0;s[a]!='\0';a++);
int temp;
int sum=0;
//a--;
//cout<<a<<endl;
for(int i=2;i<a;i++)
{
temp=func(s[i]);
int bei=1;
//if(i=a-1)
//bei=1;
// else
for(int q=1;q<a-i;q++)
bei=bei*16;
sum=sum+temp*bei;
}
cout<<sum<<endl;
}
return 0;
}
撲克牌遊戲大家應該都比較熟悉了,一副牌由54張組成,含3~A,2各4張,小王1張,大王1張。牌面從小到大用如下字元和字串表示(其中,小寫joker表示小王,大寫JOKER表示大王):)
3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
輸入兩手牌,兩手牌之間用“-”連線,每手牌的每張牌以空格分隔,“-”兩邊沒有空格,如:4 4 4 4-joker JOKER
請比較兩手牌大小,輸出較大的牌,如果不存在比較關係則輸出ERROR
基本規則:
(1)輸入每手牌可能是個子,對子,順子(連續5張),三個,炸彈(四個)和對王中的一種,不存在其他情況,由輸入保證兩手牌都是合法的,順子已經從小到大排列;
(2)除了炸彈和對王可以和所有牌比較之外,其他型別的牌只能跟相同型別的存在比較關係(如,對子跟對子比較,三個跟三個比較),不考慮拆牌情況(如:將對子拆分成個子)
(3)大小規則跟大家平時瞭解的常見規則相同,個子,對子,三個比較牌面大小;順子比較最小牌大小;炸彈大於前面所有的牌,炸彈之間比較牌面大小;對王是最大的牌;
(4)輸入的兩手牌不會出現相等的情況。
答案提示:
(1)除了炸彈和對王之外,其他必須同類型比較。
(2)輸入已經保證合法性,不用檢查輸入是否是合法的牌。
(3)輸入的順子已經經過從小到大排序,因此不用再排序了.
輸入描述:
輸入兩手牌,兩手牌之間用“-”連線,每手牌的每張牌以空格分隔,“-”兩邊沒有空格,如4 4 4 4-joker JOKER。
輸出描述:
輸出兩手牌中較大的那手,不含連線符,撲克牌順序不變,仍以空格隔開;如果不存在比較關係則輸出ERROR。
輸入例子:
4 4 4 4-joker JOKER
輸出例子:
joker JOKER