您的位置:首页 > 编程语言 > C语言/C++

自己转C++的一些经验

2012-11-17 14:51 183 查看
转C++并不难,语法一天就可以搞定,最多两天。至于stl就需要后面多做题,多积累了

先说说Pascal和C++的一些基本语法相同和不同之处

1.基本结构

program test;//这一句可以不要

begin
{主程序}
end.
#include<cstdio>//输入输出头文件

int main()
{
/*主程序*/
return 0;
}

2.声明变量语句(每个变量Pascal 和 C++ 相对应)

var
a:longint;//32位整数            -2^31 ~ 2^31-
b:int64;//64位整数              -2^63 ~ 2^63-1
bb:qword;//64位无符号型整数     0 ~ 2^64-1
c:double;//实型
cc:extended;//实型(精度更高)
arr:array[0..99] of longint;//一个0~99的longint数组arr
h:boolean;
ch:char;//一个字符 ch
s:string;//一个字符串 s
int a;
long long b;
unsigned long long bb;
double c;
double cc;
int a[100];//C++是左闭右开,声明[100]表示0~100-1的大小
bool h;
char ch;
char s[MAX_LEN];//这个是C的数组,MAX_LEN是字符串的长度。还有一个string后面介绍
自己的一些感受:Pascal的变量声明必须在每个函数最前面,如果变量多了的话就很容易混淆,所以起一个好的变量名就尤为重要了,而C++的变量就可以任意声明了,也就是说在程序写到一半的时候,有一个变量没声明,你不必跑到最前面去声明,直接就地声明就ok,这样就显得很灵活了

3.输入输出及其格式

假设a=1,b=2,先输出a 整除以 b,再输出 a/2,最后输出a/b,后两个保留两位小数  都控制10个字符宽度  (假设变量已声明)

a:=1; b:=2;
write(a div b:10);
write(a/2:10:2);
write(a/b:10:2);


a=1;b=2;
printf("%10d\n",a/b);
printf("%10.2lf",a/2.0);//注意是2.0
printf("%10.2lf",(double)a/b);//必须先将其中一个转化为double

//C++还有一种输入输出流,某些情况下方便些,但是很慢!几乎不推荐。要包含头文件iostream,并且控制格式很麻烦(反正我不会。。。)
cout<<a/b;
cout<<a/2.0;
cout<<(double)a/b;
//上面这段代码是没有控制格式的
//上面代码也可以写成一句  cout<<a/b<<a/2.0<<(double)a/b;    当然输出时没有空格分开的
//要想有空格分开,就写成  cout<<a/b<<' '<<a/2.0<<' '<<(double)a/b;
C++的浮点数是很危险同样也是很方便的。

%d 输出int。要控制格式就按照%ad来写,就表示控制a个字符宽度,如%10d表示控制10个字符宽度;还有%0ad,如%010d,仍然表示控制10个字符宽度,但不是用空格隔开,而是补0,有兴趣的可以试试(这个在高精度压位的时候很好输出)
%lld 和 %I64d 输出(unsigned) long long。由于根据情况不同,这两种是不能乱用的(乱用后果很严重!),所以推荐用输入输出流的cout输出(难得排上用场),读入也是一样,推荐cin
%lf 输出double 。格式%a.blf,表示控制a个字符宽度,小数点后保留b位,中间用小数点隔开

如果上面格式错了的话,样例输出如果是错的还好说,至少自己知道错了,但是可能答案也是对的,然后一交,你就只有呵呵了。。。

4.函数与过程

procedure work;//定义一个work过程
begin
end;

procedure work2(a:longint);//定义一个work2过程,带了一个longint参数a
begin
end;

function calc:longint;//定义了一个calc函数,返回longint
begin
exit(???);//最后要返回一个值
end;

function calc2(a:longint):longint;//定义了一个calc2函数,返回longint,带了一个参数a
begin
exit(???);//最后要返回一个值
end;


/*先说一下,用Pascal的都知道上面work和work2虽然一个没有带参,一个带参,但是也是不能同名的,但是C++可以,只要所带参数不一样,就算不重名!*/

void work()//C++就算没有参数,也要带一个空括号
{
}

void work(int a)
{
}

int calc()
{
return ???;
}

int calc(int a)
{
return ???;
}

如果前面觉得C++麻烦,现在还觉得吗?代码简洁了很多

5.ASCII的一些转换

给定一个字符ch,输出它后面第两个的字符,和ASCII值,用回车隔开

writeln(chr(ord(ch)+2));
writeln(ord(ch)+2);
printf("%c\n%d\n",ch+2,ch+2);//'\n'是回车
两个都是ch+2,怎么输出不一样?

对,一个是%c,一个是%d,C++中ASCII码和字符是相通的,只需要控制格式即可

6.bool 类型和 if 条件

判断一个数 x (longint) 是否等于0,等于0就让 flag (bool)  赋值为false,否则为true,然后在判断flag是否为true,是就输出"true",否则输出"false"

if(x=0) then flag:=false
else flag:=true;
if(flag) then//这里可以直接应用flag的布尔值
writeln('true');
else writeln('false');
if(!x) flag=false; else flag=true;//条件语句也可以写成if(x==0)注意是两个等号,错了的话会死的很惨!!!
if(flag) printf("true"); else printf("false");
C++是可以直接引用任何值来当做bool值,非0为true,0为false

PascalC++     
and&&
or||
not!

7.操作符

 PascalC++
++
--
**
整数除法div/
实数除法//
取余mod %
大于>>
大于等于>=>=
小于<<
小于等于<=<=
等于===
不等于<>!=
逻辑非not!
逻辑与and&&
逻辑或or||
右移shr>>
左移shl<<
位运算与and&
位运算或or|

8.循环语句

①打印出1~100的整数,空格隔开(给出完整程序)

program test;

var
i:longint;

begin
for i:=1 to 100 do
write(i,' ');
end.
#include<cstdio>

int main()
{
for(int i=1;i<=100;i++)
printf("%d ",i);
return 0;
}


②打印出1.0,1.1,1.2,1.3,...,9.7,9.8,9.9,10.0,空格隔开(给出完整程序)

program test;

var
i:double;

begin
i:=1.0;
while(i<=10.0) do
begin
write(i:0:1,' ');
i:=i+0.1;
end;
end.
#include<cstdio>

int main()
{
for(double i=1.0;i<=10.0;i+=0.1) printf("%.1lf ",i);
return 0;
}
大家已经发现了,Pascal只能用longint做循环变量,而C++什么都可以。换句话说,C++中的for语句里面什么都可以装!

一般格式  for( 赋初值 ; 继续循环的条件 ; 每完成一次循环要做的事 )

并且由于C++的语句中可以装很多东西,所以有时会出现空语句,即没有后面的语句直接一个分号,就像for(.....) ;

有人会问这个什么都不执行又有什么用呢?当然有用了,比如一直读整数x,读完为止,就可以写成

while(scanf("%d",&x));
如果现在觉得这个很荒谬,可以不管,以后会有用到的时候,再来看看

刚才说了for语句,Pascal还有while语句和repeat语句

while 条件 do//条件为真就执行
begin
end;

repeat
until 条件;//条件为真就退出循环
while(条件)//条件为真就执行
{
}

do{
}while(条件);//条件为真就执行


9.问号表达式

前面说了 if 语句,其实C++还有一种问号表达式,很方便的。

问号表达式格式    bool表达式?表达式1:表达式2                  这句话先执行bool表达式,为真就执行表达式1,否则执行表达式2

仍然是这个:判断一个数 x (longint) 是否等于0,等于0就让 flag (bool)  赋值为false,否则为true,然后在判断flag是否为true,是就输出"true",否则输出"false"

flag= (!x)?false:true;
printf("%s",flag?"true":"false");


好了,如果前面都掌握了,那么C++的基本语法也就差不多了,不过还必须去看看C++头文件那篇文章,因为那关系了你能不能编译成功!

至于那些C++的函数等等就可以自己学了,只要入门就很好掌握了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: