算法笔记(一):C语言常用易错基础总结
(一)浮点型:
对于浮点型%f是float和double型的输出格式,
记住:浮点型不要使用float,碰到浮点型的数据都应该用double来存储。
(二)符号常量:
(1)const 数据类型 变量名 = 常量;
例:const double pi=3.14;
(2)define除了可以定义常量外,其实可以定义任何语句或片段。
举例(此例子使用ADD(a,b)来代替a+b的功能。):
易错题:
解释:大部分人认为结果应该为5,这个陷阱在于替换部分应该是原封不动的替换进去CAL(a+1)实际上是(a+1*2+1),而不是((a+1)*2+1)。
(三)运算符
对于除法运算符,需要注意:当被除数跟除数都是整数时,并不会得到double浮点型数,而是直接舍去小数部分(向下取整)。
(四)scanf和printf输入/输出
注意点:
(1)scanf中,除了char类数组整个输入的情况不加&之外,其他变量类型都需要加&。
(2)字符数组使用%s读入的时候以空格跟换行为读入结束的标志 ,空格或换行符之后的无法读入。
易错题:
(3) 对于double类型变量,输入是%lf,而输出是%f。(注:有些都写成%lf不会报错,但请按标准来)
(五)输出格式
(1)%md
功能:使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐
注意:如果变量本身超过m位,则保持原样
(2)%0md
功能:与%md大致相同,只是用0填补高位的空格
(3)%.mf
功能:让浮点数保留m位小数。
了解注意:是按照“四舍六入五成双”的规则,如果想四舍五入请使用round函数。
(六)getchar和putchar输入/输出字符
功能:输入输出单个字符,且getchar可以识别换行符号。
(七)常用的math函数
(1)取绝对值:整数用abs(),小数用fabs()。
(2)向下取整用:floor(),向上取整:ceil()。注意:-5.1向下取整为-6,5.1向下取整为5。
(3)r的p次方:pow(double r,double p)。注意:r和p都是double。
(4)算术平方根:sqrt()。
(5)以自然对数为底:log()。
(6)double类型四舍五入:round()。
(八)一维数组赋值
(1)如果数组一开始没有赋值,则数组中每个元素可能会是一个随机数,并不一定为0。如果数组赋值了一部分,剩下的没有被赋值部分则默认为0.
因此如果想给整个数组都赋初值0,只需要把第一个元素赋值为0或者用一个大括号表示即可。
(九)二维数组赋值
(十)memset函数
功能:对数组中每一个元素赋相同的值(一维、二维、多维)
格式:memset (数组名,值,sizeof(数组名));
注意:
1.使用需添加string.h头文件
2.但值只可以是-1,0,false,true,值不能为1!!!
3.如果想对数组赋其他数字,请使用fill函数
(十一)字符数组输入输出
(1)字符数组就是char数组,一维的时候当作“字符串”,二维的时候当作“字符串数组”。
(2)输入可用:scanf,getchar,gets 输出可用:printf,putchar,puts。
scanf输入时,%s通过空格或换行来识别字符串的结束,且不需要加&符号。
关于getchar:
getchar()从控制台读取一个字符,并回显。当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不只一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。
3.关于字符串结束标志’\0’
明确printf,puts通过识别\0为结束符号,使用scanf,gets的时候自动添加‘\0’,如果使用getchar必须加入“\0”。
(十二)string.h头文件
(1)strlen(字符数组):得到字符数组中第一个\0前的字符个数。
(2)strcmp(字符数组1,字符数组2):依次比较字符串大小,遇到不同或结束时返回值。
(3)strcpy(字符数组1,字符数组2):把字符数组2复制给字符数组1。
注意:这里的复制包括结束符\0.
(4)strcat(字符数组1,字符数组2):把2接到1后面。
(十三)sscanf与sprintf(string+scanf,string+printf)
基本用法:
值得注意的是:这里sprintf使str[0]=2,str[1]=3,str[2]=3。
格式化输入输出:
sprintf用于连接字符串:
方便地连接两个或者多个字符串
char buf[1024];
char a[100]=”I “;
char b[100]=”love “;
char c[100]=”ACM.”
sprintf(buf,”%s%s%s”,a,b,c);//buf 包含”I love ACM.”
还没有评论,来说两句吧...