2021-10-06

级联的If else
在出现多个分句如
if () {
} else {
      if () {
      } else { 
           if ()  {
           }else……

多个级联if else的情况下
可以将else后边if前面的花括号去掉
达成
if () {
} else if () {
} else if () {
……
的效果
优点:简洁,避免代码整体向右过分偏移的情况造成阅读不便

优先单一出口原则:比起在每一个if后边都赋予一个printf出口,更偏向于选择
在if else循环后提供单一printf出口,不把程序写死。

注:每一个else都属于离自己最近的那个if,程序是描述动作的

多路分支
swich-case:
switch ( 控制变量式 ) {
case 常量 :
     语句
     ……
case 常量 :
     语句
     ……
default :
     语句
     ……
}
1.控制表达式只能是整数型的结果
2.常量可以是常数,也可以是常数计算的表达式(C99ONLY)

break:在执行完分支中的最后一条语句后,如果后面没有break,
就会顺序执行到下面的case里去,直到遇到一个break或者switch
结束为止。

eg:成绩判断

#include <iostream>

using namespace std;

int main()
{
    printf("请输入你的分数");
    int grade;
    scanf("%d", &grade);
    grade /= 10;//先输入,再定义,确保grade是有值的
    char letter;//定义字符
    switch ( grade ) {
    case 10://100也属于A的范畴,没有break所以程序会继续往下走到letter='A'
    case 9:
        letter = 'A';//字符要用单引号括起来
        break;
    case 8:
        letter = 'B';
        break;
    case 7:
        letter = 'C';
        break;
    case 6:
        letter = 'D';
        break;
    default:
        letter = 'F';
}
    printf("你的成绩是%c\n", letter);//单一出口原则

    return 0;
}
 

循环
#include<stdio.h>
int main()
{
    int x;
    int n = 0;
    printf("请输入你的数字\n");    
    scanf("%d", &x);
    
    n++;
    x /= 10; 
    
    while ( x > 0 ){
        n++;
        x /= 10;
    }    
    
    printf("这个数字是%d位数\n", n);
    
    return 0;
 } 

if和while的区别:
if:只做一次判断
while:反复多次判断,循环体内要有改变条件的机会,否则是一个死循环
有些语句在语法上是没有错误的,而逻辑上是不对的。所以程序对不对
不是单纯有编译决定的。
一直没有输出的错误——超时

一个while循环执行之前需要判断是否继续循环,所以有可能循环一次也
没有被执行
条件成立是循环继续的条件

要学会在纸面上进行程序分析
验证:
测试程序常使用边界数据,如有效范围两端的数据、特殊的倍数等
如:个位数、10、0,负数……

判断位数的其他两种程序:

    while ( x > 0 ){
        x > 0;
        n++ 
    }    
    
    printf("这个数字是%d位数\n", n);
    
    return 0;

既while语句前没有n++,x>0的语句
虽然运行结果相同,但是当输入0时,无法判定其为1位数


    if ( x > 0) {
        while ( x > 0 ){
        n ++;
        x /= 10; 
        }  
    } else {
        n = 1;
    } 
    
    printf("这个数字是%d位数\n", n);
先判断x是否大于0,如果等于0,直接进入else语句输出n=1,也能够判定0为1位数

在调试一些程序的时候,可以在程序间插入printf来方便查看程序进行到了
哪里

do-while循环:
在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来
检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环。
区别:是否在循环体执行结束的时候才来判断条件
    do {
        n++;
        x /= 10;
    }
        while ( x > 0 );
        
    printf("这个数字是%d位数\n", n);
    
    return 0;
在这个语句中,如果输入的是0,那么无论x是否大于0,都先进入do语句中先进行n+1,
都能够得出0为1位数的结果

如果要模拟运行一个很大次数的循环,可以模拟较少的循环次数,然后作出判断
有多少个输出,while循环就走了多少轮

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值