真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【PAT乙級(jí)】一百一十道真題刷后大匯總——C/C++-創(chuàng)新互聯(lián)

技巧總結(jié)
  • 避免精度丟失
  • 查詢(xún)數(shù)據(jù)是否存在
  • 容器之間的比較是否相等
  • 緩存區(qū)中字符殘留問(wèn)題
  • 巧妙輸入
  • 巧妙使用hash數(shù)組
  • 簡(jiǎn)單數(shù)學(xué)
    • 質(zhì)數(shù)
    • 倆數(shù)大公約與最小公倍
    • 數(shù)因子
  • 常用的頭文件及其內(nèi)部函數(shù)
    • < map >
    • < set >
    • < pair >
    • < string >
    • < vector >
    • < algorithm >
    • < cctype >
    • < iomanip >

新河網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
避免精度丟失

所有的計(jì)算最后都是轉(zhuǎn)換成二進(jìn)制進(jìn)行計(jì)算的,所以浮點(diǎn)計(jì)算時(shí)候,有時(shí)會(huì)出現(xiàn)精度流失的問(wèn)題。
解決方法:
盡量轉(zhuǎn)換成long型計(jì)算,最后再換成浮點(diǎn)型輸出結(jié)果。

刷題時(shí)候測(cè)試點(diǎn)也不一定會(huì)考察這方面,但當(dāng)很多個(gè)浮點(diǎn)型數(shù)據(jù)運(yùn)算時(shí)候丟失精度就更明顯了。當(dāng)題目中告訴我們每個(gè)數(shù)的小數(shù)點(diǎn)最高幾位的時(shí)候,我們還是最好先轉(zhuǎn)換成long型最后再換回來(lái),這樣更為準(zhǔn)確。

查詢(xún)數(shù)據(jù)是否存在

如果可以在set和map中進(jìn)行查詢(xún)find,就別在vector容器中查詢(xún)用find,因?yàn)関ector中的find的algorithm的find,時(shí)間復(fù)雜度是O(n),而set和map是自帶的函數(shù),內(nèi)部結(jié)構(gòu)是紅黑樹(shù)。
但是如果是set和map的話,用count就可以了,因?yàn)樗麄儍?nèi)部都不是重復(fù)的。時(shí)間復(fù)雜度和find一樣是(logn);
用map.count(key)是否大于0查找數(shù)據(jù)應(yīng)該是用的比較多的。

容器之間的比較是否相等

有時(shí)需要把答案放在容器內(nèi),然后把所寫(xiě)的放另一個(gè)容器里,比較是否與答案相等,這個(gè)時(shí)候就有必要用到容器之間是否相等。
容器之間比較內(nèi)部所有元素是否相等,可以直接用**==**
如果兩個(gè)容器的長(zhǎng)度相同且對(duì)應(yīng)位置元素都相等,則兩個(gè)容器就相等,否則不等。
在這里插入圖片描述
Java中重寫(xiě)equals后用equals方法有點(diǎn)像。

緩存區(qū)中字符殘留問(wèn)題

使用cin輸入數(shù)據(jù)后,會(huì)殘留空格或者回車(chē)符在緩存區(qū)中;
使用getline輸入數(shù)據(jù)后,不會(huì)有回車(chē)在緩存區(qū)中。

#include#includeusing namespace std;

int main(){char ch;
string s,s1;
cin >>s;
getline(cin,s1);

cout<< s<< endl;
cout<< s1<< endl;
}
輸入:
a b
輸出:
a
 b
輸入:
 ab

輸出:
ab

出現(xiàn)需要處理字符的原因:
是因?yàn)?code>cin遇到空格或者回車(chē)字符時(shí),是作為結(jié)束符的,但是其本身還是存留在緩沖中,遇到要么作為結(jié)束符要么就是直接跳過(guò)。既然在緩沖中,如果不需要就需要將其除去;

解決方法:

  1. 使用scanf讀取掉那個(gè)字符;
  2. 使用getchar()讀取掉那個(gè)字符;
  3. 有必要的話用getline讀取掉也許。
    例子:
    在這里插入圖片描述
    輸入后要輸入字符串,可以先去清楚緩沖區(qū)
巧妙輸入

cin肯定是比scanf方便的,但有很多時(shí)候還是用scanf比較的好。
比如要輸入年:月:日cin肯定是不好實(shí)現(xiàn)的,用scanf("%d:%d:%d",&year,&month,&day);肯定會(huì)方便簡(jiǎn)潔。
并且學(xué)會(huì)輸入數(shù)據(jù)的同時(shí),處理數(shù)據(jù),這樣可以達(dá)到簡(jiǎn)潔代碼,防止代碼重復(fù)。
下面就是個(gè)好例子:
在這里插入圖片描述

巧妙使用hash數(shù)組

使用數(shù)組達(dá)到hash的目的是比使用map要方便很多的,我們可以利用它的索引以及對(duì)應(yīng)的值表示不同的含義。
比如:
索引表示學(xué)號(hào),值表示排名;
索引表示學(xué)號(hào),值表示是否存在;
索引表示時(shí)間,值表示數(shù)據(jù)量;
索引表示某字符的ASCII碼,值表示是否存在等等。
通過(guò)hash數(shù)組,可以讓我們查詢(xún)結(jié)果更快,效率更高!

簡(jiǎn)單數(shù)學(xué) 質(zhì)數(shù)
bool is_prim(int n){if(n<2) return false;
	for(int i=2;i*i<=n;++i){if(n%i==0) return false;
}
	return true;
}
倆數(shù)大公約與最小公倍

假設(shè)有倆數(shù)a和b,大公約數(shù)gcd和最小公倍數(shù)lcm的乘積應(yīng)該為a*b;
大公約數(shù):

//a大于b
int gcd(int a,int b){return a%b==0?b:gcd(b,a%b);
}
數(shù)因子
void ff(int n,vector&res){for(int i=1;i<=n;++i){if(n%i==0)
		res.push_back(i);
}
}
常用的頭文件及其內(nèi)部函數(shù)

只說(shuō)用的部分函數(shù),咋用這里木得

< map >
map_name.count(key);//這個(gè)可以用來(lái)判斷某個(gè)數(shù)是否存在
map_name.find(key)!=map.end();//和上面一樣
map_name[key] = value;//插入某對(duì)鍵值對(duì)
map_name.erase(key);//刪除為key的鍵值對(duì)
< set >
set_name.count(x);//這個(gè)可以用來(lái)判斷x是否存在
set_name.find(x)!=map.end();//和上面一樣
set_name.insert(x);//向set容器內(nèi)插入數(shù)據(jù)x
< pair >

這沒(méi)啥,就相當(dāng)于下面的結(jié)構(gòu)體:

struct node{數(shù)據(jù)類(lèi)型 first;
	數(shù)據(jù)類(lèi)型 second;
}
< string >
string_name.substr(startIndex,length)//從startIndex下標(biāo)開(kāi)始截取length長(zhǎng)度的字符串
string_name.erase(pos)//刪除pos下表的字符
string_name.insert(pos,n,ch)//在pos處插入n個(gè)ch字符
??int res = stoi(string_name);//字符串轉(zhuǎn)換成十進(jìn)制
??string res = to_string(int val);//轉(zhuǎn)換成字符串里面可以是各種基本數(shù)據(jù)類(lèi)型的變量
string_name.c_str();//string與const char*指針之間了轉(zhuǎn)換
< vector >

這個(gè)動(dòng)態(tài)數(shù)組就不說(shuō)了,沒(méi)啥需要特指的,還有stack和queue容器,這里不列舉。

< algorithm >

stl中的這個(gè)好用的函數(shù)太多了

max(x,y)
min(x,y)
swap(x,y)
abs(x)//x是整型的
reverse(it1,it2)//這里的it1和it2是指迭代器
fill()//填充
sort()
< cctype >
isalpha()
isdigit()
islower()
isupper()

還有什么toupper、tolower這樣的,想轉(zhuǎn)換我們直接ch ^= 32;用異或解決即可。

< iomanip >
setw()//域?qū)?setfill()//域填充
setbase()//進(jìn)制

這里有倆好用的函數(shù),用于字符串匹配:

int sscanf(const char *str, const char *format, …)
int sprintf(char *str, const char *format, …)

sscanf是將str字符串轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)的,是從左到右按字符串匹配得到轉(zhuǎn)換的操作;
sprintf是將數(shù)據(jù)轉(zhuǎn)換成字符串,是從右到左匹配的一個(gè)轉(zhuǎn)換操作;
如果使用這個(gè)想用到string,那么可以使用string中的c_str()函數(shù),也可以對(duì)其進(jìn)行操作了。

#include#include#includeusing namespace std;

int main(){char ch;
string s,s1;
getline(cin,s);
double f = 0.0;
char x[10];
sscanf(s.c_str(),"%lf",&f);
cout<< f<< endl;
sprintf(x,"%.2lf",f);
cout<< x<< endl;
return 0;
}
輸入:
66
輸出:
66
66.00

輸入:
89.356
輸出:
89.356
89.36

輸入:
3.23
輸出:
3.23
3.23

注意:里面的首個(gè)參數(shù)是char*指針,用string時(shí)可以通過(guò)c_str()函數(shù)使用sscanf,而用sprintf要用char類(lèi)型數(shù)組。
sscanfsprintf成功的話會(huì)有返回值的,整型的,如果成功會(huì)返回1;
例子:
在這里插入圖片描述

常見(jiàn)的一些問(wèn)題

在這里插入圖片描述
上面說(shuō)的倆函數(shù)是不能用的,to_string可以轉(zhuǎn)換成string類(lèi)型的,然后再調(diào)用c_str()也是可以達(dá)到那個(gè)itoa的效果的,所以不能用也沒(méi)關(guān)系。

  1. 浮點(diǎn)錯(cuò)誤:運(yùn)行時(shí)發(fā)生浮點(diǎn)錯(cuò)誤,比如遇到了除以 0 的情況;
  2. 段錯(cuò)誤:一般發(fā)生在數(shù)組越界了;
  3. 輸出超時(shí),運(yùn)行超時(shí):先去看看存不存在死循環(huán);
  4. 格式錯(cuò)誤:檢查自己輸出是否符合要求,比如空格什么的。
最后總結(jié)
  1. 寫(xiě)題還是要仔細(xì),比如看清要輸入的字符串是否包含空格,沒(méi)說(shuō)包含一般就是有空格的,此時(shí)使用cin有些測(cè)試點(diǎn)就會(huì)出問(wèn)題了;
  2. 看清題目給的范圍或者說(shuō)是幾位,有的時(shí)候給的學(xué)號(hào)就會(huì)說(shuō)幾位,巧妙利用所給的條件;
  3. 認(rèn)真看輸出條件防止格式錯(cuò)誤,比如末尾不留空格(經(jīng)常),末尾不留回車(chē)符(有,但比較少)等等;
  4. 還是說(shuō)認(rèn)真讀題的問(wèn)題,什么怎么輸入啊,什么條件下該干什么呀這樣的;
  5. 每個(gè)題設(shè)計(jì)出來(lái)肯定都會(huì)有其解決算法的(當(dāng)然每題可用的算法可能會(huì)有多種,盡量想最方便自己的),先想再動(dòng)筆,這樣一不容易出錯(cuò),二會(huì)提高速度;
  6. 也別輕易的去提交,先過(guò)樣例再去提交,別求速度求穩(wěn);
  7. 最后希望過(guò)幾天的考試可以多考幾分吧,希望這110題沒(méi)有白刷,加油。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


新聞標(biāo)題:【PAT乙級(jí)】一百一十道真題刷后大匯總——C/C++-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/deeeec.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部