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

news2024/12/23 17:52:26

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈整除分块

例题一 ∑ i 1 n ⌊ n i ⌋ \sum_{i1}^n \lfloor\frac n i\rfloor\\ i1∑n​⌊in​⌋ 首先很容易想到直接求解&#xff0c;对于较大的数据&#xff0c; O ( n ) O(n) O(n)做法无法通过。 注意到函数 y ⌊ n x ⌋ y\lfloor\dfrac n x\rfloor y⌊xn​⌋的图像如下&#xff1a…

Hive语言

一、Hive的DDL语言&#xff08;数据库、数据表的增删改查操作) 二、Hive的DQL语言&#xff08;数据库查询语言&#xff09; 2.1Hive七子句 聚合函数&#xff1a;count()、sum()、max()、min()、avg()可以单独使用。(缩写&#xff1a;cs mm a) 2.1.1 分区查询与分区裁剪 SELEC…

OpenGL(九)——颜色

目录 一、前言 二、简单光源 三、光照场景 3.1 创建光源 3.2 光源顶点着色器 3.3 光源片段着色器 3.4 物体片段着色器 3.5 光源位置 一、前言 我们看到的物体颜色是通过光照在物体&#xff0c;然后反射到人眼成像&#xff0c;具体而言是物体不能吸收的颜色。如白光照射…

C++学习day--09 字符串比较、运算符

1、项目练习 第 1 节 项目需求、项目实现 项目实现&#xff1a; #include <iostream> #include <Windows.h> #include <string> using namespace std; int main( void ) { string name; string pwd; std::cout << " 请输入账号&am…

GPT-4的免费使用方法分享

目录 方法1&#xff1a;使用Ora.sh的LLM应用 方法2&#xff1a;使用https://steamship.com 方法3&#xff1a;使用https://nat.dev 方法4&#xff1a;http://tdchat.vip 方法5&#xff1a;使用Poe网站或App 方法6&#xff1a;使用 Opencat App 方法7:使用https://Huggin…

uniApp实现公农日历相互转换、公历、农历、阳历、阴历、calendar

文章目录 效果图1、组件1.1、html部分1.2、JavaScript部分1.3、style部分 2、使用组件3、总结 效果图 1、组件 1.1、html部分 <template><view v-if"isCalendar" class"calendar_box"><view v-show"!isTime" class"btn_ca…

Linux服务器使用supervisorctl命令部署Java服务详解

我们公司采用supervisorctl命令运行Java -jar包&#xff0c;觉得还是很方便的&#xff0c;此篇文章教你如何使用supervisorctl从零部署Java服务 安装jdk 首先肯定是下载安装Java的运行环境 jdk 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#jav…

WindowContainer相关类

WindowContainer类   从WindowContainer类的注释中可以看出该类中定义了一些公共的方法和属性给直接持有窗口的自己或者它的孩子使用&#xff0c;像RootWindowContainer、DisplayContent、DisplayArea、DisplayArea.Tokens、TaskDisplayArea、Task、ActivityRecord、WindowTok…

【话题讨论】-浅谈VR与AR

一、引言 随着ICT基础技术的发展&#xff0c;我们现在社会中的基础ict设施已经逐步完善&#xff0c;从而我们的社会也开始出现科幻片中才会有的场景&#xff0c;比如&#xff1a;我们可以构件一个虚拟3D沙盘。 还有我们熟悉的各类智能眼镜&#xff0c;已经进入到千家万户&…

干货 | Mendeley 的基础使用方法

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 当阅读的文献越来越多&#xff0c;如何整理文献就成了一个大问题。文献管理软件则减轻了我们文献整理的负担。目前的文献管理软件使用较多的有Endnote、Notepress、Mendeley、Zotero等。 …

边无际首发ChatIoT:AI大模型从数字世界向物理世界迈进

将大模型的能力带到物理世界&#xff0c;除了微软、谷歌&#xff0c;还有一家中国的创业公司。边无际作为专注于物联网开发平台研发的科技公司&#xff0c;紧跟AI大模型带来的生产力变革&#xff0c;首发ChatIoT&#xff0c;率先将大模型的技术应用于物联网领域。 在微软、谷歌…

【高并发】网络模式

I/O 多路复用 多线程创建 服务器的主进程负责监听客户的连接&#xff0c;一旦与客户端连接完成&#xff0c;accept() 函数就会返回一个「已连接 Socket」&#xff0c;这时就通过 fork() 函数创建一个子进程&#xff0c;实际上就把父进程所有相关的东西都复制一份&#xff0c;…

多层感知器Multi-Layer Perception ,MLP

MLP神经网络的结构和原理 神经网络其实是对生物神经元的模拟和简化&#xff0c;生物神经元由树突、细胞体、轴突等部分组成。 生物神经元具有兴奋和抑制两种状态&#xff0c;当接受的刺激高于一定阈值时&#xff0c;则会进入兴奋状态并将神经冲动由轴突传出&#xff0c;反之则…

nginx配置文件nginx.conf的结构、各个指令(元素)的含义以及用法

nginx配置文件nginx.conf的结构、各个指令&#xff08;元素&#xff09;的含义以及用法 默认的nginx.confnginx.conf配置文件官方解释nginx.conf配置文件中每一条指令或指令快的含义是什么&#xff0c;以及用法&#xff08;使用范围&#xff1a;应该配置在什么地方&#xff09;…

今年的面试难度有点大....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

Selenium:利用select模块处理下拉框

目录 一、具体问题 二、解决方案 在UI自动化测试中&#xff0c;有时候会遇到页面元素无法定位的问题&#xff0c;包括xpath等方法都无法定位&#xff0c;是因为前端元素被设置为不可见导致。 这篇博客&#xff0c;介绍下如何通过JavaScript修改页面元素属性来定位的方法。。…

2021年科幻美剧和《人月神话》有啥渊源,书中有个小bug你知道吗

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 《人月神话》1975版和1995版的封面是这样的&#xff1a; 图1 1975版“The Mythical Man-Month”封面 图2 1995版“The Mythical Man-Month”封面 书中第1章“焦油坑&…

【JS每N日一练】【自动化】gitcode创建子项目并导入git

▒ 目录 ▒ &#x1f6eb; 导读需求 1️⃣ 创建子项目手动操作编写代码 2️⃣ 导入github项目手动操作编写代码 &#x1f6ec; 文章小结&#x1f4d6; 参考资料 &#x1f6eb; 导读 需求 github访问时好时不好的&#xff0c;而且克隆代码及其麻烦&#xff0c;经常失败。所以小…

C语言 | 结构体

C语言 | 结构体 文章目录 C语言 | 结构体C语言结构体详解:1.实例&#xff08;多重嵌套&#xff09;1-1.定义1-2.初始化 2.结构体2-1、结构体2-1-1、结构体的类型定义&#xff1a;2-1-2、结构体变量的定义&#xff1a;2-1-3、结构体变量的初始化&#xff1a;2-1-4、使用&#xf…

【夜莺(Flashcat)V6监控】1初识夜莺:介绍及部署

简介 夜莺&#xff08; Nightingale &#xff09;是一款国产、开源云原生监控分析系统&#xff08;从 v6 版本开始&#xff0c;尝试转型成为统一观测平台&#xff09;&#xff0c;集数据采集、可视化、监控告警、数据分析于一体。于 2020 年 3 月 20 日&#xff0c;在 github …