第三章 流程控制
正式开始对流程控制语句的学习
不是你的能力,决定了你的命运,而是你的决定,改变了你的命运。
想,都是问题,做,才是答案。站着不动,永远是观众,想到做到,才是王道
控制类语句


帮助理解

1.if()...else... 条件语句,++层层递进的++
c
if(条件){
表达式01
}else{
表达式02
};


关系运算符

++如何交换两个数的值?++

++不交换土办法++

逻辑运算符

if...else嵌套
c
include <stdio.h>
int main(){
if(){
}else if(){
}else if(){
}
return 0;
}
如果有三个数,如何让它从小到大排序,要用到冒泡排序法,之后学习
c
#include <stdio.h>
int main(){
int a,b,c;
printf("请依次输入三个数\n");
scanf("%d%d%d",a,b,c);
//分析出会出现三种情况,a最大,,b最大,,c最大
if(a>b&&a>c){
}
return 0;
}
2.switch( ) case... 并列,多分支语句
可以是字符,也可以是数字,,,直接看代码学习怎么用

c
switch(输入的条件){
case 1:
表达式01;
break; //必须要加上这个语句才能结束
case 2:
表达式02;
break;
case 3;
表达式03;
break;
default:
条件都不符合;//在不满足上述所有情况时使用
}



2.1练习题

c
#include<stdio.h>
int main(){
int x,y;
printf("请输入x的值为多少");
scanf("%d",&x);
switch(x){
case 0:
y=x;
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
y=2*x-1;
break;
default:
3*x-11;
break;
}
printf("你输入的数y=%d,x=%d",y,x);
return 0;
}
运行结果,,基本上算是成功了吧,,,无法控制是负数的情况,还有小数,比较坑,,这个故事告诉我们,要选择正确的语句,,如果if...else会简单很多,,不要勉强自己
3.while循环控制语句

c
while(条件){ //注意条件只识别,0和1,如果一直是一个正数,这就是一个死循环,要杜绝这种情况,会把单片机内存无限占用
//Ctrl+c可以强行终止
表达式;
}
/******举个例子,,输入十次我爱你*****/
#include <stdio.h>
int main(){
int a=0;
while(a<10){
a=a+1; //每循环一次,a都会加上一个1
//还有一种写法,比较简介
a++;
}
return 0;
}
3.1练习题

c
/*错误案例*/
#include<stdio.h>
int main(){
int a=0;
int b=0;
while(a<=100){
a=a+1;
b=b+a;
printf("b的值为%d",b);
}
printf("最终值为%d",b);
return 0;
}

发现错误了嘛??先写条件的话,会多算一个101,,,以后要注意了
4.do...while
先做一次循环再判断,

c
do{
}while();
5.for(){ }
c
#include<stdio.h>
int main()//三个表达式
{
int sum;
int data=1;//表达式1,,条件的初始值
while(data<=100){ //表达式2,,条件的临界值
sum=sum+data;
data++; //表达式3,,条件的改变
}
printf("%d\n",sum);
return 0;
}




++语句全省略的话就是一个死循环++
6.break,,,在还没有达到临界值的情况下,提前结束循环


==介绍一个重要概念,,==取余
% //取余

break结束整个循环,,,,contine仅仅结束本次循环
7.用contine提前结束本次循环

c
#include<stdio.h>
int main(){
for(int a=100;a<=200;a++){ //注意要用分号,,因为每个表达式换成单个
/*首先要明确一点,能被3整除,则余数就是0*/
if(a%3 ==0){
continue;
}
printf("%d",a);
}
return 0;
}
++运行结果++

循环嵌套
c
#include <stdio.h>
int main(){
int i,j;
int data =1;
for(i=1;i<=5;i++){
for(j=1;j<=3;j++){
printf("i=%d , j=%d\n",i,j); //为了打印出行列,,研究行列的关系
printf("data=%d",data++); //为了研究一共有几个数
}
}
}
运行结果
数的个数等于,行列相乘,,

嵌套练习题

c
#include<stdio.h>
int main(){
int i,j;
for(i=1;i<=4;i++){
for(j=1;j<=5;j++){
printf("%d ",i*j);
}
printf("\n");
}
return 0;
}
运行结果
