计算机专业的同学们接触的第一门语言基本都是C语言,而在做题的时候明显感觉C语言相对原始,而且输入输出格式要求严格。对于想提高自身编程水平的同学们而言,去主流OJ平台上刷题必不可少。以洛谷为例,当你打开题解时,发现基本都是采用C++编写的题解。
因此,本蒟蒻通过3个月学习C语言的经历分享我的观点:初步学完C语言,是候选择C++了!
正如上文所言,C语言相对原始,而C++有更多好用方便的函数,对于输入输出也没有那么严格,做题更加方便。那么本文就是告诉各位如何速成C++,用C++更愉快地做题。
事先声明,本人为一名普通的计算机专业学生,仅在Codeforces与洛谷上有了一点OJ刷题经验,根据课堂及自学内容总结出以下经验贴,如有错误,欢迎各路大佬指正!
其实,C语言与C++只有两个主要区别,而速成C++仅需改变这两个地方:
1、头文件区别:
C语言新手常用头文件:
#include
#include
#include
#include
而换为C++,则需要变为:
#include
#include
//以下为c语言头文件,意味着c++可以沿用c语言的语法
#include
#include
#include
//头文件后需加上这一句
using namespace std;
或者C++提供了一统头文件的万能头:
注意:该头文件在Dev C++默认带有,牛客、洛谷、Codeforces等主流OJ平台也能使用,但在Visual Studio则需自行添加该头文件
#include
2、输入输出区别:
C语言使用格式化输入输出:
以输入一个整数a为例
scanf("%d",&a);
printf("%d",a);
C++的输入输出:
cin>>a;
cout<
同时,C++能沿用C语言的语法,例如scanf、printf也可在C++编译器下使用(需要添加cstdio头文件),除输入输出外,其他基础语法C++与C语言基本没有区别,也就是C语言怎么写的,C++还是怎么写。
(Tip:C语言某些函数在C++编译器下可能会出错,如gets())
说完主要区别,接下来我将介绍几个常用且快捷的函数!
C++更方便快捷的函数:
//比较函数:
max(a,b)//返回较大值
min(a,b)//返回较小值
//交换函数:
swap(a,b)//交换a、b位置
//排序函数:时间复杂度为O(nlogn)
sort(begin, end, cmp)
//sort函数里的begin指数组首位元素下标,end指末位元素下标
//注意:cmp函数可以没有,即默认从小到大排序
//若需要自定义排序规则则需要编写bool类型返回值的cmp函数
这里使用C语言则需要手搓函数实现上述功能,此处可以做一个对比:
//输出较大值
int max(int a,int b){
return a>b?a:b;
}
//输出较小值
int min(int a,int b){
return akey)r--;
if(l<=r)
{
swap(a[l],a[r]);
l++;r--;
}
}
if(leftl) quick_sort(a,l,right);
}
你愿意选择哪种?
代码实战:
大家可以参考以下例题,展示三个常用函数的使用。
例:输入两个数,比较大小,交换位置;输入一个数组,从小到大排序;
#include
#include
#include
#include
#include
using namespace std;
int main(){
int a,b;cin>>a>>b;
int num[5];
//比较大小
int mx=max(a,b);//mx表示最大值
int mn=min(a,b);//mn表示较小值
cout<<"max="<>c>>d;
cout<<" c="<>num[i];
}
sort(num,num+5);
for(int i=0;i<5;i++){
cout<
输出结果:
写在最后:除了以上常用的函数,更有方便快捷的STL容器可以帮助实现C语言中较难实现的数据结构等,C++给的实在太多了~
请注意:C++使用的cin,cout的输入方式也并非完美,存在性能上的问题,而至于如何优化请各位读者自行研究或是参考别的大佬的文章。
本人第一篇博客,完结撒花~