选择if day5
5.scanf(“空白符”) 空白符作用表示匹配任意多个空白符 进入了内存缓冲区(本质就是一块内存空间)
6.scanf读取问题: a.遇到非法字符读取结束 2. %*d * 可以跳过一个字符 eg:%d%*d%d 读取第一和第三个字符 c.遇到空白符读取结束 c.遇到指定的宽度 scanf("%3d",&a)
读到三列宽度后就结束
- -l //link链接 m //math
五:流程控制:
一:布尔运算
1.逻辑运算 && 与(一假则假) || 或(一真则着) ! 非(真假相对)
优先级高的先结合(而不是先运算)
2.系统判断真假问题 零为假 非零为真
3.运算顺序问题(&&的短路特性) eg:b = (1>2) && (a++)
先算左边的式子,当为假时,就不在进行运算
|| eg:b = (1<2) && (a++)
先算左边的式子,当为真时,就不在进行运算
int a = 3;int b = 4;int c = 5;int x,y;printf("%d\n",a+b > c&& b==c); //0printf("%d\n",a||b + c && b-c); //1printf("%d\n",!(a>b) && c || 1); // 1 printf("%d\n",!(x = a) && (y=b)&&0); // 0 printf("%d\n",!(a+b)+c-1 && b+c/2); // 1
二:if
1.单语句
if(表达式)
{语句;
}
if((year%100 != 0 && year%4 == 0)||year % 400 == 0 ){printf("R year\n");//判断闰年}
2.双分支
if(表达式)
{语句1;//真
}else
{语句2;//假
}
if(a>b)//判断3个数的大小{if(a>c){t = a; }else{t = c;}}else {if(b>c){t = b;}else{t = c;}}
3.多分支
if(表达式1)
{语句1
}else if(表达式2)
{}
....
...
else
{
语句n
}
int score ;printf("input a num\n");scanf("%d",&score);if(score <= 100 && score >= 90){printf("A\n");}else if(score <= 89 && score >= 80){printf("B\n");}else if(score <= 79 && score >= 70){printf("C\n");}else if(score <= 69 && score >= 60){printf("D\n");}else if(score <= 59 && score >= 0){printf("E\n");}else {printf("invlid num\n");return -1;//返回异常值,使程序终止}
int month,year;//判断对应月的天数int days = 0;printf("input the year and month\n");scanf("%d %d",&year,&month);if(month == 1||month ==3||month ==5||month==7||month==8||month==10||month==12){days = 31;}else if(month == 4||month ==6||month ==9||month==11 ){days = 30;}else if(month ==2){if((year%100 != 0 && year%4 == 0)||year % 400 == 0){days = 29;}else{days = 28;}}else{printf("invlid month\n");return -1;}printf("%dyear-%dmonth have %ddays\n",year,month,days);return 0;
三:switch
1.switch(整型表达式) //必须是整型,不能是浮点型
case 后面是整型常量表达式,不能出现变量
switch()
{
case常量表达式1:语句1break;
case:...
default:语句n+1break;
}
2.switch匹配执行,如果没有遇到break或者右} 则继续执行,直到遇到break或右}
switch(n){case 1:printf("1\n");break;case 1+1:printf("1+1\n");case 3:printf("3\n");break;default:printf("*\n");break;}