c语言语法(31-37) 10.4-10.5

一.级联的if-else(一般用于分段函数)

1.形式:if elseif... else

2.代码示例:若想输出分段函数的值,需要用到级联的if else

 推荐写左边的代码,因为灵活(单一出口:只有一个printf),右边的写死了(多个printf)

二.多路分支switch-case

1.定义式:一般适用于多个值的等于输出

注意控制表达式必须是int类型且必须在之前有所定义(egint 控制表达式;scanf("%d",&控制表达式;,常量可以是常数也可以是常数表达式(eg.case 1:也可以写成case 1+1:)

补:default表示输入的都不在case中则从default输出

2.代码示例:

正确的:若type=1输出早上好,type=2输出晚上好,.......

错误的:switch(type)后面不能加分号

3.break(switch-case的深度理解)

case的存在相当于一个起始点(若控制表达式为1就从case1依次往下执行,为2就从case2依次往下执行) 直到遇到break就跳出,无break就继续执行

注意:正常情况下要为每一个case配一个break,当然在有些时候可以利用break将某些相同的组合一起

代码示例:

结果:

思路:可以通过\10得前一位或两位数来判断是啥等级,比如100/10=10,90/10=9....

(然后A等级是90-100,所以包括数字10和9,然后就可以把相同的输出对应case放一起然后再加break,不用分别加break),其他的正常加break即可

4.分段函数能否用switch-case?

一般不可以,因为分段函数是连续的函数,而switch-case 是具体的值

三.循环

1.用级联的else if 来写代码(有一定局限性):

结果:(思路:用范围来判断是几位数,eg>999是四位数,>99是三位数....)

注:>只能从大到小(即先999再99再9),<只能从小到大(9再99再999)

局限性:若输入五位数,六位数,任意范围数...则要一直增加9999,99999....

要初始化 x,n 输入的x可以不用初始化

错误写法:将else去掉(若输入72,则判断出为1)

即eg当输入72 小于99,则判断大于9后又会继续判断大于0,最终输出1

即写代码写的是步骤而不是关系

2.为了解决这个局限性用while来写代码

结果:

注意:打印的是n 不是x  

x /=10;
    n++;可以交换顺序

解释:while部分:当x大于0时则会一直循环执行while里面的,直到x小于0才会跳出循环。与if不同,if是一次性的

四.while循环后续

1.循环体:指的是while大括号里面的

2.续上代码:(此代码可以判断出0的个数为1)

若将while上方的x /=10; n++;删除变为:(此代码不能判断0的个数为1)

3.除了dbug调试的两种方法

·可以通过人脑模拟电脑来判断(即自己推)

·可以通过在对应位置加上printf来调试
eg,假如printf后即可输出其每一步循环对应的x,n值

注意:在调试完后记得注释掉

五.do-while循环

1.定义:

注意:while 后面要加;

2.while与do while的区别:

while是先判断是否满足·条件再进入循环,do while是先循环后判断是否满足条件 

左边的是do while ,右边的是while

3.do while代码示例:位数

注意:此代码不加scanf后面的 x /=10; n++;也能输出0的个数为1(因为是先循环后判断)

此scanf不放dowhile里面是因为不用重复

然而若加上则0变为2错误

六.猜数游戏

1.题目:

 2.思路:

.计算机随机想一个数,记在变量number里;
.一个负责计次数的变量count初始化为0;
.让用户输入一个数字a;
.
    count递增(加一);
.
    判断a和number的大小关系,如果a大,就输出
    “大”;如果a小就输出“小”;
.如果a和number是不相等的(无论大还是小),程
    序转回到第3步;
.否则,程序输出“猜中"和次数,然后结束。
3.代码:

 注意:number,a不需要初始化=0,只需要存储即可,count必须初始化=0。然后while后面的条件是其成立时的条件

猜数游戏用do while更好而不是while(因为如果条件为假0,while就会一次也不执行,而do while至少执行一次,而猜数游戏是不管真假)

补充:此蓝色部分不能放dowhile的上方的原因:因为要重复输入此语句,所以要放里面

补充的总结:(针对此题)

七.算平均数

 1.题目:

 2.思路:

 3.代码:

 注意if有一个以上的语句时要加大括号,然后初始化时要分开初始化,不能写一起。同时要做两次判断number!=-1

 法二:用while写

此时要输入两个scanf,第一个在循环外部只执行一次,第二个在循环里面(再加一个是为了防止死循环)

八.任意整数求逆

代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值