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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19198.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【博客系统】页面设计(附完整源码)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、页面介绍 二、预期效果 1、博客列表页效…

大项目准备(2)

目录 中国十大最具发展潜力城市 docker是什么&#xff1f;能介绍一下吗&#xff1f; 中国十大最具发展潜力城市 按照人随产业走、产业决定城市兴衰、规模经济和交通成本等区位因素决定产业布局的基本逻辑&#xff0c;我们在《中国城市发展潜力排名&#xff1a;2022》研究报告…

websocket

&#x1f449;websocket_菜鸟教程*…*的博客-CSDN博客 目录 1、什么是Socket&#xff1f;什么是WebSocket&#xff1f; 2、WebSocket的通信原理和机制 3、WebSocket技术出现之前&#xff0c;Web端实现即时通讯的方法有哪些&#xff1f; 4、一个简单的WebSocket聊天小例子 …

prometheus监控数据持久化

前置条件 1.规划两台主机安装prometheus # kubectl get nodes --show-labels | grep prometheus nm-foot-gxc-proms01 Ready worker 62d v1.23.6 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io…

5款办公必备的好软件,你值得拥有

随着网络信息技术的发展&#xff0c;越来越多的人在办公时需要用到电脑了。如果你想提高办公效率&#xff0c;那么就少不了工具的帮忙&#xff0c;今天给大家分享5款办公必备的好软件。 1.文件管理工具——TagSpaces TagSpaces 是一款开源的文件管理工具,它可以通过标签来组织…

Linux一学就会——系统文件I/O

Linux一学就会——系统文件I/O 有几种输出信息到显示器的方式 #include <stdio.h> #include <string.h> int main() {const char *msg "hello fwrite\n";fwrite(msg, strlen(msg), 1, stdout);printf("hello printf\n");fprintf(stdout, &q…

体验洞察 | 原来它才是最受欢迎的CX指标?

一直以来&#xff0c;企业都在试图追踪他们能否在整个客户旅程中始终如一地提供卓越的客户体验&#xff08;Customer Experience&#xff0c;简称“CX”&#xff09;&#xff0c;并通过多个CX指标&#xff0c;如NPS&#xff08;净推荐值&#xff09;、CSAT&#xff08;客户满意…

openGL 环境搭建

刚入坑&#xff0c;每个包、每个项目都得重新配一遍&#xff0c;实在烦人&#xff0c;由于网上已有很多教程&#xff0c;故在此只简要介绍。 比较通用的安装方法如下&#xff1a; 优先下载&#xff0c;对应vs版本&#xff0c;32位&#xff0c;已经编译好的库。如果下载的是源代…

Java 远程debug,IDEA 远程 Debug 调试

有时候我们需要进行远程的debug&#xff0c;本文研究如何进行远程debug&#xff0c;以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务&#xff0c;以SpringBoot微服务为例。 首先&#xff0c;启动SpringBoot需要加上特定的参数。 …

网页端操作提示「msg.js」库简介

这段时间我正在完成我的第一本个人图书&#xff0c;期间做了很多的案例&#xff0c;最近需要在网页端完成一个关于「恶意文本检测」的案例&#xff0c;为了让该案例表现的更加易用简洁、对用户友好&#xff0c;我需要在页面中添加一些用户操作提示信息&#xff0c;比如「正在加…

最适合家用的洗地机哪个牌子好?2023洗地机推荐

洗地机是目前众多清洁工具中的热门之选&#xff0c;我身边很多朋友都选择了洗地机来处理家居清洁&#xff0c;一说一&#xff0c;洗地机可以处理干湿垃圾&#xff0c;还都有一键自清洁功能&#xff0c;用起来确实方便简单。不过&#xff0c;市面上的洗地机参差不齐&#xff0c;…

QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)

[TOC](QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)) [1] QT软件开发: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令) https://blog.51cto.com/xiaohaiwa/5380259 一、环境介绍 QT版本: 5.12.6 环境: win10 64位 编译器: MinGW 32 二、功…

Presto

Presto Presto基本介绍 前言 Presto是一款Facebook开源的MPP架构的OLAP查询引擎&#xff0c;可针对不同数据源执行大容量数据集的一款分布式SQL执行引擎。因为工作中接触到Presto&#xff0c;研究它对理解SQL Parser、常见算子的实现&#xff08;如SQL中table scan,join,agg…

OA办公系统能为企业带来什么好处?

在企业办公管理软件当中&#xff0c;OA系统一直都是最受欢迎也是很多大中型企业不可或缺的管理系统。企业OA办公系统是将计算机、通信等现代化技术运用到传统办公方式&#xff0c;进而形成的一种新型办公方式。办公自动化利用现代化设备和信息化技术&#xff0c;代替办公人员传…

RabbitMQ之工作队列 ( Work Queues )

Work Queues 1. 轮询分发消息1.1 抽取工具类1.2 启动两个工作线程1.3 启动一个发送线程1.4 结果展示 2. 消息应答2.1 概念2.2 自动应答2.3 消息应答的方法2.4 Multiple 的解释2.5 消息自动重新入队2.6 消息手动应答代码2.7 手动应答效果演示 3. RabbitMQ 持久化3.1 概念3.2 队列…

Golang每日一练(leetDay0064) 轮转数组、颠倒二进制位

目录 189. 轮转数组 Rotate Array &#x1f31f;&#x1f31f; 190. 颠倒二进制位 Reverse Bits &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 189. 轮转数组 Rotate Ar…

免费使用GPT-4.0?【AI聊天 | GPT4教学】 —— 微软 New Bing GPT4 申请与使用保姆级教程

目录 认识 New Bing 2. 注册并登录 Microsoft 账号 3. 如何免科学上网使用 New Bing&#xff1f; 4. 加入 WaitList 候补名单 5. 使用 New Bing&#xff01; 6. 使用 Skype 免科学上网访问 New Bing&#xff01; 7. 在 Chrome 浏览器中使用 New Bing&#xff01; 8. 总…

交直流一体化电源系统-交流电源自动测试系统ATECLOUD-Power

现代社会离不开电力&#xff0c;而电力供应的质量和可靠性&#xff0c;对于各个领域的发展都有着至关重要的作用。交直流一体化电源系统作为一种新型的供电方案&#xff0c;不仅具备高度的适应性、可靠稳定性以及节能环保性等诸多优势&#xff0c;还能为各行各业的市场提供更加…

MySQL基础(二十四)索引的数据结构

1 为什么使用索引 顺序查询和数据使用二叉树结构再进行查询,如图&#xff1a; 2 索引及其优缺点 2.1 索引概述 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。 **索引的本质&#xff1a;**索引是数据结构。你…

Lombok工具 : 常用注解介绍 (全)

文章目录 介绍引入Maven依赖常用的注解 NoArgsConstructor/AllArgsConstructorRequiredArgsConstructorGetter/SetterToString/EqualsAndHashCodeDataBuilderAccessors 其他注解 SneakyThrowsValueCleanupNotNullSynchronizedLog、Log4j、Slf4j、Log4j2、CommonsLog、XSlf4j等…