C语言的基本数据类型:
布尔类型:非0值为真,0值为假
整数类型:
类型名称 声明类型 字节 表示范围 类型描述符
整型 int 2 -32768~32767 %d
短整型 short 2 -32768~32767 %hd
长整型 long 4 -2147483648~-2147483647 %ld
无符号整型 unsigned 2 0~65535 %u
一般情况下long类型的数据要在末位加”l”或“L”;
%o八进制 %x十六进制
在为整型变量赋值时,如果数值是以0开头的说明该数是八进制数,如果数值是以0x开头的说明该数是十六进制的数
各进制之间的转换:
十进制:0~9
二进制:0 1
八进制:0~7
十六进制:0~9 A~F
十进制转换成任何进制:倒除法除以目标进制,取余数,并将余数倒序排列
任何进制转换成十进制:按权展开式
二进制转八进制: 从右到左三位一组,将每一组转换成一个十进制的数
二进制转十六进制:从右到左四位一组,将每一组转换成一个十进制的数
字符型:
在C语言中,用单引号括起来的单个字符是一个char类型的数据
类型名称 声明类型 字节 取值范围 类型描述符
字符型 char 1 -128~127 %c
字符类型可以和整数类型相互转换,转换时参照ASCII码表
浮点类型:
float的类型描述符%f
double的类型描述符%lf
字符串数据的类型描述符为%s
scanf()语句:"%lf"用于double类型,"%f"用于float类型
printf(语句:"%f"既可用于double类型,又可用于float类型,意思是输出实数(包括单、双精度),并意指“保留6位小数” ;"%lf"只能用于double 型,意思是输出双精度。
转义字符:
\n 换行回车
\r 回车
\b 退格
\t 跳制表域
Sizeof(参数)运算符,可以判断参数所占的字节数。
sizeof是算符,strlen是函数。
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
在C语言中,没有特定的字符串类型,字符串是以字符数组的形式存在的,存储形式是“指定字符串+\0”
<string.h>中有一个函数strlen()可以判断字符串的长度
scanf()函数,标准输入函数;
例:
int a;
scanf(“%d”, &a);
scanf会自动跳过空白字符(回车、空格、Tab),然后去找下一个非空白字符
scanf(“%d,%d”, &a, &b); 或scanf(“%d%d”, &a, &b);这种情况下,在输入数值的时候要严格按照指定格式输入
符号常量:
两种形式:
#define 常量名 常量值
const 数据类型 常量名 常量值
printf()在类型描述符中间加上数字可以控制输出的值的位数,如果是正数,右对齐,如果是负数,左对齐,如果该数值小于实际输出的值的位数,那么按实际情况输出
运算符:
算术运算符:+ - * / % ++ --(两个减号)
关系运算符:== != > < >= <=
逻辑运算符:&& || !
赋值运算符:= += -= *= /= %=
三目运算符: 逻辑表达式?返回值1:返回值2
表达式:运算符与操作数的组合
a +b ++a a>0 a = a +1
类型转换:经常会遇到多种数据类型的数据进行混合运算,需要对数据类型进行转换
自动转换:多个参与运算的数据,自动的向参与运算中级别(数据类型的表示范围越大,级别越高)最高的数据类型转换
级别由高到低double=>float=>long=>unsigned=>int=>short, char
只要char和short参与运算,会自动转换成int类型
赋值的时候要转换成所赋值变量的数据类型
强制转换:在数据前加上强制转换符就可以了。
在程序的世界中,有三种结构,顺序结构、分支结构(选择结构)、循环结构
if(逻辑表达式) {
语句。。。。;
}
if(逻辑表达式) {
语句。。。。。;
}else {
语句。。。。。;
}
if(逻辑表达式) {
语句。。。。。;
}else if(逻辑表达式) {
语句。。。。。。;
}else if(逻辑表达式) {
语句。。。。。。;
}
。
。
。
}else {
语句。。。。;
}
switch语句
switch(整型或字符型表达式) {
case 整型或字符型数据:
语句。。。;
case 整型或字符型数据:
语句。。。;
case 整型或字符型数据:
语句。。。;
。
。
。
default:
语句。。。。。;
}
根据括号中表达式的值去找相对应的case,然后执行case中的语句,如果执行完语句后,没有break语句,那么继续向下执行,所以为了防止case穿透,建议每个语句后面要写break。如果没有找到想对应的case,那么会执行default的语句。
循环:
for循环
for(表达式1;表达式2;表达式3) {
循环体。。。。。。;
}
首先执行表达式1,然后再执行表达式2,如果表达式2的值为真,那么执行循环体,循环体执行完毕后,执行表达式3,然后再执行表达式2,以此类推,真到表达式2为假,退出循环
while(逻辑表达式) {
循环体。。。。。;
}
如果逻辑表达式的值为真,那么执行循环体,循环体执行完毕,再去判断逻辑表达式,直到逻辑表达式的值为假,退出循环
do…while
do..while至少要执行一次
do {
循环体。。。。。
}while(逻辑表达式);
continue: 跳过本次循环
break:终止循环
getchar和putchar用来完成字符的输入输出
putchar该函数将指定的表达式的值所对应的字符输出到标准输出终端上。表达式可以是字符型或整型,它每次只能输出一个字符。
比较下面两个:
<ctype.h>中有对字符的类型进行判断的函数,例如判断一个字符是否是字母
isalpha(参数) 判断参数是否是一个字母
isalnum(参数)判断参数是否是一个字母或数字
isdigit(参数)判断参数是否是一个数字
函数:用来完成特定功能的代码块,函数的出现使得程序更加模块化,在调用的时候我们只须要知道在调用函数时要传什么样的参数或者不传参数,而不需要知道它内部的细节。
形式参数:声明函数时写的参数,在函数调用过程中,用来接收传过来的参数,在声明形式参数时要写参数类型。
实际参数:在函数调用过程中传入的参数
返回值:函数可以有返回值也可以没有,但如果有返回值要声明返回值的类型,如果没有返回值,要写void
return:如果一个函数有返回值,要使用return关键字来返回相应类型的值
在C语言中,函数除了要定义外还要在头部声明
当调用函数的时候,传入参数的类型一定要一一对应
函数的补充:
在C语言中函数参数的传递是值传递。
递归调用:函数调用自己本身
sum(3)
数组:相同类型数据的集合,在数组中,用下标来表示数组每一个元素的位置,下标是从0开始数的,也就是如果一个数组的长度是n,那么下标的取值范围是0~n-1.
数组在声明的时候一定要定义长度
声明方式:
数据类型 数组名[长度]; int a[10];
数据类型 数组名[长度] = {各个元素}; double d[3] = {1.2, 1.3, 1.4};
数据类型 数组名[] = {各个元素}; int b[] = {1,2,3,4,5}
数组的使用:想要获取数组中某一个元素的值,采用下列形式
数组名[下标] a[0] a[3]
如果想要遍历一个数组的各个元素,可以采用循环的方式
指针,其实就是指向某一个变量的地址
声明格式:
数据类型 * 变量名
int * p; 这个指针指向的地址的值是int类型的
在使用的时候p表示地址, *p表示指向地址的值
Int a = 10;
Int * p;
p = &a;
printf(“%d”, *p):
|
|