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

C++学习day--10 条件判断、分支

1、if语句

if 语句的三种形态
形态1:如果。。。那么。。。
#include <iostream>
using namespace std;
int main( void ) {
int salary;
cout << " 你月薪多少 ?" ;
cin >> salary;

if (salary < 20000) {

cout << " 你是一个好人 , 我还不想谈恋爱 ." << endl;
}
system( "pause" );
return 0;
}

 形态2:如果。。。那么。。。,否则。。

#include <iostream>
using namespace std;
int main( void ) {
int salary;
cout << " 你月薪多少 ?" << endl ;
cin >> salary;
if (salary < 20000) {
cout << " 你是一个好人 , 我还不想谈恋爱 ." << endl;
} else {
cout << " 我没有什么要求 , 只要你对我好就行 ." << endl;
}
system( "pause" );
return 0;
}
形态 3
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main( void )
{
int salary;
string houseRet; // 是否有房
string carRet; // 是否有车
cout << " 你的月薪是多少 ?" << endl;
cin >> salary;
cout << " 你有房吗? " << endl;
cin >> houseRet;
cout << " 你有车吗? " << endl;
cin >> carRet;
if (salary < 20000) {
cout << " 你是一个好人, 我现在还不想谈恋爱 ." << endl;
} else if (houseRet == " " ) {
cout << " 我其实没有什么要求,只要你对我好 ." << endl;
} else if (carRet == " " ) {
cout << " 还不错哦, 以后再联系 ." << endl;
} else {
cout << " 有缘再见 ." << endl;
}
system( "pause" );
return 0;
}

if 语句的嵌套 

实例:
3 个数的最大值。
#include <iostream>
#include <windows.h>
using namespace std;
int main( void ) {
int x, y, z;
cout << " 请输入 3 个整数 : " << endl;
cin >> x >> y >> z;
if (x > y) {
if (x > z) {
cout << " 最大值是: " << x << endl;
} else {
cout << " 最大值是: " << z << endl;
}
} else {
if (y > z) {
cout << " 最大值是: " << y << endl;
} else {
cout << " 最大值是: " << z << endl;
}
}
system( "pause" );
return 0;
}
嵌套的常见错误(配对错误)
与前面最近的,而且还没有配对的 if 匹配

 

错误避免方法:
1 )严格使用 { }
2 )先写{}再写里面的内容
3 )保持良好的“缩进”

 2、switch 语句

switch 的基本使用
语法:
switch (x) {
case 表达式 1

语句 1
break;
case 表达式 2
语句 2
break;
case 表达式 3
语句 3
break;
default 表达式 1
语句 1
break;
}

 流程图:

 demo

#include <iostream>
#include <windows.h>
using namespace std;
int main(void) {
int num;
cout << " 请输入一个数字 : ";
cin >> num;
switch (num) {
case 1:
cout << " 星期一:包子 " << endl;
break;
case 2:
cout << " 星期二:馒头 " << endl;

break;
case 3:
cout << " 星期三:稀饭 " << endl;
break;
case 4:
cout << " 星期四:白菜 " << endl;
break;
case 5:
cout << " 星期五:土豆 " << endl;
break;
case 6:
case 7:
cout << " 周末:休息 " << endl;
break;
default:
cout << " 请输入 1-7" << endl;
break;
}
system("pause");
return 0;
}
switch if 的选择
switch : 用于 int/char/long/long long 类型的变量,和多个特定常量的判断处理。 (float 和 double 类型不可以), 注意: case 表达式,这个表达式只 能取整数,整数表达式,不能取 其它类型的表达式!!
if: 适用于各种逻辑判断

 -常见错误总结

switch 错误

以下错误,在 vs/vc 中有提示,但是仍可以通过编译。
gcc 编译器中,不能通过编译。
#include <stdio.h>
int main(void) {
int c;
scanf("%d", &c);
switch(c) {
case 1:
int x = 0; //错误!
printf("c=1");
break;
case 2:
printf("c=2");
break;

default:
printf("other");
break;
}
return 0;
}

应该修改为: 

#include <stdio.h>
int main(void) {
int c;
scanf("%d", &c);
switch(c) {
case 1:
{
int x = 0; //错误!
printf("c=1");
}
break;
case 2:
printf("c=2");
break;
default:
printf("other");
break;
}
return 0;
}
不安全函数( scanf 等)
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main( void )
{
int num;

scanf( "%d" , &num);
system( "pause" );
return 0;
}
vs 中不能直接使用 scanf C 标准库函数
因为 vs 使用更安全的 c11 标准 , 认为这类函数不安全。
注明,这类函数正常使用时,是没有任何问题的
但是,部分黑客可能会利用其中的缺陷,开发恶意软件,对系统造成影响
解决方案:
1. 方法 1 :使用修改项目的属性,直接使用这些“不安全”的函数。
添加: /D _CRT_SECURE_NO_WARNINGS

 

2. 方法 2 :使用 c11 标准中的“更安全”的函数 scanf_s
gets 不能使用,使用 gets_s
gets 是老标准 C 语言函数, vs 使用更安全的 c11 标准 , 使用对应的 gets_s
char line[32];
gets_s(line, sizeof (line));
scanf 不能使用
原因同上,改用 scanf_s
int x;
scanf_s("%d", &x); // 不需要使用第 3 个参数,用法和 scanf 相同
float f;
scanf_s("%f", &f); // 不需要使用第 3 个参数 , 用法和 scanf 相同
char c;
scanf_s("%c", &c, sizeof(c)); // 需要使用第 3 个参数 , 否则有告警
char name[16];
scanf_s("%s", name, sizeof(name)); // 需要使用第 3 个参数
int age;
char name[16];
scanf_s("%d%s", &age, name, sizeof(name));

cin >> 的返回值 

#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main( void ) {
string word;
int count = 0;
int length = 0;
cout << " 请输入任意多个单词: " ;
while (1) {
if ((cin >> word) == 0) { // vs 中不能通过编译
break ;
}
count++;
length += word.length();
}
cout << " 一共有 " << count << " 单词 " << endl;
cout << " 总长度: " << length << endl;
system( "pause" );
return 0;
}
if ((cin >> word) == 0) 修改为: if ((bool)(std::cin >> word) == 0) {
或者修改为: if (!(cin >> word)) {
getline 的返回值
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main( void ) {
string line;
int lineCount = 0;
int length = 0;
cout << " 请输入任意多行: " ;
while (1) {
// 遇到文件结束符时, 返回 NULL 0
if (getline(cin, line) == 0) {
break ;
}
lineCount++;
length += line.length();
}
cout << " 一共有 " << lineCount << " " << endl;
cout << " 总长度 : " << length << endl;
system( "pause" );
return 0;
}

测试代码: 

string line;
int length = 0;
getline(cin, line) >> length;
cout << "line=" << line << endl;
cout << "length=" << length << endl;
 
修改:
if (getline(cin, line) == 0) {
修改为:
if ( (bool) g etline(cin, line) == 0) {
或者修改为:
if ( ! getline(cin, line)) {

 if 语句后面误加分号

int age;
cout << "请输入年龄: " ;
cin >> age;
if (age > 40); {
cout << "大叔" << endl;
}
严格遵循代码规范,做到零警告。
以上代码在 VS 中编译时,会有警告 warning

 

3、计算机英语加油站

bool
布尔
逻辑类型
if
如果
else
否则
switch
开关
case
情况
default
默认

4、职场修炼:怎样优雅地避免加班

996 工作制?
9-6-5
制定合理的项目计划
提高工作效率(要有一定的技术积累)
养成良好的工作习惯【不加班】
每天有目标的学习 1 小时以上

 5、练习

习题 1. 让用户输入一个字符, 然后进行转换:
如果是大写字母,就转换为小写字母
如果是小写字母,就转换为大写字母
如果是其它字符,不做任何转换
#include <iostream>
#include <string>
#include <Windows.h>

using namespace std;
int main( void ) {
char c;
cout << " 请输入一个字符 : " << endl;
cin >> c;
if (c >= 'a' && c <= 'z' ) {
c = c - 'a' + 'A' ;
} else if (c >= 'A' && c <= 'Z' ) {
c = c - 'A' + 'a' ;
}
cout << c << endl;
system( "pause" );
return 0;
}
习题 2. 让用户输入一个数字(
0-9 ),然后输出对应的大写汉字。
注: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖
例如,用户输入 3 , 输出“叁”
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
// 零 壹 贰 叁 肆 伍 陆 柒 捌 玖
int main( void ) {
int num;
string ret;
cout << " 请输入一个数字 [0-9]: " ;
cin >> num;
switch (num) {
case 0:
cout << " " ;
break ;
case 1:
cout << " " ;
break ;
case 2:

cout << " " ;
break ;
case 3:
cout << " " ;
break ;
case 4:
cout << " " ;
break ;
case 5:
cout << " " ;
break ;
case 6:
cout << " " ;
break ;
case 7:
cout << " " ;
break ;
case 8:
cout << " " ;
break ;
case 9:
cout << " " ;
break ;
default :
break ;
}
cout << endl;
system( "pause" );
return 0;
}
方法 2
用空间换速度。
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main( void ) {
int num;
string ret[10] = { " " , " " , " " , " " , " " , " " , " " , " " , " " ,
" " };
cout << " 请输入一个数字 [0-9]: " ;
cin >> num;
if (num >=0 && num <=9) {
cout << ret[num] << endl;
}
system( "pause" );
return 0;
}
习题 3. 让用户输入年份和月份,然后输出这个月有多少天。
说明:
闰年的 2 月份有 29
普通闰年: 能被 4 整除但不能被 100 整除的年份为
世纪闰年: 能被 400 整除
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
/*
闰年的 2 月份有 29
普通闰年 : 能被 4 整除但不能被 100 整除的年份为
世纪闰年 : 能被 400 整除
*/
int main( void ) {
int year;
int month;
bool flag = false ;
int days;
cout << " 请输入年份: " ;
cin >> year;
cout << " 请输入月份: " ;
cin >> month;
if (year % 400 == 0) {
flag = true ;
} else if (year % 4 == 0 && year % 100 != 0) {
flag = true ;
} else {
flag = false ;
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:

case 12:

days = 31;
break ;
case 2:
days = flag ? 29 : 28;
break ;
case 4:
case 6:
case 9:
case 11:
days = 30;
break ;
default :
std::cout << " 无效月份 " << std::endl;
break ;
}
cout << year << " " << month << " 月一共有: " << days << " " << endl;
system( "pause" );
return 0;
}

相关文章:

C++学习day--10 条件判断、分支

1、if语句 if 语句的三种形态 形态1&#xff1a;如果。。。那么。。。 #include <iostream> using namespace std; int main( void ) { int salary; cout << " 你月薪多少 ?" ; cin >> salary; if (salary < 20000) { cout <&…...

和月薪5W的聊过后,才发现自己一直在打杂···

前几天和一个朋友聊面试&#xff0c;他说上个月同时拿到了腾讯和阿里的offer&#xff0c;最后选择了阿里。 我了解了下他的面试过程&#xff0c;就一点&#xff0c;不管是阿里还是腾讯的面试&#xff0c;这个级别的程序员&#xff0c;都会考察项目管理能力&#xff0c;并且权重…...

SSM框架学习-AOP通知类型

在AOP中&#xff0c;通知&#xff08;Advice&#xff09;是对切点进行操作的方法&#xff0c;用于实现切面定义的具体逻辑。Spring框架支持五种类型的通知&#xff1a; 1. 前置通知&#xff08;Before advice&#xff09; 在连接点执行前&#xff0c;执行通知 Before("**…...

微信小程序原生开发功能合集十四:登录健权及注册功能实现

本章实现微信自动登录及注册修改功能,包括匿名账号生成、权限自动检测、注册界面及注册流程的实现。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn…...

【Java零基础入门篇】第 ⑤ 期 - 抽象类和接口(二)

博主&#xff1a;命运之光 专栏&#xff1a;Java零基础入门 学习目标 1.了解什么是抽象类&#xff0c;什么是接口&#xff1b; 2.掌握抽象类和接口的定义方法&#xff1b; 3.理解接口和抽象类的使用场景&#xff1b; 4.掌握多态的含义和用法&#xff1b; 5.掌握内部类的定义方法…...

Halcon 集合运算(差集difference、交集intersection、并集union2、打散connection与 合集 union1)

文章目录 1 差集difference2. 交集intersection3. 并集union24 打散connection与 合集 union1 (二者互为反义词)4.1 打散connection与4.2 合集 union1 (注意与交集的区别)5 示例原图1 差集difference difference (Operator) Name difference — Calculate the difference …...

Allegro约束规则设计

首先是物理规则。 然后是间距规则。 如果有些特殊要求&#xff0c;还需要设计电气规则。 原则上&#xff0c;把规则设计好&#xff0c;然后把规则赋值给网络。 物理规则。PCS。 对于名字为DEFAULT的PCS&#xff0c;这是最基础的整板默认规则。 没有特殊要求的网络&#xff0c…...

PyQt5桌面应用开发(11):摸鱼也要讲基本法之桌面精灵

本文目录 PyQt5桌面应用系列鼠标不要钱&#xff0c;手腕还不要钱吗&#xff1f;PyQt5源程序python文件资源定义界面定义文件 技术要素资源文件StyleSheetsQMainWindow设置窗体几何 结论 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQ…...

Talk预告 | 大连理工大学IIAU Lab在读博士生严彬:走向通用实例感知

本期为TechBeat人工智能社区第495期线上Talk&#xff01; 北京时间5月10日(周三)20:00&#xff0c;大连理工大学IIAU Lab在读博士生—严彬的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “走向通用实例感知”&#xff0c;届时将介绍和探讨通用实…...

2023-05-04 LeetCode每日一题(摘水果)

2023-05-04每日一题 一、题目编号 2106. 摘水果二、题目链接 点击跳转到题目位置 三、题目描述 在一个无限的 x 坐标轴上&#xff0c;有许多水果分布在其中某些位置。给你一个二维整数数组 fruits &#xff0c;其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水…...

[工具]Pytorch-lightning的使用

Pytorch-lightning的使用 Pytorch-lightning介绍Pytorch-lightning与Pytorch的区别Pytorch-lightning框架的优势Pytorch-lightning框架 重要资源 Pytorch-lightning介绍 这里介绍Pytorch_lighting框架. Pytorch-lightning与Pytorch的区别 Pytorch-lightning可以简单的看作是…...

互联网摸鱼日报(2023-05-09)

互联网摸鱼日报&#xff08;2023-05-09&#xff09; InfoQ 热门话题 面向数字化提质提效的低代码架构设计 | 低代码技术内幕 提升字节规模化效能的平台化思路 &#xff5c; 极客有约 从微服务转为单体架构、成本降低 90%&#xff0c;亚马逊内部案例引发轰动&#xff01;CTO&…...

MySQL常见的存储引擎

InnoDB&#xff1a;InnoDB是一种兼顾高可靠性和高性能的通用存储引擎&#xff0c;在MySQL 5.5之后&#xff0c;InnoDB是默认的MySQL存储引擎。 特点&#xff1a;1、DML操作遵循ACID模型&#xff0c;支持事务; 2、行级锁&#xff0c;提高并发访问性能; 3、支持外键FOREIGN KEY约…...

迅为i.MX6ULL开发板生成 KEY 文件,并安装

使用“ssh-keygen” 生成个四个 key 文件“ssh_host_rsa_key” “ssh_host_dsa_key” “ssh_host_ecdsa_key” 和“ssh_host_ed25519_key” 。 1 在虚拟机 Ubuntu 控制台&#xff0c; “ /home/ssh/openssh-4.6p1” 目录下&#xff0c; 使用命 令“ssh-keygen -t rsa -f ssh…...

常见舆情监测系统的分类和特点

随着网络和社交媒体的发展&#xff0c;舆情监测系统逐渐成为企业和政府机构必备的工具之一。舆情监测系统可以帮助企业和政府机构全面了解公众对其品牌、产品、政策等的反应和态度&#xff0c;及时发现和解决问题&#xff0c;提高公信力和形象。本文将介绍常见的舆情监测系统的…...

联合群美叶彦文:坚持,只要有一口气,能坚持多久,就坚持多久

创业之路的成败得失就看有多坚持。 成功并不是终点&#xff0c;失败并不是终结&#xff0c;只有勇气才是永恒。 Success is not final,failure is not fatal,it is the courage to continue that counts. ——温斯顿丘吉尔 迪斯雷利曾经说过&#xff1a;“成功的奥秘在于目标…...

动态规划的学习

文章目录 动态规划的学习一、什么是动态规划&#xff1f;二、如何思考状态转移方程&#xff1f;三、动态规划的基本原理1.[509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/)1.1 暴力递归解法&#xff1a;1.1.1 递归算法的时间复杂度那为什么时间复杂度会这么…...

计算机网络:HTTPS

目录 HTTP 与 HTTPS 有哪些区别&#xff1f;HTTPS 解决了 HTTP 的哪些问题HTTPS 是如何建立连接的&#xff1f;其间交互了什么TLS 协议建立的详细流程客户端校验数字证书的流程是怎样的&#xff1f; HTTPS 的应用数据是如何保证完整性的HTTPS 一定安全可靠吗参考资料 HTTP 与 H…...

数据库系列-什么是 JDBC?它的作用是什么?

JDBC&#xff08;Java Database Connectivity&#xff09;是 Java 语言提供的一种访问数据库的标准接口&#xff0c;它定义了一组 Java 接口和类&#xff0c;用于实现 Java 程序与各种关系型数据库的连接和交互。JDBC 的主要作用是提供了一种标准的、可靠的、跨平台的方式来访问…...

C++学习day--08 数组和字符串

1、什么是数组 数组&#xff0c;就是多个元素的有序“组合”。 C 和 C语言中的数组&#xff1a; 1 &#xff09;由多个大小相同的小柜子组成 > 相同大小的内存块组成&#xff0c;即相同类型的数据 2 &#xff09;这些小柜子&#xff0c;有自己对应的编号 > 编号从 …...

系统分析师之系统测试与维护(十六)

目录 一、 测试与评审 1.1 测试类型 1.2 测试阶段 1.3 面向对象的测试 1.4 测试自动化 1.5 软件调试 1.6 软件评审 1.7 验收与确认 二、软件质量管理 2.1 软件过程改进-CMMI 2.2 软件开发环境与工具 三、系统运行与评价 3.1 系统转换计划 3.1.1 遗留系统演化策略…...

板材激光切割机切割穿孔时注意的几个问题

激光切割设备广泛应用于钣金、五金制品、钢结构、汽车配件、广告、工艺品等行业&#xff0c;成为加工行业不可缺少的环节。在厚板加工中穿孔时间占很大比重&#xff0c;随着加工板材越来越厚&#xff0c;板材激光切割机切割穿孔也会相应地增加难度。 激光切割机两种常见的穿孔方…...

奶爸式Swagger教学

目录 一、导入依赖 二、SwaggerConfig基础编程 三、Swagger 常用说明注解 1.API 2.ApiOperation 3.ApiModel 4.ApiModelProperty 5.ApiParam 6.ApilmplicitParam 一、导入依赖 <!--开启Swagger --><!-- https://mvnrepository.com/artifact/io.springf…...

入门级的家用洗地机怎么样?入门级洗地机推荐

洗地机的功能有很多&#xff0c;比如除菌、洗地机清洁地面的确是一把好手。但是&#xff01;清洁完之后还要手动清洗洗地机&#xff0c;是一件麻烦事啊&#xff01;现在市面上大部分洗地机都有自清洁这个功能&#xff0c;但是很多洗地机的自清洁并不算真正的自清洁&#xff0c;…...

【面试】Java 反射机制(常见面试题)

文章目录 前言一、反射是什么&#xff1f;二、为什么要有反射三、反射 API3.1 获取 Class 对象的三种方式3.2 获取成员变量3.3 获取构造方法3.4.获取非构造方法 四、实践五、常见面试题5.1. 什么是反射&#xff1f;5.2. 哪里用到反射机制&#xff1f;5.3. 什么叫对象序列化&…...

JavaScript最佳实践

JavaScript最佳实践 2023.5.8版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 JavaScript 是一种动态编程语言&#xff0c;可让开发者创建动态和交互式 Web 应用程序。然而&#xff0c;编写 JavaScript 代码比较具有挑战性&#xff0c;尤其…...

景23转债,海能转债上市价格预测

景23转债 基本信息 转债名称&#xff1a;景23转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;11.54亿元。 正股名称&#xff1a;景旺电子&#xff0c;今日收盘价&#xff1a;22.52元&#xff0c;转股价格&#xff1a;25.71元。 当前转股价值 转债面值 / …...

TDengine 部署与使用----时序数据库

官网 通过 Docker 快速体验 TDengine | TDengine 文档 | 涛思数据 docker安装 拉取最新docker镜像 docker pull tdengine/tdengine:latest 然后执行 docker run -d -p 6030:6030 -p 6041:6041 -p 6043-6049:6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine 查看容器…...

ShardingSphere系列四(Sharding-JDBC内核原理及核心源码解析)

文章目录 1. ShardingSphere内核解析1.1 解析引擎1.2 路由引擎1.3 改写引擎1.4 执行引擎1.5 归并引擎 2. ShardingSphere的SPI扩展点2.1 SPI机制2.2 ShardingSphere中的SPI扩展点2.3 实现自定义主键生成策略 3. ShardingSphere源码 1. ShardingSphere内核解析 ShardingSphere虽…...

【2023】华为OD机试真题全语言-题目0234-字符串重新排列

题目0234-字符串重新排列 题目描述 给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 单词内部调整:对每个单词字母重新按字典序排序单词间顺序调整: 统计每个单词出现的次数,并按次数降序排列次数相同,按单词长度升序排列次数和单词长度均相同…...