C/C++快速入门
C语言语言相对于C++以此来作为上机算法题编程语言确实有些语句过于累赘,有些题目的解决的有些复杂,但是对于算法消耗时间有要求的题目,C语言往往表现的更好,所以我们上机算法题解决上,我们可以统筹二者的优点,因为C++向下兼容C语言,所以我们可以将文件命名为cpp文件,这样可以使用一些C++简便库来方便问题解决,也可以在一些语句上面用C语言的表达方式来节省时间。
- C++中的cin和cout与C语言中scanf和printf区别
//C版本
#include <stdio.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
printf("%d",a+b);
return 0;
}
//C++版本
#include <iostream>
int main() {
int a,b;
cin<<a<<b;
cout<<a+b;
return 0;
}
C++中cin和cout比C语言中scanf和printf写法简便很多,但是运行时间效率上C语言明显占优势,所以我推荐尽量写scanf和printf。
2.1基本数据类型
2.1.1变量定义
定义变量是变量类型+变量名,也可以定义变量的同时赋初值。
变量类型 变量名;
变量类型 变量名 = 初值;
注意:
- 变量名不能是如“if,for,sort等标识符”。
- 变量第一个字符必须是字母或下划线,除第一个字符之外其他字符必须是字母,数字,下划线。
- 区分大小写。
2.1.2变量类型
整型、浮点型、字符型,C++又包括bool类型。表2-1列出了四种基本类型。
总结:
- int整型10⁹以内。
- long long长整型10¹⁰到10¹⁸,赋值后面需要加LL
- float,有效小数精度6~7位。
- double双精度浮点,有效精度为15~16位。一般有小数选这个。
数据类型 | 格式符 | 举例 |
---|---|---|
int | %d | scanf("%d",&n); |
long long | %lld | scanf(“lld”,&n); |
float | %f | scanf("%f",&fl); |
double | %lf | scanf("%lf.2",&db); |
char | %c | scanf("%c",&c); |
字符串 | %s | scanf("%s",str); |
数据类型 | 格式符 | 举例 |
---|---|---|
int | %d | printf("%d",n); |
long long | %lld | printf(“lld”,n); |
float | %f | printf("%f",fl); |
double | %lf | printf("%.2f",db); |
char | %c | printf("%c",&c); |
字符串 | %s | printf("%s",str); |
2.2常用math函数
-
fabs(double x)取绝对值。
-
floor(double x)向下取整和ceil(double x)向上取整。
-
pow(double r,double p) r的p次方。
-
sqrt(double x)求平方根。
-
log(double x)以e为底的对数,如果要求任意底数,可以用换底公式,
l o g a b = l o g e b l o g e a log_ab=\frac{log_eb}{log_ea} logab=logealogeb -
sin(double x)、cos(double x)和tan(double x) 以及反函数asin(double x)、acos(double x)和atan(double x)
-
round(double x) 四舍五入。
2.3数组
- 赋值
int a[10]={0};
int a[5][6] = {{3,1,2},{8,4},{},{1,2,3,4,5}};//其余用0补充。
memset(a,0,sizeof(a));//数组a赋初值0.
char str[10];
scanf("%s",str);//如果输入了空格则停止读入。
printf("%s",str);
sscanf(str,"%d",&n);//把字符数组str中的内容以“%d”的格式写到n中(从左→右)
int n;
char str[100] = "123";
sscanf(str, "%d", &n);
printf("%d\n", n);//123
int n = 233;
char str[100];
sprintf(str,"%d",n);//把n以“%d”的格式写到str字符数组中(还是从右至左)
printf("%s\n",str);