判断与循环_C语言快速入门与计算机二级备考

判断

if-else语句

  • 判断所用的函数是if,相当于人类的“如果”

    当条件不成立时要求做某事,就要用else,相当于人类的“否则”

    if( a>b ){
       printf("%d",a);
    } else {
       printf("%d",b);
    }
    //括号内是判断的条件
    //if后的大括号内是条件成立后执行的操作,if后没有分号,因为这一句到下面的操作才结束
    //如果条件不成立,将跳过这些操作,(当有else时)执行else大括号内操作
    //这串代码的意思是:如果a>b,就输出a的值,否则输出b的值
    
    if( a>0 )
        printf("a是一个非负数");
    //也可以不用大括号,直接使得跟着的语句成为判断成立后的操作
    //注意,这时的分号位置与缩进 
    

嵌套的if-else

  • if-else语句判断后所执行的语句可以是另一个if-else语句

  • 就近:在没有大括号影响的情况下,else总是与最近的if匹配,缩进不影响else的匹配

    if(code==ready){
       if(count<20printf("一切正常");
    }  else
          printf("继续等待");
    //当count>20时,并不会输出“继续等待”
    //因为大括号使得继续等待的else语句与最上面的if匹配
    
  • 为了避免错误与方便阅读,建议每个ifelse都用大括号

级联的if-else

  • 当嵌套的else语句中与if相连,可以使用级连的形式

    int a
    if (x<0){
      a=-1;
    } else if (x==0)//else语句后嵌套了一个if时,这样写更简洁
      a=0;
    } else {
      a=2*x;
    }
    

switch-case多路分支

  • switch-case语句可以做到直接跳到想要的选项,而不必一个一个检索判断

    switch-case是一种基于计算的跳转,计算控制表达式的值后程序会跳转到对应的case(分支路标)

    在执行完分支中的最后一条语句后,如果没有break就会按顺序执行到下面的case

    int type;
    const NIGHT=2;
    scanf("%d",type);
    switch (type)
    //这里的控制量表达式必须是整数,
    //可以是常数,常数计算的表达式,定义为整数的常量,单字符
    {
    case 1printf("早上好");
        break;
    case NIGHT:
        printf("晚上好");
        break;
    default:
        printf("不清楚您输入的指令");
        break;
    }
    //这串代码在输入1时会输出早上好,输入2时输出晚上好,输入其它时输出不清楚您输入的指令
    

循环

while循环

  • 循环所用的语句是while,使在符合条件时循环执行循环体内语句(相当于接入循环体if

    int x;
    int n = 0;
    scanf("%d", &x);
    n++;
    x /= 10;//此处可用do-while
    while (x > 0)//这行代码的意思是:当x>0时执行大括号内语句直到不再符合x>0
    {
    	n++;
    	x /= 10;
    }//符合条件后进入的语句叫做循环体
    printf("%d\n", n);
    
  • 循环体内要有改变条件的机会,否则将永远循环

do-while循环

  • 有时在进入循环前我们需要先执行一边循环体内语句,这时就需要do-while

    do
    {
    	n++;
    	x /= 10;
    }while(x >0);
    //这时,程序会先执行,在执行完一次后再进行判断
    

for循环

  • for循环类似于设定一个计数器:

    1. 先初始化,在计数器到达某值之前重复执行循环体

    2. 每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1

  • for的格式为:for(<初始化>;<进入循环的条件>;<循环一轮后的调整>)

    for (int i=0;i<5;i++)//控制变量在循环外无意义,可以在for内定义(仅C99)
    {
    	printf("%d",i);
    }
    //这个for循环的意思是:i最初是0,每当i小于5时,执行一遍循环体并且让i加1
    //for与while等价,上面的代码也可以写为:
    int i=0;
    while(i<5)
    {
    	printf("%d",i);
    	i++;
    }
    //for循环中的每一个表达式都可以省略,但分号要留下
    for(;i<5;) == while(i<5)
    

循环的选择

  • for:有固定的循环次数
  • do-while:循环必须执行一次
  • while:其它情况
  • 除了do-while循环,切记不要在表示条件的括号外加分号(if-else同理)

嵌套的循环

  • 循环内也可有循环,不论循环的种类
  • 注意嵌套的循环的控制变量应该是不同的

循环的控制

停止循环
  • break语句(此前在switch-case中出现,用以停止顺序执行)可用于跳过循环

    for (i=2;i<x;i++)
    {
    if (x%i==0)
    	break;
    }//这行代码的意思是用一个从2开始递增的数i去除x,直到x能被i整除时不再循环
    
  • continue语句 可用于跳过本轮循环剩下的语句进入下一轮

    for (i=2;i<x;i++)
    {
    if (x%i==0)
    	continue;
    printf("%d",i);
    }//这行代码与上面的不同是,当x能被i整除时,就不会输出当前的i值
    
嵌套循环的控制
  • breakcontinue只对它所在的循环起效

    使用接力break能够解决嵌套循环的控制问题

    int exit = 0;
    for(……)
    {
    	for(……)
    		{
    			if(……)
    				exit = 1;
    			break;
    		}
    	if(exit) break;//相当于exit==1
    }//原理是:当符合if的条件时,使得exit=1,从而使得外一层的循环符合条件可以break
    
  • goto语句也可以解决这一问题

    int exit = 0;
    for(……)
    {
    	for(……)
    		{
    			if(……)
    				exit = 1;
    			goto out;//当条件满足,将会跳到out处
    		}
    }
    out://不要忘带冒号
    

posted on   无术师  阅读(3)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库

统计

点击右上角即可分享
微信分享提示