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语句更好。

总结

相关文章
|
10月前
|
JavaScript 前端开发
教你用vue2实现一个tabbar(2024年11月教程)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。自学前端2年半,正向全栈进发。博客分享技术心得,助你成长。关注我,获取更多优质内容,你的支持是我前进的动力!🎉🎉🎉
127 0
教你用vue2实现一个tabbar(2024年11月教程)
|
网络协议 测试技术 Apache
测试Netty高并发工具
测试Netty高并发工具
324 3
|
存储 API Go
使用动态模型创建web应用
【9月更文挑战第5天】动态模型描述系统中对象间的交互和状态变化,重点关注事件驱动的行为。时序图清晰展示了请求处理流程,状态图则描绘了系统状态的转换过程。
176 10
|
Java 关系型数据库 MySQL
基于springboot心理树洞管理系统(分前后台springboot+mybatis+mysql+maven+vue+echarts)
基于springboot心理树洞管理系统(分前后台springboot+mybatis+mysql+maven+vue+echarts)
182 0
|
9月前
|
安全
【HarmonyOS学习】应用文件访问
访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。 优点: * 隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。 * 安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。
233 5
【HarmonyOS学习】应用文件访问
|
11月前
|
JavaScript 数据可视化
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
这篇文章详细介绍了Vue CLI 3版本创建项目时的Runtime-Compiler和Runtime-only两种模式的区别、Vue程序的运行过程、render函数的使用、eslint的关闭方法,以及Vue CLI 2和3版本配置文件的不同和脚手架3版本创建项目的配置文件配置方法。
719 3
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
|
JavaScript 前端开发
Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南
Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
388 2
|
监控 项目管理 调度
深入探究ERP系统的项目管理模块
深入探究ERP系统的项目管理模块
291 3
|
监控 安全 BI
宜搭报表中,如何实现将报表定时下载并推送到群里
宜搭报表中,如何实现将报表定时下载并推送到群里