写点什么

C 语言 - 语句 (if,for,while,switch,goto,return,break,continue)

作者:DS小龙哥
  • 2022 年 1 月 11 日
  • 本文字数:4040 字

    阅读完需:约 13 分钟

一、前言

这篇文章作为 C 语言基础知识点,介绍 C 语言常用的几个语句的用法、规则、使用案例。


介绍的语句如下:


if..else 判断语句for循环语句while循环语句do..while循环语句switch 语句goto 语句return 语句break 语句continue 语句
复制代码


第二章介绍语法使用规则、使用案例,第三章列出了一些练习题,用于结合第二章介绍的语句完成知识点巩固。

二、知识点与案例代码

2.1 if 语句语法规则、使用案例

if 语句语法:


//形式1if(<条件表达式>)  //条件为真的时候执行{  ...执行的代码..}
//形式2if(<条件表达式>) //条件为真的时候执行{ ...执行的代码..}else //条件为假的时候执行 (else的语句块可以选择的,可以写也可以不写){ }
//形式3if(<条件表达式>) //条件为真的时候执行{ ...执行的代码..}else if(<条件表达式>) //条件为假的时候执行 (else的语句块可以选择的,可以写也可以不写){ ...执行的代码..}else if(<条件表达式>){ ...执行的代码..}........
<条件表达式> 里可以写什么代码? 写的语句执行完必须返回具体的结果。比如:12>34比如: if(printf("12345"))
复制代码


使用案例


#include <stdio.h>int main(int argc,char *argv[]){       int a=100;    int b=20;    int c=30;    if(a>b)    {        printf("a>b\n");    }
if(a>b)printf("a>b\n");
//容易出错的地方 if(a==0) //if(a=0) { printf("a>b a>c\n"); }
//容易出错的地方 if(a&&b)//if(a&0) { printf("a>b a>c\n"); } return 0;}
/*逗号、分号逗号:间隔符号。 比如: int a,b,c,d;
! 逻辑非&& 逻辑与 -- 并且|| 逻辑或 --或者
& 按位与(3&1)、取地址(&a)* 乘号(a*b) 、指针(*a)、 *(块注释)*/

#include <stdio.h>int main(int argc,char *argv[]){ int year; printf("输入年份:"); scanf("%d",&year);
//判断平年和闰年 条件:能被4整除并且不能被100整除 条件2:能被400整除 if((year%4==0 && year%100!=0) || (year%400==0)) { printf("闰年\n"); } else { printf("平年\n"); }
//判断平年和闰年 条件:能被4整除并且不能被100整除 条件2:能被400整除 if(year%4==0 && year%100!=0) { printf("闰年\n"); } else if(year%400==0) { printf("闰年\n"); } else { printf("平年\n"); } return 0;}
复制代码

2.2 while、do..while 语句

    //循环语句    while(<条件表达式>)    {        ...执行的代码..    }
do { ...执行的代码..}while(<条件表达式>);
#include <stdio.h>int main(int argc,char *argv[]){ int a=5; int b=5; //循环语句 a-- 、a=a-1、a-=1; while(a--) { printf("a=%d\n",a);//4\3\2\1\0 }
//循环语句 do { printf("a=%d\n",b);//\5\4\3\2\1\0 }while(b--); return 0;}
复制代码

2.3 for 语句

#include <stdio.h>int main(int argc,char *argv[]){       int a=0;    //写法1    for(<初始化语句>;<条件表达式>;<自增/自减>)    {
} 比如: for(a=0;a<10;a++) {
}
//写法2 for(;<条件表达式>;<自增/自减>) {
} 比如: for(;a<10;a++) {
} //写法3 for(;;) //条件永远为真 {
} 等价于 while(1)//条件永远为真 {
} return 0;}
#include <stdio.h>int main(int argc,char *argv[]){ //打印99乘法口诀表 int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%dx%d=%2d ",i,j,i*j); } printf("\n"); } return 0;}/*1x1=12x1=1 2x2=4....3x1=1 3x2=6 3x3=9 .....................*/
复制代码

2.4 break 语句

作用: 跳出当前的一层循环,或者跳出 switch 语句。


#include <stdio.h>int main(int argc,char *argv[]){       int i,j,cnt=1;    for(i=0;i<5;i++)    {        for(j=0;j<10;j++)        {            if(j==5)            {                break;  //跳出当前一层循环            }            printf("cnt=%d\n",cnt++);  //25         }    }    return 0;}
复制代码

2.5 goto 跳转语句

可以在函数内设置标签,任意跳转。


#include <stdio.h>int main(int argc,char *argv[]){       int i,j,cnt=1;    for(i=0;i<5;i++)    {        for(j=0;j<10;j++)        {            if(j==5)            {                goto AA;  //跳转语句            }            printf("cnt=%d\n",cnt++);  //5        }    }AA:    printf("程序执行完毕.\n");    return 0;}
复制代码

2.6 continue 语句

跳出本次循环,继续执行下一次新的循环。


#include <stdio.h>int main(int argc,char *argv[]){       int i,j,cnt=1;    for(i=0;i<5;i++)    {        for(j=0;j<10;j++)        {            if(j==5)            {               continue; //跳出当前一次循环            }            printf("cnt=%d\n",cnt++); //        }    }    return 0;}
复制代码

2.7 switch 分支语句(C89 标准和 C99 标准)

#include <stdio.h>int main(int argc,char *argv[]){       int a;    scanf("%d",&a);    switch(a)    {    case 1:        printf("选择1.\n");        break;    case 2:        printf("选择2.\n");        break;    case 3:        printf("选择3.\n");        break;    case 4:    case 5:    case 6:        printf("选择4,5,6\n");        break;    default:        printf("选择默认值.\n");        break;    }    return 0;}
复制代码

三、练习题

3.1 输入整数,然后使用二进制方式输出(数据传输)

0x23; ---8次  00100011#include<stdio.h>int main(){    unsigned int a,i;    int flag=0;    printf("输入整数:");    scanf("%d",&a);    for(i=0;i<32;i++)    {        //if(a&0x1) //从低位开始判断        //if(a&0x80000000)  //从高位开始判断        if(a&(1<<31)) //从高位开始判断        {            flag=1;            printf("%d",1);        }        else        {            if(flag)            {                printf("%d",0);            }        }        a<<=1; //把a的左边移动 (高位溢出、低位补0)    }    printf("\n");    return 0;}
复制代码

3.2 打印所有水仙花数。

所谓水仙花是指一个三位数,其各位数字的立方和等于该数


#include <stdio.h>int main(){    int i;    int a, b, c;    for (i = 100; i <= 999; i++)    {        a = i / 100;        b = i % 100 / 10;        c = i % 10 / 1;        if ((a*a*a + b*b*b + c*c*c) == i)        {            printf("%d ", i);        }    }    return 0;}
复制代码

3.3 百元买百鸡

公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只一元,问一百元买一百只鸡有几种买法。


#include<stdio.h>int main(){    int m, g, x;    int m_max;    int g_max;    int x_max;    int q, cnt; //cnt=数量 q:钱    printf("公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只一元\n");    printf("请输入要买鸡的数量:\n");    scanf("%d", &cnt);// 100 100    printf("请输入要买鸡的钱:\n");    scanf("%d", &q);// 100 100    /*1. 判断输入的数据是否合理*/    if (q>0 && cnt>0)    {        m_max = cnt / 3; // 母鸡 100 /3 =33        g_max = cnt / 5; // 公鸡 100 /5 =20        x_max = (cnt / 1) * 3; // 小鸡 100 /1*3 =300        for (g = 0; g<g_max; g++) // 循环判断可能        {            for (m = 0; m<m_max; m++)            {                x = cnt - g - m; //总数量-公鸡数量-母鸡数量 =小鸡的数量                if (x + g + m == cnt && x / 3 + g * 5 + m * 3 == q)                //买鸡的总数等于总鸡数和总钱数等于买鸡的钱数就输出                {                    printf("公鸡=%d\t", g);                    printf("母鸡=%d\t", m);                    printf("小鸡=%d\t\n", x);                }            }        }    }    else    printf("输入有误\n");    return 0;}
复制代码

3.4 打印正三角形

#include<stdio.h>/*  1 121 123211234321*/int main(){    int i, j;    int len;    scanf("%d", &len);    for (i = 1; i <= len; i++) //总行数    {        /*1. 打印空格*/        for (j = 1; j <= len - i; j++)        {            printf(" ");        }        /*2. 打印前面一半*/        for (j = 1; j <= i; j++)        {            printf("%d", j);        }        /*3. 打印后面一半*/        for (j = i - 1; j >= 1; j--)        {         printf("%d", j);        }        printf("\n");    }    return 0;}
复制代码

3.5 打印倒三角形

#include<stdio.h>int main(){    int i, j;    int len;    scanf("%d", &len);    for (i = len; i >= 1; i--) //循环的总次数    {        /*1. 打印空格*/        for (j = len; j>i; j--)        {            printf(" ");        }        /*2. 打印前面部分*/        for (j = 1; j <= i; j++)        {         printf("%d", j);        }        /*3. 打印后半部分*/        for (j = i - 1; j >= 1; j--)        {            printf("%d", j);        }        printf("\n");    }    return 0;}
复制代码


发布于: 刚刚阅读数: 2
用户头像

DS小龙哥

关注

之所以觉得累,是因为说的比做的多。 2022.01.06 加入

熟悉C/C++、51单片机、STM32、Linux应用开发、Linux驱动开发、音视频开发、QT开发. 目前已经完成的项目涉及音视频、物联网、智能家居、工业控制领域

评论

发布
暂无评论
C语言-语句(if,for,while,switch,goto,return,break,continue)