一、while(scanf("%d",&n),n) 是什么意思?
while(scanf("%d",&n),n) 中的scanf("%d",&n)是输入一个n值,后的,n是一个,号表达式,结果是最后一个逗号的值,while( 表达式)表达式为非0是就看成是真值。while(scanf("%d",&n)==1)在成功读入1个数据时执行循环体。功能一样,为0结束。二、(a & 1)?(b=9):(b=3)a&1 二进制中,a的二进制表示法末尾为1,(a&1) 就为真,即得到结论a为奇数。 双目运算符,?前为条件,条件为真则第二个括号运算,若假,第三个括号运算。
三、 define lev(n) (n%4==0&&(n%100 !=0 || n%400 == 0) )
宏,判断是否为闰年
关于宏:
简单的宏
#define N 2+2
void main()
int a=N*N;
printf("%d",a);
}
a的结果为 2+2*2+2=8
带参数的宏
#difine area(x) x*x
void main(){
int y=area(2+2);
printf ( "%d",y);
printf("%d", area(2+2) / area(2+2) );
}
y的结果为2+2*2+2=8
得到结果为2+2*2+2 / 2+2*2+2 = 2+4+1+4+2=13
#define dprint(expr) printf(#expr "=%\n" , expr)
宏,按原样替换!!!!
四、 <math.h> fabs(r) 得到r的绝对值 sqrt(e) 得到e的开方数
<math.h>跟<cmath>,前者是兼容C风格的库文件,后者是标准c++库文件 <stdio.h> , <stdio>类似