c中分支结构程序

简介: c中分支结构程序

if语句

if语句·其一

其实每天我们都通过自己的判断来决定自己的行动。例如:今天要下雨了,所以我带了伞。下面我们就通过程序来判断,如果输入的整数不能被5整除,就显示出相应的信息。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n%5==0)
  {
    puts("输入的整数可以被5整除。");
  }
  return 0;
}

if(表达式)语句

这样的语句称为if语句。

if语句会让程序执行如下处理

判断表达式的值,如果结果不为0,则执行相应的语句。

括号内对条件进行判断的表达式称为控制表达式。

而当输入的整数不能被5整除的时候,后续语句不会被执行,屏幕上不会显示任何的内容。

奇数的判定

通过判断输入的数能否被2整除,就可以确定输入的数是否是奇数。代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n%2!=0)
  {
    printf("%d是一个奇数", n);
  }
  return 0;
}

如果输入的是一个偶数那么程序不会显示任何的内容。

if语句·其2

在判断输入的数能否被5整除的时候,当输入的值不能被5整除的时候,不显示任何的内容。这样会让使用者不放心,所以代码可以改为下面的形式。

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n % 5 == 0)
  {
    puts("输入的整数可以被5整除。");
  }
  else
  {
    puts("输入的整数不能被5整除。");
  }
  return 0;
}

本程序中使用的是下列的形式:

if(表达式) 语句;else 语句;

else是”否则“的意思。

奇数·偶数判断

那么如何对一个输入的数是奇数还是偶数进行判断并输出呢,看下面的代码:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n % 2 != 0)
  {
    printf("%d是一个奇数", n);
  }
  else
  {
    printf("%d是一个偶数", n);
  }
  return 0;
}

总结:

如果只有当某条件成立的时候才进行处理,则使用不用加else的if语句;如果是根据某条件的成立与否进行不同的处理,则使用带有else的if语句。

非0判断

判断输入的值是否为0;

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n)
  {
    puts("该整数不是0。");
  }
  else
  {
    puts("该整数是0。");
  }
  return 0;
}

if语句根据控制表达式的值是否为0来控制程序的流程。

相等运算符

输入两个数判断是否相等。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  printf("请输入两个整数:");
  scanf("%d %d", &n,&m);
  if (n == m)
  {
    puts("它们相等。");
  }
  else
  {
    puts("它们不相等。");
  }
  return 0;
}

==运算符,会对左右两侧的操作数进行比较,如果相等着为1,不相等则为0。

余数的判断

判断输入的整数的个位数是否为5,并显示相应信息的程序。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if ((n % 10) == 5)
  {
    puts("该整数的个位数是5。");
  }
  else
  {
    puts("该整数的个位数不是5。");
  }
  return 0;
}

关系运算符

上面我们说到了两分支的程序流程,现在我们看以下三分支的情况。输入一个整数,判断该整数的符号。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n==0)
  {
    puts("该整数为0");
  }
  else if (n > 0)
  {
    puts("该整数为整数");
  }
  else
  {
    puts("该整数为负数");
  }
  return 0;
}

比较两个数大小的运算符称为关系运算符。如下所示:

大家需要注意的是,将<=运算符和>=运算符中的等号放在左侧(=<和=>),或者在<与=之间有空格都是不对的。

嵌套的if语句

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n>0)
  {
    if (n % 2 == 0)
    {
      puts("该数为偶数。");
    }
    else
    {
      puts("该数为奇数。");
    }
  }
  else
  {
    puts("该数不是正数。");
  }
  return 0;
}

判断

表达式(极少部分情况除外)都有值,程序执行的时会对表达式的值进行检测,这就是判断。

计算较大值

输入两个整数,显示出其中较大的值。代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  puts("请输入两个整数:");
  scanf("%d %d", &n, &m);
  if (n>m)
  {
    printf("%d是较大的数。",n);
  }
  else
  {
    printf("%d是较大的数。", m);
  }
  return 0;
}

程序中的printf函数被调用了两次。

下面是我改造的程序,把较大的值存入变量中,然后进行输出。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  int max = 0;
  puts("请输入两个整数:");
  scanf("%d %d", &n, &m);
  if (n>m)
  {
    max = n;
  }
  else
  {
    max = m;
  }
  printf("较大的数是%d", max);
  return 0;
}

计算三个数的最大值

这次我们输入三个整数,并显示其中的最大值。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  int k = 0;
  int max = 0;
  printf("请输入三个整数:");
  scanf("%d %d %d", &n, &m, &k);
  max = n;
  if (m > max)
  {
    max = m;
  }
  if(k>m)
  {
    max = k;
  }
  printf("较大的数是%d", max);
  return 0;
}

条件运算符

计算两个整数中的较大值。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  int max = 0;
  puts("请输入两个整数:");
  scanf("%d %d", &n, &m);
  max = (n > m) ? n : m;
  printf("较大的数是%d", max);
  return 0;
}

上述程序中使用了条件运算符,该运算符是需要三个操作数的三目操作符。

只有条件运算符属于三目运算符,其他的运算符都是单目或者双目运算符。

差值计算

使用条件运算符计算输入的两个整数差值,代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  puts("请输入两个整数。");
  scanf("%d %d", &n, &m);
  printf("较大的数是%d", (n > m) ? n - m : m - n);
  return 0;
}
  • 如果n>m,则判断表达式n-m所得到的值;
  • 否则为判断表达式m-n所得到的值。

也就是说最终的结果为大值减去小值。

复合语句

计算输入的两个整数中的较大值和较小值的程序代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int m = 0;
  int max = 0;
  int min = 0;
  printf("请输入两个整数:\n");
  scanf("%d %d", &n, &m);
  if (n > m)
  {
    max = n;
    min = m;
  }
  else
  {
    max = m;
    min = n;
  }
  printf("较大的数是%d", max);
  printf("较小的数是%d", min);
  return 0;
}

本程序中的if语句,当n大于m的时候,执行if里面的语句

{max=n; min=m;}

否则执行else里面的语句

{max=m; min=n;}

像上面的语句称为复合语句,也叫程序块。

逻辑运算符

显示输入的月份所处的季节,代码如下:

#include<stdio.h>
int main()
{
  int month = 0;
  printf("请输入月份:");
  scanf("%d", &month);
  if (month>=3&&month<=5)
  {
    printf("%d是春季。\n", month);
  }
  else if (month >= 6 && month <= 8)
  {
    printf("%d是夏季。\n", month);
  }
  else if (month >= 9 && month <= 11)
  {
    printf("%d是秋季。\n", month);
  }
  else if (month == 12 || month == 1||month==2)
  {
    printf("%d是冬季。\n", month);
  }
  else
  {
    printf("%d月不存在!!!\a\n", month);
  }
  return 0;
}

这里使用了&&运算符称为逻辑与运算符(就是两个条件都成立的情况下返回的值才不等于0)。

使用例||运算符称为逻辑或(就是只要有一个条件成立就返回的值不等于0)

switch语句

switch语句与break语句

显示输入的整数除以3所得到的余数。代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  if (n % 3 == 0)
  {
    puts("该整数能被3整除。");
  }
  else if (n % 3 == 1)
  {
    puts("该整数除以3的余数是1");
  }
  else
  {
    puts("该整数除以3的余数是2");
  }
  return 0;
}

本程序中使用了两次计算n除以3的余数的表达式n%3,多次输入同一个表达式,容易造成输入错误。

下面是使用switch语句处理后的代码:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  switch (n%3)
  {
  case 0:
    puts("该整数能被3整除。");
    break;
  case 1:
    puts("该整数除以3的余数是1");
    break;
  case 2:
    puts("该整数除以3的余数是2");
    break;
  }
  return 0;
}

如果n%3的值为1,则程序会转向"case 1:",如下图所示:

像”case 1:“这样用来表示程序跳转的标识称为标签。

标签的值必须为常量,不可以为变量。不允许多个标签出现同为一个值。

复杂的switch语句

#include<stdio.h>
int main()
{
  int s = 0;
  printf("整数:");
  scanf("%d", &s);
  switch (s)
  {
  case 1:
    puts("A");
    puts("B");
    break;
  case 2:
    puts("C");
  case 5:
    puts("D");
    break;
  case 6:
  case 7:
    puts("E");
    break;
  default:
    puts("F");
    break;
  }
  return 0;
}

当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到"default:"继续执行。

本程序的流程图;

如图所示,在没有break语句的时候,程序会落到下一条语句上。

switch语句和if语句

注意:

通过单一表达式来控制程序流程分支的时候,使用switch语句的效果通常要比使用if语句更好。

总结

相关文章
|
6月前
|
程序员 Python
16.C语言:用switch语句实现多分支选择结构
16.C语言:用switch语句实现多分支选择结构
68 0
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
66 5
|
6月前
|
C语言
计算机选择结构和条件判断
计算机选择结构和条件判断
63 1
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
5月前
|
C语言
C语言控制流程详解:分支与循环语句
C语言控制流程详解:分支与循环语句
38 0
|
6月前
|
Java
swtich分支结构需要注意哪些事情
swtich分支结构需要注意哪些事情
|
6月前
|
程序员 Python
17.c语言:用switch语句实现多分支选择结构
17.c语言:用switch语句实现多分支选择结构
142 0
|
C语言
C语言——分支语句 and 循环语句1
C语言——分支语句 and 循环语句
|
C语言
C语言——分支语句 and 循环语句2
C语言——分支语句 and 循环语句