c语言知识(1)

用freopen重定向输入

freopen函数以指定模式重新指定到另一个文件,模式用于指定新文件的访问方式。

FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream);

filename:文件名或文件路径,mode:文件访问权限字符串("r"只读,“w”只写,“a”追加写入),steam:需要被重定向的文件流。

eg:freopen("c:\\tmp\\test.txt", "r", stdin);

 

数据存储是以字节(Byte)为单位,数据传输大多是以位(bit)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。

符号:英文标点占一个字节,中文标点占两个字节。

 

int, long, short, char的最高位是符号位,为1表示负数,为0表示非负数。整型数据转化为字符型数据时,只会留下最右边的一个字节,其余位丢弃

 

2.1 输入输出进阶

%f:读入输出float/输出double。

%lf:读入double。

%lld:读入输出long long。

%s:读入输出字符串,不需要加“&”。

%u:以无符号整数形式输出整数。

%x:以十六进制形式读入或输出整数

 

示例1 4 5;按每个整数占8个字符的宽度,右对齐输出它们。 %8d |       1        4        5

            按每个整数占8个字符的宽度,右对齐输出它们,不足位用0补齐 %08d |000000001 000000004 000000005     

        类似的  %.6f 和%.06f  效果相同      float a=2.4     %.6f|2.400000

 

不要用“a == b”的办法判断两个浮点数是否相等,也不要用“a == 0”的办法判断浮点数 a是否等于0,因为浮点数是有误差的。

应该用“a-b>-eps && a-b<-eps“,即a和b的差的绝对值小于某个很小值 eps的办法来判断a和b是否相等。

如果结果要保留小数点后面n位,那么 eps可以取 10的-(n+2)次方。

 

 

3.1 if语句

else总是和离它最近的if配对。

 

循环控制变量定义在“表达式1”中,则只在for语句内部起作用,可以不用担心循环控制变量重名。

循环结构里的“表达式1”和“表达式3”都可以是用逗号连接的若干个表达式。

“表达式1”“表达式2”“表达式3”都可以不写,但是“;”必须保留。

 

 

                                         

 

posted on 2016-11-05 08:50  qq77530202  阅读(159)  评论(0编辑  收藏  举报