逗号表达式(逗号运算符又称顺序求值运算符)
用法:先计算左边的值,在计算逗号右边的值,最后取右边的结果。
int a = 0;
int b = (a+10,10,a*12);
printf("%d\n",b);
---->0
条件表达式
int c = 2;
int d = 3;
int m_a=(d>c)?c++:d++;
和以下的if语句效果相同
if(d>c){
c++; }
else{
d++;
}
---->m_a=2
逻辑运算符 && || !
非零都是真,0是假
3&&2真
3&&0假
0&&0假
3||2真
3||0真
0||0假
!3 假
短路运算
//a+b&&c+d 如果a+b为假的,那么c+d不参与运算
//a+b||c+d 如果a+b为真的,那么c+d不参与运算
int a=3;
int b=0;
if(b++||++a){
}
printf("%d,%d\n",a,b);
printf 和scanf
getchar和putchar
请参照课件和课堂Code(myc-day02)
流程控制
if语句
单分支
if(条件表达式)
{...}
当条件表达式为真的时候执行,假的时候不执行
if ...else
if ...else if...else
注意:else后面没有小括号,当有多个else的时候,else总是和上方最近的if配对。
//if(){}
//if(){}else{}
//if(){}else if(){}else{}
//判断是不是闰年
int main03(){
int year = 1900;
scanf("%d",&year);
if( 0 == year%400 ||
0 == year%4 && 0 != year%100){
printf("闰年");
}
else
{
printf("非闰年");
}
return 0;
}
int main(){
int a = 10;
if(++a>=11 && a++ >11)
printf("%d\n",a);
printf("%d\n",a);
return 0;
}
switch
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default: 语句n+1;
}
注意:switch括号里面可以是整型、字符型、枚举型表达式,而case后面只能是常量表达式(整数或者是结果为整数的表达式,但不能包含任何变量),而且后面的常量结果不能相同。
练习:实现简易版计算器
int main(){
char ch ;
int num1 = 0;
int num2 = 0;
scanf("%d%c%d",&num1,&ch,&num2);
printf("******\n");
switch (ch) {
default:
printf("error");
break;
case '+':
printf("%d+%d=%d\n",num1,num2,num1+num2);
break;
case '-':
printf("%d-%d=%d\n",num1,num2,num1-num2);
break;
case '*':
printf("%d*%d=%d\n",num1,num2,num1*num2);
break;
case '/':
printf("%d/%d=%d\n",num1,num2,num1/num2);
break;
}
}
while do...while for
//1+2+3+...+100
int i=1;
int sum =0;
int time;
scanf("%d",&time);
while(i<time){
//1+2+3
sum = sum+i;
i++;
}
printf("%d\n",sum);
do{
//1+2+3
sum = sum+i;
i++;
}while (i<=time);
for(i=1;i<=100;i++){
sum = sum+i;
}
练习
//1!+2!+3!
//1*1+2*1+3*2*1...
int main(){
int i = 1;
int time = 0;
int sum = 0;
int mul = 1;
scanf("%d",&time);
for(i=1;i<=time;i++){
mul = mul*i;
sum = sum+mul;
}
printf("%d\n",sum);
return 0;
}
//水仙花数
//100~999之间范围的所有的水仙花数
//如下:
//153=1*1*1+5*5*5+3*3*3
//153/100
//153%100/10
//153%10
int i,j,a,b,c;
for(i=2;i<=999;i++)
{
a=i/100;
b=i%10;
c=i%100/10;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%d\n",i);
}
}