【Code】浅谈Pascal转C++
Pascal轉(zhuǎn)C++
- 引入
- 準(zhǔn)備和比較
- 簡單的轉(zhuǎn)換
- 頭文件
- 輸入輸出
- 注釋
- 變量
- 變量的類型
- 變量的定義
- 全局變量和局部變量
- 作用域
- 常量
- 賦值語句
- if條件判斷語句
- 循環(huán)語句
- for循環(huán)
- while循環(huán)
- 函數(shù)
- 數(shù)學(xué)函數(shù)(自帶函數(shù))
- 排序函數(shù)
- 自定義函數(shù)
- 關(guān)于字符,ASCII碼的問題
- 字符串
- 字符數(shù)組
- string類型
- 雜項(xiàng)
引入
中國計(jì)算機(jī)學(xué)會(huì)于2016年11月1日發(fā)布了《CCF關(guān)于NOI系列賽事程序設(shè)計(jì)語言變更的公告》,內(nèi)容如下:
根據(jù)國際信息學(xué)奧林匹克競賽(IOI)的相關(guān)決議并考慮到我國目前程序設(shè)計(jì)語言的具體情況,CCF決定:1.2020年開始,除NOIP以外的NOI系列其他賽事(包括冬令營、CTSC、APIO、NOI)將不再支持Pascal語言和C語言;2.從2022年開始,NOIP競賽也將不再支持Pascal語言。即從NOIP2022開始,NOI系列的所有賽事將全部取消Pascal語言。在無新增程序設(shè)計(jì)語言的情況下,NOI系列賽事自NOIP2022開始將僅支持C++語言。 此通知。中國計(jì)算機(jī)學(xué)會(huì)2016年11月1日所以很多Pascal選手開始轉(zhuǎn)C++。
準(zhǔn)備和比較
1.C++更復(fù)雜,更難學(xué),但是功能更強(qiáng)大。
2.你學(xué)過Pascal以后,學(xué)C++比較簡單。(C轉(zhuǎn)C++更加簡單)
3.C++版本之間的差異很大,很容易編譯錯(cuò)誤。
建議大家使用Dev-cpp 5.6.1 ,是gcc/g++ 4.8.1 。
最接近比賽的版本。
比賽的版本是4.8.4(比賽的版本詳情)。
千萬不要使用Dev-cpp 5.9.x 或 5.11.x(很多大佬因此爆零)。
4.C++代碼的后綴名 .cpp
cpp=C Plus Plus=C++
簡單的轉(zhuǎn)換
1.C++都是由一個(gè)個(gè)函數(shù)組成的。
2.C++ 大括號 { 和 } 代替 begin 和 end 。
3.函數(shù)和變量的類型是寫在前面的,int就是longint類型。
4.每句話結(jié)尾都是分號,如果遇到某些括號(大括號、函數(shù)的參數(shù)表里面的小括號等)的時(shí)候,分號省略。
5.主程序最后一句是
return 0;最好加上,有一定的好處。
頭文件
一般建議初學(xué)者使用C++萬能頭文件
#include <bits/stdc++.h>C++萬能頭文件幾乎包含了所有頭文件。
輸入輸出
輸入語句
輸入語句 cin>>變量1>>變量2>>變量3;輸出語句
cout<<變量1<<變量2<<...; cout<<"hello world" << endl; //endl是換行cin和cout在<iostream>頭文件中,還需要標(biāo)準(zhǔn)命名空間using namespace std;
場寬:
cout<<setw(5)<<a;保留幾位小數(shù):
cout<<fixed<<setprecision(3)<<a;函數(shù)在<iomanip>頭文件中。
其他輸入輸出語句有scanf()和printf()等,一般不建議初學(xué)者學(xué)習(xí),等到熟練了必須掌握。
a+b代碼:
#include <bits/stdc++.h> using namespace std;int main() {int a,b;cin >> a >> b;cout << a+b << endl;return 0; }注釋
注釋
在 C++ 代碼中,注釋有兩種寫法:
1 行內(nèi)注釋
以 // 開頭,行內(nèi)位于其后的內(nèi)容全部為注釋。
2 注釋塊
以 /* 開頭, */ 結(jié)尾,中間的內(nèi)容全部為注釋,可以跨行。
注釋對程序運(yùn)行沒有影響,可以用來解釋程序的意思。
在工程開發(fā)中,注釋可以便于日后維護(hù)、他人閱讀。
在 OI 中,很少有人寫許多注釋,但注釋可以便于在寫代碼的時(shí)候理清思路,或者便于日后復(fù)習(xí)。而且,如果要寫題解、教程的話,適量的注釋可以便于讀者閱讀,理解代碼的意圖。
變量
變量的類型
整數(shù):
int (longint/int32)
long long (int64)
unsigned int (dword)
unsigned long long (qword)
小數(shù):
float (real)
double (double)
字符:
char (char)
布爾類型:
bool (boolean)
字符串:
string (string)
無類型
void (?)
變量的定義
int a,b; char ch='c'; double f; int a[100]; char mat[50][50];數(shù)組:
int a[100];
//表示定義了a[0]-a[99] 都是int類型
二維數(shù)組 int a[100][100];
//定義了a[0][0]-a[99][99]
初始化:
int a[5]={1,2,3,4,5};全局變量和局部變量
在函數(shù)里面的都是局部變量,在函數(shù)外面的是全局變量。
函數(shù)包括主函數(shù)main()。
作用域
作用域是變量可以發(fā)揮作用的代碼塊。
變量分為全局變量和局部變量,意義已經(jīng)在上面講解。
全局變量的作用域是整個(gè)文件,全局變量一旦聲明,在整個(gè)程序中都是可用的。
C++可以在任何地方定義變量,變量的作用域只有它的下面。
常量
常量是固定值,在程序執(zhí)行期間不會(huì)改變。
常量的值在定義后不能被修改。聲明時(shí)加一個(gè) const 關(guān)鍵字即可。
或
const int N=105;賦值語句
a=b; ( a:=b )
i++ 或 ++i ( inc(i) )
i+=a ( inc(i,a) )
i-- 或 i-- ( dec(i) )
i-=a ( inc(i,a) )
if條件判斷語句
格式1:
if (條件) 語句; if (條件) {語句1語句2...... }格式2:
if (條件) 語句1;else 語句2; if (條件) {...... } else {...... }布爾運(yùn)算符:
and 是 &&
or 是 ||
not 是 !
比較運(yùn)算符:
> 大于 >= 大于等于 < 小于 <= 小于等于 == 等于 != 不等于循環(huán)語句
for循環(huán)
格式:
for (初始操作; 循環(huán)的條件; 變化) {語句1;語句2; }步驟:
Created with Rapha?l 2.2.0初始操作判斷循環(huán)條件是否成立?語句1語句2結(jié)束yesno舉例:
求1+2+……+100
while循環(huán)
while:
while(條件) {語句1;語句2; }do while :
do {語句1;語句2; } while(條件)函數(shù)
數(shù)學(xué)函數(shù)(自帶函數(shù))
abs() 整數(shù)的絕對值
fabs() 小數(shù)的絕對值
ceil() 上取整
floor() 下取整
均在<cmath>或<math.h>頭文件中。
排序函數(shù)
對a[1]到a[n]進(jìn)行從小到大排序
sort(a+1,a+n+1);a+1就是a[1]的內(nèi)存地址,結(jié)尾必須多1。
如果a[0]-a[n-1]排序:
sort(a,a+n);sort()是快速排序,在<algorithm>頭文件中。
自定義函數(shù)
初學(xué)者一般建議寫在main函數(shù)的上面。
類型 函數(shù)名(參數(shù)表) {...return 答案; }舉例:
int plus(int a,int b) {int ans;ans=a+b;return ans; }無類型函數(shù):
void 函數(shù)名(參數(shù)表) { //void就是空,無類型=.....不需要return }關(guān)于字符,ASCII碼的問題
ASCII碼表:https://blog.csdn.net/Ljnoit/article/details/102649314
int a; char x='A'; a=x; //a就是65了 x=66; //x就是'B'c++可以強(qiáng)制轉(zhuǎn)換:
(類型)變量 cout<<(int)x<<endl;字符串
字符數(shù)組
一個(gè)一維的字符數(shù)組,可以看成是一個(gè)字符串
比如: char s[105];
讀入一個(gè)字符串 cin>>s;
注意: cin讀入的時(shí)候是從一個(gè)可見字符讀到另一個(gè)可見字符
空格和回車不讀
如果用 gets(s) 讀入一整行
輸出字符
cout<<s; puts(s); //他會(huì)換行字符是單引號 字符串是雙引號
字符串有結(jié)尾符
如果s讀入的是abc
那么s[0]=‘a(chǎn)’
s[1]=‘b’
s[2]=‘c’
s[3]=’\0’;
'\0’表示空字符(不是空格)
1.求長度 strlen
int x=strlen(s); //只計(jì)算從s[0]到\0有幾個(gè)字母2.賦值
strcpy(s1,s2); //把s2 賦值給s13.連接運(yùn)算
strcat(s1,s2); //把s2接到s1的后面4.比較大小
strcmp(s1,s2)返回值是大于0,說明字典序s1>s2
等于0 ,說明s1=s2
結(jié)果小于0 ,說明字典序s1<s2
其他函數(shù)都自己寫。
string類型
(一般不用的,因?yàn)樘?#xff09;
雜項(xiàng)
C++中 0就是假,非零就是真。
恭喜您轉(zhuǎn)型升級成功!
深談Pascal轉(zhuǎn)C++:https://blog.csdn.net/Ljnoit/article/details/104960875
總結(jié)
以上是生活随笔為你收集整理的【Code】浅谈Pascal转C++的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何利用window下的Dos命令实现将
- 下一篇: VC法则:互联网行业仅前三名可成功