首页 > 编程语言 >跟我从零开始学C++(C++代码基础)2

跟我从零开始学C++(C++代码基础)2

时间:2024-06-18 21:00:49浏览次数:17  
标签:cout int 代码 C++ 运算符 ++ 从零开始 表达式

引言

在上一章我们下载了学习C++的工具,Visual Studio编译器,也学习了一些简单基础的语法,知道了一些C++的相关的背景知识,还有C++的语法基础,我们这节课就来接着学习有关C++的内容。本章的内容有运算符和表达式,以及控制结构。

编写我们的第一个代码Helloworld!

不论是是学习什么计算机语言,往往大家的第一个代码都是helloworld,因为这是最简单的代码,而且可以帮助我们了解创建项目文件流程。
1.找到我们下载好的Visual Studio,并打开
在这里插入图片描述
2.选择空项目创建新项目

在这里插入图片描述
3.配置项目文件夹

在这里插入图片描述
4.打开文件后创建新项,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.在输入框里输入以下代码
在这里插入图片描述

运算符和表达式

在接下来的讲解中,我会在每个小节的后边加上代码讲解,小伙伴们可以把代码自己尝试着输入到编辑器里方便大家学习。

算术运算符

  • +加法,-减法,*乘法,/除,%求余。
  • 自增,++,使单个变量增加1,++在后,先使用,后计算;++在前,先计算,后使用。
  • 自减,–,使单个变量减少1,–在后,先使用,后计算;–在前,先计算,后使用。
  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int a = 10, b = 20;
	cout << a + b << endl;

	float c = 2.2, d = 3.3;
	cout << c + d << endl;

	a = c + d;
	cout << a << endl;

	/*
		++在后,先使用,后计算
		++在前,先计算,后使用
	*/
	int i = 0, m;
	i++;
	cout << "i: " << i << endl;
	++i;
	cout << "i: " << i << endl;

	i = 0;
	/*
		m = i;
		i = i + 1;		
	*/
	m = i++;
	cout << "m: " << m  << " i: " << i << endl;

	i = 0;
	/*
		i = i + 1;
		m = i;
	*/
	m = ++i;
	cout << "m: " << m << " i: " << i << endl;



	return 0;
}

赋值运算符

  • = 赋值,作用是将表达式的值赋给变量。
  • 复合赋值运算符,作用是将一个带有变量自身的算术运算表达式的值赋给变量自身。
  • +=,-=,*=,/=,%=
  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int m = 1, n = 2;
	
	//	m = m + 2; 等效于以下代码
	m += 2;
	cout << "m: " << m << endl;
	
	m += n;
	cout << "m: " << m << endl;

	m += (n + 2);
	cout << "m: " << m << endl;
	return 0;
}

关系运算符·

  • 大于>, >=大于等于,==等于,!=不等于,小于等于<=,小于<。
  • 关系运算符的结果都是bool型。
  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int m = 3, n = 5;
	char c1 = 'a', c2 = 'b';


	bool b = m > n;
	cout << "b: " << b << endl;

	b = m < n;
	cout << "b: " << b << endl;

	b = c1 > c2; // c1的ASCII码是97, c2的ASCII码是98. 97 > 98 的结果为false, c1 > c2的结果为false。
	cout << "b: " << b << endl;

	return 0;
}

逻辑运算符

在这里插入图片描述

  • 逻辑运算符计算bool类型的数据,结果也是bool类型的数据。
  • && 逻辑与运算符;||逻辑或运算符,!逻辑非运算符。
  • 逻辑短路
    • a && b , 当a为false时,直接返回false,不计算b的值;当a为true时,计算b的值。
    • a || b , 当a为true时,直接返回true,不计算b的值;当a为false时,计算b的值。
  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int m = 3, n = 5;
	bool b;
		

	//	逻辑短路
	b = (3 > 5) && (m++ > n); // m++ 不执行
	cout << "(3 > 5) && (m++ > n); " << b << " m:" << m << endl;

	b = (3 < 5) && (m++ > n); // m++ 执行
	cout << "(3 < 5) && (m++ > n); " << b << " m:" << m << endl;

	//	逻辑非
	cout << "!b:" << !b << endl;

	//	单目运算符优先级高于双目运算符,!优先计算,结果为true.
	b = 3 < 5 && m > !n;
	cout << "3 > 5  && m > n; " << b <<  endl;

	/*
		运算符优先级
		1.单目运算符。单目运算符是指只有一个运算对象的运算符。
		2.双目运算符。双目运算符是指有两个运算对象的运算符。
		3.三目运算符。三目运算符是指有三个运算对象的运算符。	
	*/

	return 0;
}

其他运算符

  • 逗号运算符

    • 一个逗号运算符可以将两个表达式连接起来,取最右侧表达式的结果作为整个表达式的结果。逗号运算符优先级最低。
  • 条件运算符

    • 语法:表达式1 ? 表达式2 : 表达式3;
    • 当表达式1的结果为true,返回表达式2的值;当表达式1的结果为false,返回表达式3的值
  • 代码演示

#include <iostream>

using namespace std;

int main()
{
	int a = 10, b = 11, c = 12, n;
	
	//	逗号运算符优先级最低,n = ++a是第一个表达式,n的值是11
	n = ++a, ++b, ++c;
	cout << "n: " << n  << endl;

	//	从左到右依次计算每个表达式的值,返回最右侧的表达式的值。
	n = (++a, ++b, ++c);
	cout << "n: " << n << endl;

	/*
		条件运算符
		表达式1 ? 表达式2 : 表达式3;
		当表达式1的结果为true,返回表达式2的值;
		当表达式1的结果为false,返回表达式3的值;
	*/
	n = (a > b) ? a : b;
	cout << "n: " << n << endl;

	return 0;
}

控制结构

  • 任何任何程序都是由三种基本结构构成的,顺序,分支,循环。

分支结构

if 单分支结构

在这里插入图片描述

  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int age = 17;

	//	if单分支
	if (age >= 18)
	{
		cout << "上网去!" << endl;
	}

	cout << "回家睡觉" << endl;

	//	输入一个成绩,如果不及格,输出"需要补考"
	int score;
	cin >> score;
	if (score < 60)
	{
		cout << "需要补考" << endl;
	}

	return 0;
}

if else双分支结构

在这里插入图片描述

  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int age = 180;

	if (age >= 18)
	{
		cout << "去网吧!" << endl;
	}
	else
	{
		cout << "做作业" << endl;
	}
	
	cout << "睡觉" << endl;

	//	输入两个数,输出其中较大的那个数
	int a, b, n;
	cin >> a >> b;
	if (a > b)
	{
		n = a;
		//cout << a << endl;
	}
	else
	{
		n = b;
		//cout << b << endl;
	}
	cout << n << endl;

	return 0;
}

else if 多分支结构

在这里插入图片描述

  • 代码演示
#include <iostream>

using namespace std;

int main()
{
	int age = 19;
	if (age < 18)
	{
		cout << "回家写作业" << endl;
	}
	else if (age < 30)
	{
		cout << "疯狂拧螺丝" << endl;
	}
	else if (age < 40)
	{
		cout << "上班+上有老下有小" << endl;
	}
	else if (age < 65)
	{
		cout << "摸鱼" << endl;
	}
	else
	{
		cout << "带着孙子跳广场舞" << endl;
	}

	/*
		输入一个成绩[0,100],判断属于哪个等级并输出
		A [90, 100]
		B [80, 90)
		C [70, 80)
		D [60, 70)
		E [0,60)
	*/

	int score;
	cin >> score;

	if(score <= 100)
	{
		if (score >= 90)
		{
			cout << "A" << endl;
		}
		else if (score >= 80)
		{
			cout << "B" << endl;
		}
		else if (score >= 70)
		{
			cout << "C" << endl;
		}
		else if (score >= 60)
		{
			cout << "D" << endl;
		}
		else
		{
			cout << "E" << endl;
		}
	}
	else
	{
		cout << "无效的成绩" << endl;
	}

	return 0;
}

switch 多分支

  • switch后的表达式只能是整型、字符型、枚举类型
  • case后面必须是常量,可以是数值常量也可以是命名常量
  • case语句一般配合break使用,否则会一直执行下去。
  • elseif与switch多分支之间的差异
    在这里插入图片描述
  • 代码演示
#include <iostream>

using namespace std;

int main()
{

	int n = 1;	
	/*
		switch后的表达式只能是整型、字符型、枚举类型。
		case后面必须是常量,可以是数值常量也可以是命名常量。
		case语句一般配合break使用,否则会一直执行下去。
	*/
	switch (n)
	{
	case 1:
		cout << "春" << endl;
		break;
	case 2:
		cout << "夏" << endl;
		break;
	case 3:
		cout << "秋" << endl;
		break;
	case 4:
		cout << "冬" << endl;
		break;	
	default:
		cout << "以上条件都不满足";
		break;

	}

	/*
		输入一个成绩[0,100],判断属于哪个等级并输出。
		要求使用switch多分支实现
		A [90, 100]
		B [80, 90)
		C [70, 80)
		D [60, 70)
		E [0,60)
	*/

	int score = 80;
	int n = score / 10;
	switch (score)
	{
	case 10:
	case 9:
		cout << "A" << endl;
		break;
	case 8:
		cout << "B" << endl;
		break;
	case 7:
		cout << "C" << endl;
		break;
	case 6:
		cout << "D" << endl;
		break;
	default:
		cout << "E" << endl;
		break;
	}

	return 0;
}

小练习

  • 从键盘上输入年份和月份,输出该月有几天。
    判断闰年:
    能被4整除但不能被100整除 或者 能被400整除。
#include <iostream>

using namespace std;

int main()
{
	/*
		从键盘上输入年份和月份,输出该月有几天。
		判断闰年:
			能被4整除但不能被100整除 或者 能被400整除。
	
	*/
	int y = 1996, m = 4;
	cin >> y >> m;
	if (m == 4 || m == 6 || m == 9 || m == 11)
	{
		cout << "30天" << endl;
	}
	else if (m == 2)
	{
		if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
		{
			cout << "29天" << endl;
		}
		else
		{
			cout << "28天" << endl;
		}
	}
	else
	{
		cout << "31天" << endl;
	}
	return 0;
}

想一想还有什么好办法可以实现以上的问题呢顺便留个自己做的小练习,这个答案在下一章公布。

  • 根据收入计算应纳税款,要求如下:
    月收入小于等于5000元,不纳税。
    月收入大于5000元,对于超过5000元的部分纳税5%;
    月收入大于10000元,对于超过10000元的部分纳税10%;
    月收入大于20000元,对于超过20000元的部分纳税15%;
    月收入大于30000元,对于超过30000元的部分纳税20%

结语

小伙伴们,怎么样呢,今天是不是也学到了很多干货呢,加油呀,C++基础就快结束了,而且有了这些基础,小伙伴们可以做一些简单的小程序了呢。

标签:cout,int,代码,C++,运算符,++,从零开始,表达式
From: https://blog.csdn.net/m0_58077690/article/details/139696057

相关文章

  • C++PrimerPlus:第十三章类和继承:访问控制:protected
    第十三章类和继承:访问控制:protected提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:访问控制:protected提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录第十三章类和继承:访问控制:protected前言一、访问控制:protected总结......
  • 批量生产千万级数据 推送到kafka代码
    1、批量规则生成代码1、随机IP生成代码2、指定时间范围内随机日期生成代码3、随机中文名生成代码。packagecom.wfg.flink.connector.utils;importjava.time.LocalDate;importjava.time.LocalDateTime;importjava.time.LocalTime;importjava.util.ArrayList;i......
  • python调用智能合约代码,BadFunctionCallOutput 怎么解决
    目录桌面应用使用QT5开发的,可以看看我的QT5文章BadFunctionCallOutput 怎么解决我的原因是智能合约地址填写错误python智能合约基础应用如何使用remix编写solidity智能合约并部署上链在哪进行合约部署,合约部署步骤Remix怎么复制abi和address​编辑这个ABI对应最简......
  • 代码随想录算法训练营第四十一天 | 0-1背包问题
    46.携带研究材料二维数组题目链接文章讲解视频讲解动态规划五部曲:dp[i][j]:下标i表示背包装0-i的物品(任取),j表示当前背包的最大容量,dp[i][j]表示容量为j时,装0-i的物品的最大价值递推公式:dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i])dp[i-1][j]表示j......
  • 理解 C++ 中的对象类型与绑定机制:静态绑定 vs 动态绑定
    静态绑定和动态绑定概念解释对象的静态类型:对象在声明时采用的类型,在编译期确定,无法更改。对象的动态类型:对象在运行期实际表现的类型,在运行期决定,对象的动态类型可以更改(通过多态和指针/引用的方式)。静态绑定:绑定的是对象的静态类型,某特性(比如函数调用)依赖于对象的静......
  • 代码随想录第四十一天 | 59.斐波那契数列,70.爬楼梯,71.使用最小花费爬楼梯
     59.斐波那契数列看完想法:虽然是最简单的动态规划问题,但还是要按照五部曲来分析intfib(intn){if(n<=1)returnn;vector<int>dp(n+1);//用n+1的原因是,定义数组时这个意思是数组的长度,n+1的话最后一个就是dp[n]dp[0]=0;......
  • MyBatis Plus Generator代码生成
    一、MyBatisPlusGeneratorMyBatisPlus是一个功能强大的持久层框架,它简化了MyBatis的使用,提供了许多便捷的功能。其中,MyBatisPlusGenerator是一个强大的代码生成器,可以帮助我们快速地根据数据库表结构生成对应的实体类、映射文件和DAO接口。在MyBatisPlusGenerator中......
  • R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
    全文链接:http://tecdat.cn/?p=18860最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出。时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集以研究数据的特征并提取有意义的统计信息来预测序列的未来值简介时序分析有两种方法,即频域和时域。前者主......
  • 漏洞复现之CVE-2012-1823(PHP-CGI远程代码执行)
    关于CGI知识点CGI模式下的参数:-c指定php.ini文件的位置-n不要加载php.ini文件-d指定配置项-b启动fastcgi进程-s显示文件源码-T执行指定次该文件-h和-?显示帮助题目如下图,没有什么发现目录扫描一下dirsearch-uhttp://47.96.234.169:32349/发现info.php,直接......
  • SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为
    全文链接:http://tecdat.cn/?p=32118最近我们被客户要求撰写关于电商购物网站的用户行为的研究报告,包括一些图形和统计输出。假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢? ( 点击文末“阅读原文”获取完整文档、数据 )这个功能在很多电商类网站都有,那么,通过SQLS......