7-20上午上机题实现
上機(jī)題目描述:
1.
選秀節(jié)目打分,分為專家評(píng)委和大眾評(píng)委,
score[]數(shù)組里面存儲(chǔ)每個(gè)評(píng)委打的分?jǐn)?shù),judge_type[]里存儲(chǔ)與score[]數(shù)組對(duì)應(yīng)的評(píng)委類別,
judge_type==1,表示專家評(píng)委,
judge_type==2,表示大眾評(píng)委,
n表示評(píng)委總數(shù)。
打分規(guī)則如下:
專家評(píng)委和大眾評(píng)委的分?jǐn)?shù)先分別取一個(gè)平均分(平均分取整),然后,
總分=專家評(píng)委平均分*0.6+大眾評(píng)委* 0.4,總分取整。函數(shù)最終返回選手得分。
?
#include <iostream>
using namespace std;
?
int result(int *score, int * type , int n)
{
int i;
double sum1 = 0.0 ,sum2 = 0.0;//記錄專家總分和大眾總分
int ty1 = 0, ty2 = 0;//記錄專家人數(shù) 和 大眾 人數(shù)
?
if (n)
{
for (i = 0; i < n; i++)
{
switch (*type)
{
case 1:
sum1 += score[i]; ty1++;
break;
case 2:
sum2 += score[i]; ty2++;
break;
default:
break;
}
type++;
}
sum1 = (int)sum1 / ty1;
sum2 = (int)sum2 / ty2;
}
int ret = 0;
ret = (sum1 * 0.6 + sum2?* 0.4);
return ret;
}
?
int main()
{
int score[5] = {77,89,65,78,90};
int type[5] = {1,2,1,2,1};
int n = 5;
//你也可以自己讀入數(shù)據(jù),這里我簡(jiǎn)單實(shí)現(xiàn)一下
cout << result(score, type, n) << endl;;
?
cin.get();
return 0;
}
?
2.
用預(yù)處理指令#define聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽略閏年問(wèn)題)
#include <iostream>
#define SECONDS_PER_YEAR ?365 * 24 * 60 * 60
?
using namespace std;
?
int main()
{
cout << SECONDS_PER_YEAR << endl;
cin.get();
return 0;
}
?
解析:
通過(guò)這道題面試官想考以下幾個(gè)知識(shí)點(diǎn):
●#define語(yǔ)法的基本知識(shí)(例如,不能以分號(hào)結(jié)束,括號(hào)的使用,等等)。
●要懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值,因此,寫(xiě)出你是如何計(jì)算一年中有多少秒而不是計(jì)算出實(shí)際的值,會(huì)更有意義。
?
●意識(shí)到這個(gè)表達(dá)式將使一個(gè)16位機(jī)的整型數(shù)溢出,因此要用到長(zhǎng)整型符號(hào)L,告訴編譯器這個(gè)常數(shù)是長(zhǎng)整型數(shù)。
如果在表達(dá)式中用到UL(表示無(wú)符號(hào)長(zhǎng)整型),那么你就有了一個(gè)好的起點(diǎn)。記住, ?第一印象很重要。
?
#define SECONDS_PER_YEAR ?(365 * 24 * 60 * 60)UL
但是在vs中這樣會(huì)報(bào)錯(cuò),無(wú)法輸出SECONDS_PER_YEAR
?
原因呢?
來(lái)到VM測(cè)試一下
1.
#define SECONDS_PER_YEAR ?365 * 24 * 60 * 60
?
?
那用這個(gè)會(huì)報(bào)錯(cuò)嗎?試一下
#define SECONDS_PER_YEAR ?(365 * 24 * 60 * 60)UL
?
這解析有誤吧,絕望。 還是老老實(shí)實(shí)用 365 * 24 * 60 * 60?啊哈哈
?
3.
寫(xiě)一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。
#include <iostream>
?
#define MIN(x,y) ?((x) > (y) ? (y) : (x))
?
using namespace std;
?
int main()
{
cout << MIN(-3, 5) << endl;
cin.get();
return 0;
}
?
解析:
1.三重條件操作符的知識(shí)。這個(gè)操作符存在C語(yǔ)言中的原因是它使得編譯器能產(chǎn)生比
if-then-else更優(yōu)化的代碼,了解這個(gè)用法是很重要的。
2.懂得在宏中 小心地 把 參數(shù)用括號(hào)括起來(lái)。(負(fù)數(shù)的存在)
總結(jié)
以上是生活随笔為你收集整理的7-20上午上机题实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 7-20上午刷题未知点集合
- 下一篇: 7-20牛客网未知点集合