因为这学期又有涉及算法的课,c语言还是比较快的,以前也都是用c写算法的,但是好久没碰c了,一些操作都记不太清了,就整理整理,方便以后唤醒记忆。
C语言的一些函数的用法
- 编译器
- 万能头文件
- 1 scanf(),printf()
- 2 cin,cout
- 3 struct结构体
- 4 strlen()
- 5 strlwr(),strupr()
- 6 abs(),sqrt(),pow(),log(),exp()
- 7 fabs(),fmod(),floor()
- 8 自定义函数
- 9 sort排序(可自定义结构体排序方式)
- 10 stack用法[s.pop(),s.push(),s.top(),s.empty()]
- 11 queue用法[q.push(),q.front(),q.back(),q.empty(),q.pop(),q.size()]
- 11 vector用法[v.push_back(),v.size(),v.insert(),v.erase(),reverse()等]
编译器
Dev-C++ 直接百度搜索下载就可以,是一个比较简洁的编译器。
万能头文件
#include<bits/stdc++.h>
using namespace std;
int main(){
printf("hello, world");
return 0;
}
结果
1 scanf(),printf()
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
double b;
char c;
char d[100];
char e[100];
scanf("%d %lf %c",&a, &b, &c);
scanf("%s", d);
scanf("%s", e);
printf("%d %lf %.3lf %c\n", a*5, b*2, b*4, c+1);
printf("%s\n", d);
printf("%s", e);
return 0;
}
结果
2 cin,cout
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
double b;
char c;
cin>>a>>b>>c;
cout<<a*5<<"\n"<<b*2<<"\n"<<c;
return 0;
}
结果
3 struct结构体
#include<bits/stdc++.h>
using namespace std;
struct stu{
int a;
double b;
}s[5];
int main(){
cin>>s[0].a>>s[0].b;
cout<<s[0].a * s[0].b<<endl;
printf("%lf", s[0].a * s[0].b);
return 0;
}
结果
4 strlen()
用于计算数组包含内容的长度
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[100];
scanf("%s", a);
int n = strlen(a);
cout<<n;
return 0;
}
结果
5 strlwr(),strupr()
将字符串输出时转换为小写或者大写
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[100];
scanf("%s", a);
cout<<strlwr(a)<<endl;
cout<<strupr(a);
return 0;
}
6 abs(),sqrt(),pow(),log(),exp()
#include<bits/stdc++.h>
using namespace std;
int main(){
double a;
cin>>a;
cout<<log(a)<<endl<<log10(a)<<endl<<abs(-a)<<endl<<pow(a, 2)<<endl<<exp(1)<<endl<<exp(2);
return 0;
}
结果
7 fabs(),fmod(),floor()
fabs用于浮点数求绝对值,fmod用于浮点数求余数,floor用于求不大于一个数的最大整数
#include<bits/stdc++.h>
using namespace std;
int main(){
double a;
cin>>a;
cout<<fmod(a, 4)<<endl;
cout<<fabs(a)<<endl;
cout<<floor(a);
return 0;
}
运行结果
8 自定义函数
下面是一个递归求阶乘的示例
#include<bits/stdc++.h>
using namespace std;
int f(int x){
if(x == 1|| x==0)return 1;
else return f(x-1)*x;
}
int main(){
double a;
cin>>a;
cout<<f(a);
return 0;
}
结果
9 sort排序(可自定义结构体排序方式)
参考我的另一篇博客 C语言sort排序
10 stack用法[s.pop(),s.push(),s.top(),s.empty()]
模板库中堆栈的一些用法
#include<bits/stdc++.h>
using namespace std;
struct object{
int a;
char b;
double c;
};
stack<object>s;
int main(){
object t1;
object t2;
scanf("%d %c %lf", &t1.a, &t1.b, &t1.c);
scanf("%d %c %lf", &t2.a, &t2.b, &t2.c);
s.push(t1);
s.push(t2);
cout<<s.size()<<endl;
if(s.empty())cout<<"堆栈为空"<<endl;
object t3 = s.top();
printf("%lf\n", t3.a * t3.c);
s.pop();
t3 = s.top();
printf("%lf\n", t3.a * t3.c);
s.pop();
if(s.empty())cout<<"堆栈为空"<<endl;
return 0;
}
运行结果
11 queue用法[q.push(),q.front(),q.back(),q.empty(),q.pop(),q.size()]
#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int main(){
for(int i=0; i<3; i++){
int x;
scanf("%d", &x);
q.push(x);
}
cout<<q.front()<<endl;
cout<<q.back()<<endl;
if(!q.empty())cout<<"队列不为空"<<endl;
q.pop();
cout<<q.front()<<endl;
cout<<"队列长度为"<<q.size();
return 0;
}
结果
11 vector用法[v.push_back(),v.size(),v.insert(),v.erase(),reverse()等]
#include<bits/stdc++.h>
using namespace std;
vector<vector<int> >vv;
vector<int>v;
int main(){
v.push_back(1);
v.push_back(2);
vv.push_back(v);
cout<<vv[0][0]<<endl;
cout<<vv[0].size()<<endl;
vv[0].insert(vv[0].begin()+1, 5);
cout<<vv[0][1]<<endl;
vv[0].erase(vv[0].begin());
cout<<vv[0][0]<<endl;
reverse(vv[0].begin(),vv[0].end());
cout<<vv[0][0]<<endl;
return 0;
}
运行结果
|