機試知識點準備

2021-09-11 21:04:06 字數 4736 閱讀 7642

目錄

複習注意:

int範圍:

long long 範圍:

int轉double輸出:

迴圈讀入,直到檔案結尾 while() eof:

進製轉換問題模板:

將int數字存入int陣列中:

int型陣列轉換為int數字:

scanf函式的返回值問題:

scanf函式與getline函式:

reverse函式:

getchar() 函式的使用:

strcmp函式:

小寫字母轉為大寫:

string類:

二分查詢:

最大公約數:

最小公倍數:

題目標註(水題):之後可以不用再看

需要再看的題目會分類儲存好

int型的資料範圍是[-2^31,  2^31-1], 10位數

如果題目給出的範圍超出,採用 long long 儲存資料,輸出輸入使用%lld

比如題目給出10^10, 是超過int範圍的,用longlong 

int最大值為 2^31-1, 定義 inf時定義為0x7fffffff(乙個7,七個f)

範圍是 [-2^63, 2^63)   19位數

輸入輸出為 %lld

floor(x)向下取整,返回乙個<=x的int整型。

ceil(x)向上取整,返回乙個》=x的int整型。

標頭檔案是或

cout << floor(4)《保留一位小數輸出 %.1f 保留兩位 %.2f

%lf 表示double

int a, b;

double c = (double) a / b;

printf("%.1f", c);

位數多於兩位,預設四捨五入

double a = 0.005;

double b = 0.00009;

printf("%.2f %.2f", a, b);

#0.01 0.00

用於沒有給定有多少組資料

while(scanf("%d %d", &m, &n) != eof )
int ans[31], num = 0;

//將十進位制數sum轉化為d進製,結果存放於陣列ans,num表示位數

//ans陣列中存放的數字為反序,要倒著輸出

dowhile(sum != 0);

int num = 0, ans[10];    //num表示下標

while(sum != 0)

//函式實現

void toarray(int n, int num)

}

int tonumber(int num)

return sum;

}

scanf函式是有返回值的,它的返回值分為三種情況:

正整數:表示正確輸入引數的個數,例如執行scanf(「%d %d」, &a, &b); 若輸入「3 4」,返回2;若輸入「3,4」,返回1

0 : 表示使用者輸入不匹配,無正確輸入任何值,若輸入「,3,4」,返回0

eof : 這是在 stdio.h 中定義的常量(通常值為-1),表示輸入流已經結束。在win下,使用者按ctrl + z會看到乙個^z字元,再按下回車,就表示輸入結束;linux/unix下使用ctrl+d表示輸入結束。acm 中, 測試用例都是存在檔案裡面的。在自動測試時, 會以檔案作為輸出, 實際輸入的是檔案的內容,到輸入結束, 會自動得到乙個檔案結尾標記,即scanf返回結果為eof。

鑑於此,我們採用更加簡潔的方法,使用eof來判斷單詞是否已經輸入完畢,**如下:

int num = 0;    //記錄單詞個數

char ans[90][90]; //儲存單個單詞

while(scanf("%s", ans[num]) != eof)

num++;

scanf函式讀入字元陣列時,必須讀入字元才算作讀入,空格、換行符都不會讀入

getline函式會讀入一行,不管是空還是有字元

因此我們在使用時一定要注意,如果有空字元會讀入,一定要使用getline

#include using namespace std;

scanf("%s %s", a, b);

int lena = strlen(a);

int lenb = strlen(b);

reverse(a, a+lena);

reverse(b, b+lenb);

也可以反轉string型別

string s;

getline(cin, s);

reverse(s.begin(),s.end());

getchar()是在輸入緩衝區順序讀入乙個字元(包括空格、回車和tab)  ,前面的scanf()在讀取輸入時會在緩衝區中留下乙個字元'\n',所以如果不在此加乙個getchar()把這個回車符取走的話,getline()就不會等待從鍵盤鍵入字元,而是會直接取走這個「無用的」回車符,從而導致讀取有誤 

printf("%.1f%%\n", samenum * 100.0 / totalnum); 轉義符

#include

當strcmp(str1, str2) == 0 時,表示相等; <0 表示str1的字典序小於str2;>0 表示str1的字典序大於str2的字典序

return strcmp(str1, str2) < 0 表示cmp 函式按照字典序從小到大排序

小轉大要減!

char c1;

if(c1 >= 'a' && c1 <= 'z')

c1 -= 32;

erase()方法:兩種用法

刪除單個元素,必須使用迭代器刪除

刪除乙個區間內的元素,erase(first, end) 即是刪除 [first, end) 之間的元素

string str = "abcde";

str.erase(str.begin() + 4); //刪除4號位e

str.erase(str.begin() + 2, str.end() - 1); //刪除cd

基於有序序列的查詢演算法,高效之處在於,每一步都可以去除當前區間的一半元素,其時間複雜度為o(log n).

upper_bound( begin,end,num):在從小到大遞增的排序陣列中,從陣列的begin位置到end-1位置二分查詢第乙個大於num的數字,找到返回該數字的位址,不存在則返回end。通過返回的位址減去起始位址begin,得到找到數字在陣列中的下標。

lower_bound( begin,end,num):在從小到大遞增的排序陣列中,從陣列的begin位置到end-1位置二分查詢第乙個大於或等於num的數字,找到返回該數字的位址,不存在則返回end。通過返回的位址減去起始位址begin,得到找到數字在陣列中的下標。

在從大到小的排序陣列中,需要過載lower_bound()和upper_bound()

upper_bound( begin,end,num,greater() ):從陣列的begin位置到end-1位置二分查詢第乙個小於num的數字,找到返回該數字的位址,不存在則返回end。通過返回的位址減去起始位址begin,得到找到數字在陣列中的下標。

lower_bound( begin,end,num,greater() ):從陣列的begin位置到end-1位置二分查詢第乙個小於或等於num的數字,找到返回該數字的位址,不存在則返回end。通過返回的位址減去起始位址begin,得到找到數字在陣列中的下標。

#include #include //過載函式時greater()需要引入

#include using namespace std;

int main();

int j = upper_bound(a, a + 6, 2) - a; //第乙個大於2

int k = lower_bound(a, a + 6, 2) - a; //第乙個大於等於2

printf("%d\n", j); //3

printf("%d\n", k); //2

int b[6] = ;

j = upper_bound(b, b + 6, 2, greater()) - b; //第乙個小於2

k = lower_bound(b, b + 6, 2, greater()) - b; //第乙個小於等於2

printf("%d\n", b[j]); //1

printf("%d\n", b[k]); //2

}

reverse(it, it2) 可以將陣列指標在[it, it2) 之間的元素或者容器迭代器內的元素進行反轉

fill(a, a + 5, 233); 

可以把陣列或者容器中某一段區間賦為某個相同的值,與memset不同,這裡的賦值可以是陣列型別範圍內的任意值

面試準備知識點

ps用來顯示當前程序的狀態 ps a 顯示所有程序 ps a 顯示所有程序資訊 ps u root 顯示指定使用者資訊 ps ef 顯示所有程序資訊,連同命令列 ps ef grep ssh 查詢指定程序 ps l 將目前屬於自己這次登入的pid與相關資訊列出來 ps aux 列出目前所有的正在記憶...

準備的知識點

1.mybatis是什麼?2.mybatis的體系結構?3.mybatis和hibernate的區別?4.什麼是spring?5.spring mvc的工作原理?6.spring的模組?7.什麼是ioc?什麼是di?ioc的優點是什麼?8.什麼是動態 給 invocationhandler角色,外界...

機試準備(二)

1.判斷是否為閏年 bool isreap int year 2.進製轉換 其他進製轉換為十進位制的時候可以使用while 當用十進位制轉換為其他進製的時候需要使用do while3.回文串 bool judge char str 或者用另一種方式,但是需要注意加上末尾結束符 0 page975.選...