C day05
流程控制语句
可以改变语句的执行顺序 让程序不再从上到下的顺序执行语句
分支语句可以在程序执行的时候 决定那些语句应该执行,那些语句不应该执行
最小 整数 1<<31
0000 0000 0000 0000 0000 0000 0000 0001
1000 0000 0000 0000 0000 0000 0000 0000
-2147483648
if(表达式){
do
}
if (表达式){
do
}else{
do
}
if(表达式){
do
} else if(表达式){
do
}
if(表达式){
do
} else if(表达式){
do
} else{
do
}
#include<stdio.h>
int main(){
int num = 0;
printf("enter num :");
scanf("%d",&num);
if(num > 0){
printf("%d is +\n",num);
}else if(num == 0){
printf("%d is 0\n",num);
}else{
printf("%d is -\n",num);
}
return 0;
}
switch(表达式){
case 1:
break;
case 2:
break;
default:
break;
}
#include<stdio.h>
int main(){
int num = 0;
printf("enter num :");
scanf("%d",&num);
switch(num%4){
case 0:
printf("s");
break;
case 1:
printf("ss");
break;
case 2:
printf("sss");
break;
case 3:
printf("ssss");
break;
default:
printf("what");
break;
}
return 0;
}
循环语句 可以让一段语句反复执行
for 循环
#include <stdio.h>
int main(){
for(int a = 0 ; a < 10; a++){
printf("a is %d\n",a);
}
return 0;
}
while 循环
#include<stdio.h>
int main(){
int i = 0;
while( i < 10){
printf("i is %d",i);
i++;
}
return 0;
}
do while 循环
#include<stdio.h>
int main(){
int i = 0;
do{
printf("i is %d",i);
i++;
}while(i < 10);
return 0;
}
打印一个字符的二进制
#include <stdio.h>
int main(){
//无符号 的int 左移 7位 以后 变成 0000 0000 0000 0000 0000 0000 1000 0000
unsigned int num = 1 << 7;
char ch = 0;
printf("enter a char: ");
scanf("%c",&ch);
//打印字符的十六进制的格式
printf("ch is : %hhx\n",ch);
for(int i = 7; i >=0; i--){
// 字符 按位与 上 num 后 将 第一个 二进制数取出来 然后向右移动7位 打印 第一个二进制数,循环 打印 第一个 第二 第三 第四 .....
printf("%d",(ch & num) >> i);
// 配合将 1向右移动 1位 取 第二个 二进制数
num >>= 1 ;
}
printf("\n");
return 0;
}
for(1,2,3){
4
}
[1,2] [4,3,2][4,3,2][4,3,2][4,3,2][4,3,2][4,3,2]
正常情况下 编号位 2的语句计算一个布尔值 由这个布尔值 决定下一次 是否要执行
break
continue
for(int n =0,int m = 10; n < m; n++,m--){
do
}
while(1){
2
}
[1] [2,1][2,1][2,1][2,1][2,1]
do{
2
}while(1);
[2] [2,1][2,1][2,1][2,1][2,1]
scanf("%*[^\n]");//清理输入缓冲区中第一个\n之前的所有字符
scanf("%*c"); //清理输入缓冲区中第一个字符,也就是上次遗留下的\n
scanf("*[^\n]")
scanf("%*c")
scanf 标准函数 在结束的时候会遗留一个数字 0 表示没有正确读到数据
把scanf 的函数条鱼语句当数字使用就可以表示他的遗留数字
从键盘读取到一个数字 并且不影响下次的读取
while( !scanf("%d",&num)){
scanf("*[^\n]")
scanf("%*c")
printf("try again")
}
scanf("*[^\n]")
scanf("%*c")
goto 也是一条流程控制语句
goto 可以任意指定下一条语句
不要使用goto