从来没有真正的系统的学习c语言,从现在开始系统学习,在这里记录每次遇到的难点以及易混点。
首先谈谈c语言和c++的输入输出的差别,C语言使用的scanf函数和printf函数,c++使用的是cin和cout。虽然cin和cout可以不指定输入输出格式,但是cin和cout消耗时间比scanf和printf多很多。因此在使用时,应该尽量使用scanf和printf。
1.scanf输入函数的使用
单个变量的输入
scanf("格式控制",变量地址);
例:scanf("%d",&n.);
“%d"对应的是int数据类型,对于不同的数据类型只需要将”%d"更换成"%lld","%f"…等对应的格式符。
注意只有char字符串对应的不加&,除此之外都应该加上&。
多个变量的输入
- 空格分隔的字符输入
int a b c;
scanf("%d %d %d",&a,&b,&c);
上述也可以写成:
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
可以不加空格的原因是,除了%c外,scanf对其他格式符(如%d)的输出是以空白符(即空格、Tab)为结束判断标志的。因此除非使用%c把空格按字符读入,其他情况都会跳过空格。
特别注意:scanf的%c格式是可以读入空格跟换行的。
2. 逗号分隔的字符输入
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
- 读入单个字符是唯一不忽略空白符的格式符,使用该字符,可以读到空格,制表符,和换行符,注意的是如果该格式符和其他格式符混用,要注意什么时候会读取到换行符,空格等可能不需要的字符。如果格式符之间添加了空格,那么按照规则,会忽略掉全部的空白符直到遇到下一个不是空白符的字符。
int i;
char k;
scanf("%d %c",&i,&k);
/**
* 这个时候输入"1\na"和"1a"的效果是一样的,因为无论怎么换行,都属于空白符,会被忽略
*/
scanf("%d%c",&i,&c);