通过#include<x.h>写法来写,例如:
#include<stdio.h> //standard input output
如果使用数学公式之类的函数的话,则就需要使用math.h头文件;字符串的话,则使用string.h。
程序的执行都是从主函数开始,一个程序只能有一个主函数。
int main(){
return 0;
}
使用scanf和printf函数实现,例如:
int a,b;
scanf("%d%d",&a,&b);
printf("%d",a+b);
有四种基本数据类型,分别为整型(int),浮点型(float、double),字符型(char),布尔型(bool)。
数据类型 | 输出格式 | 输入格式 | |
---|---|---|---|
整型 | int | %d | %d |
浮点型 | float、double(一般使用) | %f | float为%f,double为%lf |
字符型 | char | %c | %c |
布尔型 | bool | %d |
#include<stdio,h>
int main(){
char str[15]="Hello World!";
printf("%s",str);
return 0;
}
bool类型在C++里面可以直接使用,但是C里面需要添加头文件stdbool.h。
强制类型转换的格式: (新类型名) 变量名
使用define可以定义常量,它的值不允许在使用的过程中进行改变,否则会出错。
#define 标识符 常量
例如:#define MAXSIZE 100
char c;
c=getchar();
putchar(c);
fabs(double x);
abs(int x);
pow(double r,double p) // 返回r^p
sqrt(double x); // 返回变量x的算术平方根
格式如下:
if(a=b){
;
}else if(a>b){
;
}else{
;
}
通常在分支条件较多时会显得比较精炼。例如:
switch(表达式){
case 常量表达式1:... break;
case 常量表达式2:... break;
default:...
}
格式如下:
while(条件A){ // 如果条件A满足的,则执行下面循环,否则不执行
...
}
do{ // 先执行循环,最后判断满足不满足,满足继续执行,否则退出循环。
...
}while(条件A);
for(表达式A;表达式B;表达式C){
...
}
break语句是结束整个循环,continue语句是结束本次循环。
数组就是把相同数据类型的变量组合在一起而产生的数据集合,格式定义如下:
数据类型 数组名[数组大小];
例如: int array[10];
函数 | 作用 | 使用方法 |
---|---|---|
strlen() | 得到字符数组中第一个\0前的字符的个数 | strlen(字符数组) |
strcpy() | 把一个字符串复制给另一个字符串 | strcpy(字符数组1,字符数组2) |
strcat() | 把一个字符串接到另一个字符串的后面(把字符数组2接到一个字符数组1的后面) | strcat(字符数组1,字符数组2) |
strcmp() | 返回两个字符串大小比较的结果 如果字符数组1<字符数组2,则返回一个负整数,相等则返回0,大于则返回一个大于0的数 | strcmp(字符数组1,字符数组2) |
void swap(int* a,int* b){
int* temp=a;
a=b;
b=temp;
}
函数参数的传送方式是单向一次性的,main函数传给swap函数的“地址”其实是一个“无符号整型”的数,其本身也跟普通变量一样只是“值传递”,swap函数对地址本身进行修改并不能对main函数里的地址修改,能够使main函数里的数据发生变化的只能是swap函数中对地址指向的数据进行的修改。对地址本身进行修改其实跟之前对传入的普通变量进行交换的函数是一样的作用,都只是副本,没法对数据产生实质性的影响,即相当于把int*看作一个整体,传入的a和b都只是地址的副本。
引用,相当于给原变量起了个别名,旧名字和新名字其实都是同一个东西,对引用变量的操作就是对原变量的操作。(保存文件时,使用.cpp,因为是c++里面的语法)
计算机中采用有限的二进制编码,因此浮点数在计算机中的存储并不总是精确的。