语句、分支与循环详解

简介: 语句、分支与循环详解

一、C语句概述

  • 一个C语言程序中由若干个函数组成,每个函数的函数体是由声明部分和执行部分组成。
int main(void)//函数的头部
  { 
    int i = 0;//声明部分,不是语句
    if(){}//语句
    printf();//语句
  }
  • 一个程序是由若干个源文件程序组成,一个源文件程序是由头文件、预处理、全局变量和若干个函数组成,一个函数由若干个语句和若干个声明部分组成。
    图片:
  • C语句可以大致分为五类:分支与循环语句、库函数调用语句、表达式语句、复合语句、空语句。

1.1 分支与循环语句

  • 分支与循环语句也称为控制语句,用于完成一定的控制功能。

分支与循环语句大致分为九种:if-else语句、switch语句、break语句、continue语句、goto语句、while语句、do-while语句、for语句、return语句。

1.2 函数调用语句

  • 函数调用语句由函数名、实际参数和分号组成。

一般形式为:函数名();

printf();
  strlen();
  scanf();
  time();
  rand();

1.3 表达式语句

  • 表达式语句一般由表达式组成。

一般形式为:表达式;

x = i + j;

1.4 复合语句

  • 复合语句是由大括号将多个语句包括起来。

一般形式为:

{

语句1;

语句2;

}

{
    x = y + z;
    printf("%d\n",x);
  }

1.5 空语句

  • 只有分号“;”的语句为空语句

一般形式为:;

  • 空语句为什么不执行的语句。

二、程序的基本结构

  • 程序一般分为三种基本结构:顺序结构、选择结构、循环结构。

2.1 顺序结构

  • 顺序结构是按照先后顺序逐步完成程序任务。

2.2 选择结构

  • 选择结构是进行判断和分支。

2.3 循环结构

  • 循环结构,同时也是重复结构,在一定条件下反复执行某一部分的程序。

三、结构中的常见操作符

3.1 关系运算符

  • 关系运算符是主要用于比较,关系运算符所在的关系表达式为关系表达式。

关系运算符:

1.< 小于运算符

2.> 大于运算符

3.<= 小于等于运算符

4.>= 大于等于运算符

5.== 相等运算符

6.!= 不相等运算符

  • 关系表达式中,一般返回0或1表示真假。在C语言中0表示假,非0表示假。

3.2 条件运算符(三目运算符)

  • 条件运算符,也称三目运算符或者三元运算符。
  • 条件运算符在执行时,如果exp1为真,执行exp2,如果exp1为假,执行exp3。

一般形式为:exp1?exp2:exp3

  • 条件运算符可以作为if- else语句的一种便捷方式。

3.3 逻辑运算符

  • 逻辑运算符提供了更加复杂的逻辑判断功能。

逻辑非运算符:!

逻辑与运算符:&&

逻辑或运算符:||

  • 逻辑非运算符用于改变单个表达式的真假。
  • 逻辑与表达式用于并且(并集),逻辑与表达式的左右俩侧都为真,则为真,有一个或着一个以上假则为假。
  • 逻辑或表达式用于或者(交集),逻辑或表达式的左右俩侧都为假,则为假,有一个或者一个以上真则为真。

逻辑运算符与与其他运算符的先后顺序为:逻辑非运算符 > 算数运算符 > 关系运算符 > 逻辑与运算符 > 逻辑或运算符 > 赋值运算符

四、if-else语句

4.1 单分支if语句

格式:

if(运算符)

{

语句;

}

  • 单分支if语句在if运算符判断结束后,如果为真,进入if语句;如果为假,跳过语句。
int i = 0;
  scanf("%d",&i);
  if(i>10)//5真15假
  {
    i = 50;
  }

4.2 双分支if-else语句

格式:

if(运算符)

{

语句;

}

esle

{

语句;

}

  • 双分支if-else语句在if运算符判断结束后,如果为真,进入if语句;如果为假,进入else语句
//判断俩个数的最小值
  int a = 3;
  int b = 18;
  int min = 0;
  if (a > b)
    min = b;
  else
    min = a

4.3 多分支if-else-if语句

格式:

if(运算符1)

{

语句;

}

else if(运算符2)

{

语句;

}

else

{

语句;

}

//写代码将三个整数数按从大到小输出。
#include<stdio.h>
int main(void)
{
  int a = 0;
  int b = 0;
  int c = 0;
  scanf("%d %d %d", &a, &b, &c);
  if (a > b)
  {
    if (b > c)
      printf("%d %d %d", a, b, c);
    else if(c>a)
      printf("%d %d %d", c,a, b);
    else
      printf("%d %d %d", a,c, b); 
  }
  else //b>a
  {
    if (a > c)
      printf("%d %d %d", b, a, c);
    else if (c>b)
      printf("%d %d %d", c, b, a);
    else
      printf("%d %d %d",b,c,a);
  }
  return 0;
}
  • 多分支if-else-if语句在if运算符1判断结束后,如果为真,进入if语句;如果为假,执行if运算符2,在if运算符2判断结束后,如果为真,进入else-if语句,如果为假,进入else语句。

五、switch语句

  • switch语句也是分支语句的一种,不同于if-else的判断,switch执行的是选择。

一般形式为:

switch(表达式)

{

case 常量表达式1:

语句1;

case 常量表达式1:

语句2;

default:

语句n;

}

  • 表达式一般为整形常量表达式,case后面的常量表达式应该与switch对应。
  • 在执行case选择时,如果case都没有满足条件,编译器会执行default语句。default和case的顺序可以更换。
  • 在执行switch语句时,一般会搭配break使用,后文会提到。
#include<stdio.h>
int main(void)
{
  int imput = 0;
  ptintf("*********  1.进入  *********\n");
  ptintf("*********  0.退出  *********\n");
  scanf("%d",&imput):
  switch(imput)
  {
    case 1:
    printf("进入\n");
    break;
    case 0
    printf("退出\n");
    break;
    default:
    printf("输入错误\n");
    break;
  }
  return 0;
}

六、循环辅助break和continue

  • break语句和continue语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。

6.1 break语句

  • break语句仅在switch语句和循环语句中使用。执行break语句会之间跳出循环,执行循环下一个语句。

一般形式为:

break;

6.2 continue语句

  • continue在执行时会逃过本次循环下面的语句,执行下一次循环。

一般形式为:

continue;

七、goto语句

  • goto语句是一种传送语句,一般不建议使用,而且是谨慎使用。

一般形式为:

goto part;

part:

if()
  {,,,
    if()
    {...
      if()
      {
      ...
      goto palce;
      }
    }
  }
place:

八、while循环语句

  • while循环语句是一种先判断再执行的语句,属于“当型”循环结构。

一般形式为:

while(表达式)

{

语句;

}

#include<stdio.h>
//打印1-10的数字
int main(void)
{
  int i = 1;
  while(i<=10)
  {
    printf("%d\n",i):
    i++;
  }
  return 0;
}

九、do-while循环语句

  • do-while循环语句是一种先循环后执行的语句,属于是“直到型”循环结构。

一般形式为:

do

{

语句;

}while(表达式);

#include<stdio.h>
//打印1-10的数字
int main(void)
{
  int i = 1;
  do
  {
    printf("%d\n",i);
    i++;
  }while(i<10);
  return 0;
}

十、for循环语句

  • for循环在C语言中是经常被使用的一个语句。

一般形式为:

for(表达式1;表达式2;表达式3)

{

语句;

}

  • 表达式1是初始化部分,用于初始化循环变量;表达式2是条件判断语句,用于判断循环的结束;表达式3是调整语句,用于循环的调整。
    -
//1到 100 的所有整数中出现多少个数字9
#include<stdio.h>
int main(void)
{
  int i = 0;
  int cet = 0;
  for (i = 1; i <= 100; i++)
  {
    if (i/10 == 9)
      cet++;
    if (i % 10 == 9)
      cet++;
  }
  printf("%d", cet);
  return 0;
}


相关文章
|
3月前
|
C语言
分支与循环讲解
分支与循环讲解
|
5月前
|
程序员 编译器 C语言
分支和循环(一)
分支和循环(一)
|
5月前
|
C语言
分支和循环(二)
分支和循环(二)
|
6月前
|
C语言
分支和循环(2)
分支和循环(2)
54 3
|
6月前
|
C语言
分支和循环(1)
分支和循环(1)
36 0
|
编译器 C语言
分支与循环(1)
分支与循环(1)
分支与循环(1)
|
编译器 C语言 C++
分支语句和循环语句上
分支语句和循环语句
58 0
分支语句和循环语句上
|
11月前
|
C语言
分支语句和循环语句(1)
分支语句和循环语句(1)
51 0
|
11月前
|
数据安全/隐私保护 C语言
分支语句与循环语句(2)
分支语句与循环语句(2)
57 0
|
缓存 Go 数据安全/隐私保护
分支语句和循环语句下
分支语句和循环语句
74 0