一、双精度输入输出
在使用scanf 函数输入双精度实型数据的时候,应当使用(%lf 进行声明),即scanf("%lf", &a);
在输出的时候可以用"%f"、"%lf" 或 "%m.nf"
二、数组定义的长度
数组在定义的时候语法:类型符号 数组名[常量表达式],例如:int a[20];
但是如果在被调用的函数(不包含主函数)中定义数组,其长度是可以是变量或者非常量表达式的。
例如:
函数void func(int n)
{int a[2 * n]; 是合法的,其中n的值从实参中传来
}
三、字符数组的初始化、赋值和结束符'\0'
在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字
串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长
度来判断字符串的长度了。(一般要多开一个空间存 \0)
例如:
一种:
char s1[2] = {"ni"};
实际存的为:'n' 'i'一般要多开一个空间存'\0'
char s1[3] = {"ni"};
实际存的为:'n' 'i' '\0' 另一种赋值:
char s2[3];
s2[0] = {'n'};
s2[1] = {'i'};
实际存的为:'n' 'i'
赋值问题:
字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,
字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的。C语言并没有提供可以直接操作字符串的运算符;“=”可以用于其他数据类型的赋值,
但是不可以直接给字符串赋值
char str[];
str="I am happy";
字符串长度问题:
strlen函数求得的字符串长度是从字符串第一个元素到第一个'\0'之间元素的个数。
遇到'\0'就终止,因而返回的结果是第一个'\0'前字符元素的个数。(不包含\0)
sizeof求得的结果是存储该字符串的变量占用的空间大小,因而一定会包括'\0'.(包含\0)
若'\0'后还有空余的空间,也会包含到结果里面。也就是说sizeof包含数组中所有的字符,因而它返回的是存储字符串的变量所占用的内存空间大小。
四、数组的输入输出
1、使用%c逐字输入输出。
2、使用%s将整个字符串一次输出输入。
定义char数组
char a[10];
scanf("%s", a); 输入Chinaprintf("%s\n", a); 一次性输出,知道遇到第一个空格或\0