从零开始学习c++之程序计算的简单应用

本文提供了一系列C++编程练习题目,包括猜数游戏、素数查找、日历打印等,帮助初学者掌握选择和循环结构及vector的使用。

在学习了选择和循环结构以及vector的简单使用后,可以进行下面一些题目的简单应用

1.//编写猜数游戏程序 系统随机一个1000以内数,猜出这个数

        int n;       //输入数
	int num = 1;     //随机数
	int count = 1;   //次数
	srand(time(NULL)); 
	num = rand() % 1000;           //随机1000以内数
	do
	{
		cout << "猜一个数" << endl;
		cin >> n;
		count++;
		if (n == num)
		{
			break;
		}
		else if(n>num)
		{
			cout << "大了" << endl;
		}
		else if (n < num)
		{
			cout << "小了" << endl;
		}	
	} while (true);
	cout << count << "次后成功" << endl;

2.//找出0-100之间所有素数   (素数:除了1和他本身以外不能再被其他数整除)

        bool isPrime = 1;            //标识符
	vector<int> primes;         //存放素数
	for (int i = 2; i < 101; i++)          //素数最小为2
	{
		isPrime = 1;
		for (int j = 2; j < i; j++)         //遍历小于i的数
		{
			if (i % j == 0)        //取余,能整除则不是素数
			{
				isPrime = 0;
			}
		}
		if (isPrime == 1)
		{
			primes.push_back(i);        //放入vector
		}
	}
	for (int i = 0;i < primes.size();i++)
	{
		cout << primes[i] << endl;
	}


3.//循环打印1997年7月的日历
   //已知1997年7月1日周二,香港回归
  
        //1.定义遍历
	int day = 31;           //7月共有31天
	int dayOfWeek = 2;     //周二
	cout << "一\t二\t三\t四\t五\t六\t日" << endl;
	//先打印\t 周几就打印几个          每个月第一天要打印\t来表示1号是周几
	for (int i = 0; i < dayOfWeek-1; i++)
	{
		cout << "\t";
	}
	//循环打印日子
	//cout << 1 << endl;
	for (int i = 1; i <= day; i++)
	{
		cout << i ;
		if ((i + dayOfWeek - 1)%7==0)       //判断是否是周日 则换行    dayOfWeek=2
		{
			cout << "\n";
		}
		else
		{
			cout << "\t";
		}
	}

4.//一个古老的传说,国王感谢发明了国际象棋的人,答应他一个要求,发明人提出:棋盘第一个格子放1粒米,第二个格子放2粒米,第三个格子放4粒,以此类推,直到放满64个格子。计算一下至少放1000000000粒米需要多少个格子

        unsigned int i = 1;      //当前格子米数
	int count = 1; //当前所处格子数
	int total = 0;   //之前所有米数
	for (count = 1;count<=33;count++)
	{
		cout << count<<"\t";   //打印当前格子数
		i = 1 << (count-1);      //左移变大
		total += i;
		cout << "i:" << i << "\t"<<"total:" << total << endl;
		if (total >= 1000000000)
		{
			break;
		}		  		
	}


5.//编写一个求解二元一次方程组的程序    (用公式求解x1,x2)

//输入数据
	double a;     //a!=0
	double b;   
	double c;
	//输出结果数据
	double x1;
	double x2;
	cout << "Enter a b c   (a!=0)";
	cin >> a >> b >> c;
	double temp = b*b - 4 * a*c;
	if (temp<0)    //无解
	{
		cout << "No Root" << endl;
	}
	else if(temp == 0)      //x1==x2
	{
		x1 = x2 = (-b ) / (2 * a);
		cout << "X1=" << x1 << "\tX2=" << x2 << endl;
	}
	else
	{
		x1 = (-b + sqrt(temp)) / (2 * a);
		x2 = (-b - sqrt(temp)) / (2 * a);
		cout << "X1=" << x1 << "\tX2=" << x2 << endl;
	}

6.//编写一个简单的包含加减乘除的计算器程序
        cout << "Enter expression(can handle +,-,*,/)\n";
	cout << "Enter x to end expression(e.g.,1+2*3x):";
	int lval = 0;     //最左边的操作数
	int rval;
	cin >> lval;
	if (!cin)  //判断输入流是否正常
	{
		perror("no first operand");
	}
	for (char op;cin>>op;)     //读入运算符和右操作符
	{                          //重复该过程
		if (op != 'x')         //输入x时结束
		{
			cin >> rval;
		}
		if (!cin)
		{
			perror("no second operand");
		}
		switch (op)
		{
		case'+':
			lval += rval;
			break;
		case'-':
			lval -= rval;
			break;
		case'*':
			lval *= rval;
			break;
		case'/':
			lval /= rval;
			break;
		default:          //当没有运算符时输出计算结果
			cout << "Result:" << lval << endl;
			return 0;
		}
	}
 //值得注意的是 当输入5-4*2时,结果为2,而并不是-3,因为本程序并没有判断操作符的优先级

【论文复现】一种基于价格弹性矩阵的居民峰谷分时电价激励策略【需求响应】(Matlab代码实现)内容概要:本文介绍了一种基于价格弹性矩阵的居民峰谷分时电价激励策略,旨在通过需求响应机制优化电力系统的负荷分布。该研究利用Matlab进行代码实现,构建了居民用电行为与电价变动之间的价格弹性模型,通过分析不同时间段电价调整对用户用电习惯的影响,设计合理的峰谷电价方案,引导用户错峰用电,从而实现电网负荷的削峰填谷,提升电力系统运行效率与稳定性。文中详细阐述了价格弹性矩阵的构建方法、优化目标函数的设计以及求解算法的实现过程,并通过仿真验证了所提策略的有效性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事需求响应、电价机制研究或智能电网优化等相关领域的科研人员及研究生。; 使用场景及目标:①研究居民用电行为对电价变化的响应特性;②设计并仿真基于价格弹性矩阵的峰谷分时电价激励策略;③实现需求响应下的电力负荷优化调度;④为电力公司制定科学合理的电价政策提供理论支持和技术工具。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,深入理解价格弹性建模与优化求解过程,同时可参考文中方法拓展至其他需求响应场景,如工业用户、商业楼宇等,进一步提升研究的广度与深度。
针对TC275微控制器平台,基于AUTOSAR标准的引导加载程序实现方案 本方案详细阐述了一种专为英飞凌TC275系列微控制器设计的引导加载系统。该系统严格遵循汽车开放系统架构(AUTOSAR)规范进行开发,旨在实现可靠的应用程序刷写与启动管理功能。 核心设计严格遵循AUTOSAR分层软件架构。基础软件模块(BSW)的配置与管理完全符合标准要求,确保了与不同AUTOSAR兼容工具链及软件组件的无缝集成。引导加载程序本身作为独立的软件实体,实现了与上层应用软件的完全解耦,其功能涵盖启动阶段的硬件初始化、完整性校验、程序跳转逻辑以及通过指定通信接口(如CAN或以太网)接收和验证新软件数据包。 在具体实现层面,工程代码重点处理了TC275芯片特有的多核架构与内存映射机制。代码包含了对所有必要外设驱动(如Flash存储器驱动、通信控制器驱动)的初始化与抽象层封装,并设计了严谨的故障安全机制与回滚策略,以确保在软件更新过程中出现意外中断时,系统能够恢复到已知的稳定状态。整个引导流程的设计充分考虑了时序确定性、资源占用优化以及功能安全相关需求,为汽车电子控制单元的固件维护与升级提供了符合行业标准的底层支持。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 如何使用 GitHub Personal Access Token 进行克隆 当遇到 `remote: Invalid username or password` 错误时,这通常是由于身份验证失败引起的。为了更安全地访问私有仓库并避免此类错误,建议使用 GitHub Personal Access Token (PAT) 来代替密码。 #### 创建个人访问令牌 要创建一个新的 PAT,请按照以下步骤操作: 1. 登录到 GitHub 账户; 2. 访问设置页面中的开发者选项卡下的 "Personal access tokens" 部分; 3. 单击 “Generate new token”,为新令牌指定描述性的名称,并授予所需的权限范围; 4. 复制生成的令牌字符串,在后续命令中作为密码输入[^2]; #### 使用 HTTPS URL 和 PAT 克隆仓库 对于通过 HTTPS 方式的 Git 操作,可以在 URL 中嵌入令牌来完成认证过程。具体做法是在原始仓库地址前加上用户名和刚刚复制好的 PAT 字符串,格式如下所示: ```bash https://<username>:<personal_access_token>@github.com/<owner>/<repository>.git ``` 例如,如果希望从名为 `eurydyce` 的用户那里拉取 MDANSE 项目的最新更改,则应执行下面这条指令来进行克隆动作: ```bash $ git clone https://your_username:your_personal_access_token@github.com/eurydyce/MDANSE.git ``` 请注意替换 `<your_username>` 及 `<your_personal_access_token>` 为你自己的实际值。 另外一种方式是先正常克隆不带凭证信息的远程仓库链接,之后再利用缓存机制或配置全局辅助工具保存登录状态以便简化流程。比如可以通过 SSH key 或者 Credential Helper 实现自动填充账号密码的功能[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值