auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static
格 式 字 符 | 说 明 |
---|---|
d, i | 以带符号的十进制形式输出整数(正数不输出符号) |
o | 以八进制无符号形式输出整数 |
x,X | 以十六进制无符号形式输出整数,若用x,则输出的十六进制数为小写形式a ~ f,若用X,则输出的十六进制数为大写形式A ~ F |
u | 以无符号的十进制形式输出整数 |
字 符 | 说 明 |
---|---|
m.n | m、n都是一个正整数。m表示数据的输出列宽;对于字符串,n表示截取字符的个数,对于实数,n表示输出的小数位数 |
- | 左对齐 |
+ | 右对齐,输出符号位(正数输出正号,负数输出负号) |
# | 对于o、x格式输出时加前缀;对于e、g、f格式,当结果有小数时才给出小数点;对其他格式符无影响 |
字 符 | 说 明 |
---|---|
* | 表示本输入项在读入后不赋给任何变量 |
域宽 | 指定输入数据所占宽度(列数),域宽应为正整数 |
例:
scanf("%3d%3d",&a,&b);
输入:
123456↙
系统自动将123 赋给 a 456 赋给 b 。
scanf("%2d□%*3d□%2d",&a,&b);
输入:
12□345□67↙
将12 赋给 a ,%*3d 表示读入 3 位整数但不赋给任何变量。然后再读入 2 位整数 67 赋给b 。也就是说第 2 个数据“ 345 ”被跳过。在利用现成的一批数据时,有时不需要其中某些数据,可用此方法“跳过”它们。
结合性均为左结合
<
、<=
、>
、>=
的优先级相同,高于==
和!=
,==
和!=
的优先级相同
优先级: 赋值运算符 < 关系运算符 < 算术运算符
特别注意: ==
与 =
。 尤其在 if
条件判断中。
&&
和 ||
均为 双目运算符 , 具有左结合性!
为 单目运算符 , 具有右结合性!
> 算术运算符 > 关系运算符 > &&
> ||
> 赋值运算符if
语句的嵌套else
总是与它前面最近的未配对的 if
配对!
> 算术运算符 > 关系运算符 > &&
> ||
> 条件运算符 > 赋值运算符a>b?a:b+1
应理解为 a>b?a:(b+1)
, 而不是 (a>b?a:b)+1
a>b?a:c>d?c:d
应理解为 a>b?a:(c>d?c:d)
switch
语句格式:
switch(表达式) { case 常量表达式1: 语句1; case 常量表达式2: 语句2; … case 常量表达式n: 语句n; default : 语句n+1; }
当表达式的值与某个常量表达式的值相等时,执行其后的语句,然后不再进行判断,继续执行下面所有 case
后的语句。
如果表达式的值与所有case 后常量表达式的值均不相等,则执行 default
后的语句。
switch
后面的表达式两边的括号不能省略case
后面的常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各个常量表达式的值不能重复,且与 case
间要有空格隔开。default
为可选项,其与 case
语句的出现顺序没有严格限制,可出现在任何位置,不会影响执行结果。case
后面的语句可以是一条或多条语句,也可以为空。为多条语句时,可以不用{} 将它们括起来;为空时,程序执行到此会自动向下顺序执行,实现多个case 共用一组执行语句。break
语句跳出 switch
语句int a[100] = {0};
int a[] = {1,2,3,4,5};
二维数组可按行分段赋值,也可按行连续赋值。
例:
int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };
例:
int a[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};
可以只对部分元素赋初值,未赋初值的元素自动取0值。
例:
int a[3][3]={{1},{2},{3}};
int a[2][3]={ 1,2};
当对全部元素赋初值时,第一维的长度可以不用给出。注意不能省略第二维的定义。
例:
int a[][3]={1,2,3,4};
等价于int a[2][3]={1,2,3,4};
int a[][3]={{1,2},{4}};
常用定义方法:char c[10];
int c[10];
虽然合法,但由于每个整型量占4个字节,会浪费存储空间。
字符串结束标志:'\0'
初始化赋值
把字符逐一赋给数组元素
'\0'
,大于则报错例:
char c[11]={‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’’,’y’,’o’,’u’};
例:
char c[]={‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’’,’y’,’o’,’u’};
长度11
用字符串常量对字符数组的初始化
char c[] = {"Welcome you"};
char c[] = "Welcome you";
数组c的长度是12,而不是11
字符串处理函数
函数名称 | 调用形式 | 作 用 | 说 明 |
---|---|---|---|
puts() |
puts(字符数组) |
可以包含转义字符 | |
gets() |
gets(字符数组) |
||
strcpy() |
strcpy(字符串1,字符串2) |
复制,2 1 | 1必须有足够的空间存放2 |
strcat() |
strcat(字符串1,字符串2) |
连接,2 1 | 1必须有足够的空间存放两个字符串连接后的内容 |
strlen() |
strlen(字符数组) |
计算长度 | 返回的长度值不包括结束标志'\0' |
strcmp() |
strcmp(字符串1,字符串2) |
比较, 返回正数 | 两字符串比较时,按ASCII码值从左至右逐一比较 |