当前位置: 首页 > news >正文

C语言选择结构程序设计

一、关系运算符和关系表达式

1. 关系运算符

关系运算符解释
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于

2. 关系表达式

如果一个表达式最后进行的是关系运算,则该表达式就是关系表达式。

关系表达式的值是一个逻辑值,数学中用“真”、“假”来表示,C语言中用1和0来表示。

二、逻辑运算符和逻辑表达式

1. 逻辑运算符

逻辑运算符解释优先级
!否定、取反最高
&&两边为真结果为真较高
||一边为真结果为真较低

 2. 逻辑表达式

C语言中,任何表达式(包括变量、常量)都有逻辑值,只要表达式的值非0,则认为它的逻辑值为“真”(即1),只有表达式的值为0时,其逻辑值才为“假”(即0)。

①3+2的值是5,若参与逻辑运算,则取它的逻辑值1;

②-5参与逻辑运算时,逻辑值也是1;

③float x=1.2; 则x的逻辑值是1;

④!’A‘的逻辑值为0。

三、if语句

1. 简单if语句

#include<stdio.h>
int main()
{int a=2,b=3;if(a>b)printf("a大于b");elseprintf("a小于等于b");return 0;
}

2. 条件运算

表达式1 ? 表达式2 :表达式3

含义:若表达式1的值非0,则该条件表达式的值是表达式2的值,否则是表达式3的值。

#include<stdio.h>
int main()
{int a,b,max;printf("Input a,b:");scanf("%d,%d",&a,&b);max = a>b?a:b;    //用条件表达式计算两个整数的最大值printf("max = %d\n",max);return 0;
}

 3. 多分支控制if语句

#include<stdio.h>
int main()
{int x;scanf("%d",&x);if(x>=90)printf("优");else if(x>=80)printf("良");else if(x>=70)printf("中");else if(x>=60)printf("及格");elseprintf("不及格");return 0;
}

 4. 嵌套if语句

#include<stdio.h>
#include<math.h>
#define EPS 1e-6
int main()
{float a,b,c,disc;scanf("%f,%f,%f",&a,&b,&c);disc = b*b-4*a*c;    //计算判别式if(fabs(a)<=EPS)    //a=0时,输出不是二次函数{printf("这个函数不是二次函数");}else{if(fabs(disc)<=EPS){printf("这个方程有两个相等的根");}else{printf("这个方程有两个不相等的根");}}return 0;
}

在这段代码中,为什么不直接将实数与0比较呢?

因为在这个例子中,实数在内存中是以浮点形式存储的,所占的位数是有限的,比如说,float(0.0000000000001)=0.000000,浮点数并非真正意义上的实数,只是在某种范围内的近似,因此也只能用近似的方法将实数与0进行比较。

四、switch语句

#include<stdio.h>
int main()
{int x;char grade;scanf("%d",&x);switch(x/10){case 10:case 9: grade='A';break;    //用break终止switch语句的执行case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';}return 0;
}

 常见错误:

①switch后面的表达式不加括号,如switch x/10 应该是switch (x/10);

②switch后面多写了分号,如“switch (x/10);”应该是“switch (x/10)”;

③case与后面的表达式之间不写空格,如“case10:”应该是“case 10:”;

④漏写break;。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mamba介绍,和Transformer对比
  • 日结兼职零工平台小程序系统开发制作方案
  • 【机器学习】梯度下降算法
  • 奇安信渗透测试岗位三面经验分享
  • 网络安全人才缺口大 每年相关专业毕业生仅8千余人
  • 智能客服的未来:构建全知全能的知识问答系统
  • 【ceph学习】ceph如何进行数据的读写(3)
  • EmguCV学习笔记 VB.Net 6.6 图像的矩
  • 头脑风暴:‌群体中的脑间耦合是群体创造力形成的基础
  • 互联网人+大模型=?
  • ARM32开发——(十一)GD32F4_定时器查询
  • 解决:无法从域控制器读取配置信息
  • 笔记整理—内核!启动!
  • 移动端app如何设计测试用例?
  • 2025秋招大语言模型落地实践面试题
  • 分享一款快速APP功能测试工具
  • 【技术性】Search知识
  • 2017 年终总结 —— 在路上
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • const let
  • emacs初体验
  • github指令
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • PV统计优化设计
  • React-flux杂记
  • Redis 懒删除(lazy free)简史
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Tornado学习笔记(1)
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue.js 移动端适配之 vw 解决方案
  • vue学习系列(二)vue-cli
  • 阿里云Kubernetes容器服务上体验Knative
  • 复杂数据处理
  • 高性能JavaScript阅读简记(三)
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 简单数学运算程序(不定期更新)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一个完整Java Web项目背后的密码
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 阿里云API、SDK和CLI应用实践方案
  • 回归生活:清理微信公众号
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #android不同版本废弃api,新api。
  • #pragma预处理命令
  • (Forward) Music Player: From UI Proposal to Code
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (附源码)php投票系统 毕业设计 121500
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)linux文件内容查看
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (一)为什么要选择C++
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...