今天起晚了,八點(diǎn)多起的埃脏,所以心情不是很好搪锣,感覺(jué)時(shí)間白浪費(fèi)了。
今天又因?yàn)橐稽c(diǎn)小失誤彩掐,造成我在編程題目上白白浪費(fèi)幾個(gè)小時(shí)淤翔。
趁我還很有感觸,趕緊寫(xiě)下來(lái)佩谷。
ps旁壮,今天題目還是散列监嗜,仍舊很簡(jiǎn)單,我不進(jìn)行代碼解釋了抡谐,因?yàn)檫€有抽出時(shí)間復(fù)習(xí)其他科目裁奇。
B1038
1038 統(tǒng)計(jì)同成績(jī)學(xué)生 (20分)
本題要求讀入 N 名學(xué)生的成績(jī),將獲得某一給定分?jǐn)?shù)的學(xué)生人數(shù)輸出麦撵。
輸入格式:
輸入在第 1 行給出不超過(guò) 10
?5
?? 的正整數(shù) N刽肠,即學(xué)生總?cè)藬?shù)。隨后一行給出 N 名學(xué)生的百分制整數(shù)成績(jī)免胃,中間以空格分隔音五。最后一行給出要查詢(xún)的分?jǐn)?shù)個(gè)數(shù) K(不超過(guò) N 的正整數(shù)),隨后是 K 個(gè)分?jǐn)?shù)羔沙,中間以空格分隔躺涝。
輸出格式:
在一行中按查詢(xún)順序給出得分等于指定分?jǐn)?shù)的學(xué)生人數(shù),中間以空格分隔扼雏,但行末不得有多余空格坚嗜。
輸入樣例:
10
60 75 90 55 75 99 82 90 75 50
3 75 90 88
輸出樣例:
3 2 0
這個(gè)題目經(jīng)典送分,可以一遍過(guò)的
#include <cstdio>
using namespace std;
int totalStudent;
int personalScore;
int queryNumber;
int question;
int scores[101] = {0};
int main()
{
scanf("%d", &totalStudent);
for (int i = 0; i < totalStudent; i++)
{
scanf("%d", &personalScore);
scores[personalScore]++;
}
//讀入數(shù)據(jù),述標(biāo)初始化完畢
//讀入查詢(xún)
scanf("%d", &queryNumber);
for (int i = 0; i < queryNumber; i++)
{
scanf("%d", &question);
if (i==0)
{
printf("%d", scores[question]);
}
else
{
printf(" %d", scores[question]);
}
}
return 0;
}
不講了诗充,省省時(shí)間苍蔬。下面看看我是怎么錯(cuò)的1039的吧
B1039
錯(cuò)誤非常不應(yīng)該,我遇到問(wèn)題之后就努力進(jìn)行錯(cuò)誤排查,從思路上蝴蜓,從代碼拼寫(xiě)上碟绑,以及從空間時(shí)間上都進(jìn)行了考慮,并且做了N次對(duì)照試驗(yàn)(把一些代碼注釋替換茎匠,并提交格仲,從而尋找問(wèn)題),都沒(méi)能成功汽抚。
很懊喪抓狭,
然后我就先睡一會(huì),睡之前我把代碼發(fā)給自己的qq造烁,可以醒來(lái)翻看
睡的時(shí)候否过,我腦子仍然在動(dòng)畫(huà)演示流程,想想到底是哪里出了錯(cuò)誤
沒(méi)想出來(lái)
醒來(lái)之后惭蟋,翻看qq上的代碼
一看苗桂,發(fā)現(xiàn)....
(下面是正確的代碼)
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
/*
就今天我要弄清楚cstring和string的區(qū)別
*/
/*
分清楚hashTable申請(qǐng)的字節(jié)空間1024和hashTable本身int的大小256
*/
using namespace std;
int hashTable[256] = {0};
string forSale;
string wannaMake;
int main()
{
// freopen("write.in","r",stdin);
// freopen("ans.out","w",stdout);
// while (getline(cin, forSale))
getline(cin, forSale);
getline(cin, wannaMake);
for (int i = 0; i < forSale.length(); i++)
{
hashTable[forSale[i]]++;
}
for (int i = 0; i < wannaMake.length(); i++)
{
hashTable[wannaMake[i]]--;
}
bool flag = true;
for (int i = 0; i < 256; i++)
{
if (hashTable[i] < 0)
{
flag = false;
break;
}
}
if (flag == true)
{
printf("Yes ");
int sum=0;//sum記錄多余的
for (int i = 0; i < 256; i++)
{
sum += hashTable[i];
}
printf("%d", sum);
}
else
{
printf("No ");
int sum=0;//sum記錄缺少的
for (int i = 0; i < 256; i++)
{
if (hashTable[i] < 0)
{
sum += hashTable[i];
}
}
printf("%d", -sum);
}
// cout<<endl;
// fclose(stdin);
// fclose(stdout);
return 0;
}
只是因?yàn)檫@兩處sum忘記初始化成0了
著實(shí)浪費(fèi)感情
一朝被蛇咬,十年怕草繩
以后這種錯(cuò)誤我會(huì)堅(jiān)決避免的
最后告组,補(bǔ)上一個(gè)知識(shí)點(diǎn)
課代表煤伟??
#include <cstring>
//不可以定義string s;可以用到strcpy等函數(shù)
using namespace std;
#include <string>
//可以定義string s便锨;可以用到strcpy等函數(shù)
using namesapce std;
#include <string.h>
//不可以定義string s围辙;可以用到strcpy等函數(shù)
我以前一直是抱著以防萬(wàn)一的心態(tài),把string和cstring都包含進(jìn)來(lái)的
但其實(shí)
簡(jiǎn)單總結(jié)一下放案,以后直接包含進(jìn)來(lái)string頭文件就可以了
1)文件cstring姚建,和string.h對(duì)應(yīng),c++版本的頭文件吱殉,包含比如strcpy之類(lèi)的字符串處理函數(shù)
2)文件string.h掸冤,和cstring對(duì)應(yīng),c版本的頭文件友雳,包含比如strcpy之類(lèi)的字符串處理函數(shù)
3)文件string稿湿,包含std::string的定義,屬于STL范疇
4)CString押赊,MFC里的的字符串類(lèi)
行了饺藤,今天到這,光速更新我是萬(wàn)萬(wàn)沒(méi)想到的
可能這就是高產(chǎn)吧
Chant
886~~