1> if语句与switch语句
在编程时经常用到 if-else 语句实现多路检测,但是层次太多,容易混淆出错。因此可以使用switch语句来实现。
语句形式:
switch(表达式)
{ case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
...........
case 常量表达式n: 语句n;
default : 语句 n+1;
}
每一个case后表达式的值不能相同,否则会出现相互矛盾
当表达式的值与某个常量表达式的值相等时,即执行其后的语句;否则执行default后的语句。
2> 条件运算符
一般形式: 表达式1?表达式2:表达式3
语句含义:先求解表达式1,若非0(真),则求解表达式2,此时表达式2的值作为整个条件表达式的值;若表达式1为假,则求解表达式3的值,表达式3的值就是整个条件表达式的值。
例如:
if(a > b) max = a ;
else max = b ; 这个if-else语句等效于:max = (a > b)? a : b ;
但是需要注意的是一般情况下,if语句不能被条件语句代替,这里的例子只是特殊情况。
注意:条件表达式是三目运算符,要求有三个运算对象,是C语言中唯一的三目运算符,结合方向是自右向左。
3> for 循环语句
一般形式:for ( 表达式1;表达式2;表达式3 ) { 循环体; }
执行过程:1)先求解表达式1; 2)求解表达式2 ,若表达式的值非0,则执行循环体语句,再执行表达式3;之后再次执行表达式2,执行循环体,再执行表达式3,这样不断循环,知道表达式2 的值为0 退出循环。
若表达式2 的值为0,则结束循环
在这里说一个break语句,该语句只能使用在 for循环 和 switch语句 中;其作用是立即退出本层循环。
4> 数组
定义:内存中一块连续的存储单元。(一个存储单元只能存储一个数。连续的存储比离散的存储,在读取时效率高。)
声明形式:数据类型 数组名 [ 元素个数 ] ;(其中元素个数必须是整形常量,不能是变量;也可出现表达式,但其值为整型的常量)
如:1> int data[3] ;
2> int data[3+4];
3> int data[ n ]; 其中 n 为整型变量
注意:以上1>、2>是正确的定义形式,3>是错误的定义形式
数组的地址表示形式有两种: 1> &数组名 [ 下标 ] ; 2> 数组名 + 下标 ; 注意:下标是从0开始的:0~元数个数-1 eg: 数组的第一个元素的地址: &data[0]; 或者 data + 0 = data
数组的第二个元素的地址: &data[1]; 或者 data +1
注意:不能表示为1+data,这种表示方法是错的,因为这就相当于:下标 + 数组名
数组名用来表示数组的首地址。
在这里提一个没关联出错的地方:scanf(“%d\n”,&x);//这条语句的作用是输入一个值,并将这个值赋给变量 x ,看起来并没有毛病,可是这里的 \n 不应该有,否则即使代码正确,后面也不能得到想要的结果,所以应该去掉 \n ;
正确写法:scanf(“%d”,&x);
5> 字符串处理
字符在内存中是以ASCII码值来存储。字符串必须用双引号“”来定界。
计算机在存储字符串时,会自动在尾部追加结束标志 \o 。\o:是转义字符(是一个字符,ASCII码值为0,它不是有效字符),用来表示一个字符串的长度,虽然通常是计算机自动追加,但也可以手动添加 \o(手动追加的该符号是结束标志,即 \o 后的字符将不会输出) ,手动追加 \o 之后,系统将不会追加 \o 。
字符串的存储:若用数组定义大小,最小是2字节(1个元素 + 1个\o)。
定义字符型数组:char 数组名 [ 元素个数 ] ; 其初始化可以是 char a[60]={"sakhk"};但不能是char a[60]; a="sakhk";
一个字符型数组最多存 n-1 个有效字符; eg: char a[80]; //最多可以存储79个有效字符。
可以通过以下语句将一个字符串输入到字符型数组中。
scanf("%s",数组名); // %s用来接收一个字符串,数组名表示驻足的首地址。
通过键盘输入的每一个字符都是有效字符,输完以回车为结束标志(告诉系统已输入完毕)。
注意:当输入字符串进行存储时,若遇到空格符,则空格符号的字符将不在存储。
eg: 输入:chi na //chi与na之间有一个空格,那么系统存储的字符只有chi
存储:chi\o
除了scanf()函数之外还有 gets(数组名) 函数,两者功能是一样的。不同的是,gets()函数只以回车作为结束标志,对于空格也照样存储,空格也是一个字符;但gets()函数只能输入字符串,而scanf()函数可以输入任何类型的数据。
eg: 输入:chi na
存储:chi na\o
字符串的输出: printf(“%s”,数组名);
puts(数组名);
字符串函数:
strlen(数组名);//检测字符串的有效字符的个数(因此不包括 \0 ),返回值是一个 int 类型的整数。
strcpy(数组名,“字符串”);//复制字符串,将后面的字符串复制给数组名坐在的空间。
或 strcpy(数组名1,数组名2);
strcat(数组名,字符串); //用于字符串的连接,将字符串连接到数组的尾部,构成一个新的字符串。
strcat(数组名,数组名);
strcmp(数组名1,数组名2);//字符串比较大小
或 strcmp("......",".......");