萬能標頭檔案#include
中包括了c++中很多庫,基本上可以滿足程式設計中用的庫呼叫。
萬能模板:
#
include
using
namespace std;
intmain()
多組讀入:
while
(scanf
("%d%d"
,&n,
&s)!=
eof)
cin與cout為流輸入輸出。需要同步,當資料量很大時,比較耗時。cin與cout一般用來輸入輸出string型別。
scanf與cin不能讀入空格,遇到空格會斷開。
gets(s)或getline(cin>>s)可以整行讀入字串,可以讀入空格。
刷題中一般推薦使用scanf與printf。以下是幾種常見的型別的輸入輸出。
scanf
("%d",&
int)
printf
("%d"
,int
)scanf
("%lld",&
long
long
)printf
("%d"
,long
long
)scanf
("%c",&
char
)printf
("%c"
,char
)scanf
("%f",&
double
)printf
("%f"
,double
)
題目描述一般為輸入–>>main()–>輸出
對輸入資料,我們要想到用合適的資料結構來處理
如處理n個資料輸入,可以使用一維陣列;如處理正方形區域座標輸入/或者涉及到方向,可以使用二維陣列。
如處理座標(x,y),學生成績可以使用結構體陣列。
其他資料結構,圖,樹等
總結:模擬題一般都是要求模擬乙個過程,給乙個輸入,按照題目要求模擬之後給出輸出,主要是面向過程的,只需要注意細節即可。
題目:oj**是
題目id:1315,1314,1067,1069,1015,1042,1313,1209
c++支援的stl中包含了很多資料結構以及演算法,可以讓我們很方便的使用,只需要用前面提到的萬能標頭檔案即可。
集合:set
特點:無重複元素,按過載的《運算子進行排序,是有序的。
set se;
se.clear()
//清空
se.size()
//取大小
se.insert
(v)//插入v
se.earse
(v)//刪除v
se.find
(v)//返回指向v的迭代器
set::iterator it;
//迭代器,類似指標
for(it=se.
begin()
;it!=
end();
++it)
*it//遍歷集合
棧:stack
特點:後進先出,操作受限的線性表
stack s;
s.push
(v)//元素v入棧
s.pop()
//出棧棧頂元素
s.top()
//訪問棧頂元素
s.empty()
//判斷棧空,返回true
s.size()
//棧的長度,判空也可以用s.size()==0
佇列:queue
特點:先進先出,操作受限的線性表
queue q;
q.push()
//入隊
q.pop()
//出隊
q.front()
//取隊首元素,優先佇列的話是用top()取隊首元素
q.empty()
//判隊空
q.size()
//佇列大小
優先佇列priority_queue,預設是大根堆,這裡說一下,
優先佇列是基於堆實現的,大家注意一下優先順序的定義,大家要記住,排序的話,優先順序是從低到高,如1
<
2<
3所以大根堆的優先佇列,隊首元素是最大的,定義乙個int型別的大根堆優先佇列 pritority_queue<
int> q;
那小根堆呢,定義乙個int型別的小根堆優先佇列priority_queue<
int,vector<
int>
,greater<
int>> q;
當然隊首元素是最小的,(優先順序最高的)
容器:vector
特點:不定長陣列,支援很多態別,如string等
vector v;
v.clear()
;//清空v
v.push_back
(a)//尾插入
v.pop_back
(a)//尾刪除
v.size
()
字串:string
特點:可以長度改變的字串
string s;
s.length()
;s.size()
;//計算s長度時建議用size(),效率會快很多
strcmp
(s1,s2)
//s1s2返回正數
s.substr
(pos,len)
//從下標位置pos處取長度為len的子串,超過取到尾為止。
特別注意的是string 型別還可以用迭代器訪問
二元組:pair
pair q;
q.first訪問第乙個int,q.second訪問第二元素
過載運算子:實現乙個結構體student,結構體中包含兩個變數,學號,分數,要求按照score進行降序排序,按照學號進行公升序排序。
struct
student
//運算子過載後,後面對該結構體呼叫排序演算法時,都會按照定義的《符號的規則進行排序。
對映:map
特點:就是hash,從key到value值的對映,也是按key值的《排序的,是有序的,而且無重複的key
map mp;
//依次是key,value的型別
mp.clear()
//清空
mp.count
(key)
//返回key是否存在,存在返回true
mp.find
(key)
//返回key的位置,沒有則返回mp.end()
mp[key]
=value;
//賦值初始化
mp::iterator it;
//迭代器
it->first//訪問key
it->second//訪問value 也可以用(*it).value
unordered_map mp;
//無序雜湊,速度比較快
stl自帶函式:
sort
(a,a+n)
//陣列型別
sort
(a.begin()
,a.end()
)//迭代器型別,如vector
min(a,b)
max(a,b)
swap
(a,b)
isalpha
(c)//判斷c是否為英文本元,大寫返回1,小寫返回2,非字母返回0
tolower
(c)//把字母轉成小寫,返回小寫
題目id:
1332
1325
1334
1065
1070
1037
1150
1114
1173
1330
C 程式設計基礎
在軟體開發步驟中,我認為流程圖扮演著乙個非常重要的重要,就像我覺得我們學英語學語法一樣,其真正的目的在於訓練我們的邏輯思維,而只有將乙個程式的演算法用流程圖算出來,那麼我們接下來的工作就會簡單很多。而我們也要了解編制程式,只有了解整個c語言程式的編譯過程我們才能更深層次地了解程式的執行機制 源 通過...
c 程式設計基礎
c 程式設計基礎 一 資料型別 值型別 基本 結構列舉 引用型別 1.基本值型別 整型 int 實型 單精度 float 雙精度 double 小數型 decime 布林型 bool 字元型 char 字串型 string 日期型 datetime 整型 byte short int long 實型...
C 程式設計基礎題
題目 1.字串轉為int 輸入1234 輸出1234 注意 輸入的必須為字串,輸出必須為int型 2.偶數字轉為大寫 例如 輸入 lanzhihui is a boy 輸出 lanzhihui is a boy 注意 空格也算一位,符號不變.3.每個單詞偶數字轉為大寫 例如 輸入 lanzhihui...