C 程式設計基礎

2021-10-13 09:55:36 字數 4161 閱讀 3451

萬能標頭檔案#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...