2021-10-20

C++练习

把C++Plus的基础看了看,感觉不写代码还是不行,找到了贺利坚老师的博客例题,这里把我写的代码做个保存,也与答案做个对照。
链接: C++程序设计课程主页-2015级.

第二周习题

一、胖子不想说体重

以下为题目要求:

成年男性的标准体重公式为:标准体重(kg)=身高(cm)−100
  超标准体重20%为超重,比标准体重轻20%为超轻。请编写C++程序,输入身高和体重,完成下面的任务:
  (1)计算并输出标准体重。
  (2)计算出标准体重,当超重时,请给出提示。
  (3)计算出标准体重,当超重时给出提示,不超重时也给提示。
  (4)计算出标准体重,输出体重状态(正常/超重/超轻)
  调试完程序,请发布博文,作为上机报告。
解答:
思路:首先是得到输入,然后用判断语句来指向不同结果。
代码如下

#include <stdio.h>
#include <iostream>

using namespace std;

void week_2_2() {

	float weight_in = 0;
	float height_in = 0;
	float standard_w = 0;
	float percent_w = 0;
	cout << "请输入你的体重/kg:\n";
	cin >> weight_in;
	cout << "请输入你的身高/cm:\n";
	cin >> height_in;
	cout << "你的体重是:" << weight_in << "kg" << endl;
	standard_w = height_in - 100;
	cout << "你的标准体重应是:" << standard_w << "kg" << endl;
	float standard_wmax = standard_w * 1.2;
	float standard_wmin = standard_w * 0.8;
	if (weight_in <= standard_wmax && weight_in >= standard_wmin)
		cout << "你的体重正常" << endl;
	else 
		if (weight_in > standard_wmax)
			cout << "你的体重偏重" << endl;
		else
			cout << "你的体重偏轻" << endl;
int main() {

	cout << "第三章习题"<<endl;
	//t3_6_6();
	//t3_6_9(12.12,15.42);
	week_2_2();
	return 0;
}


跟标准答案对照后,确实是答案要精简一点。

小试循环

写出实现下面求解任务的程序【提示:m是一个变量,在程序中输入】
  (1)求1到m的平方和
  (2)求1到m间所有奇数的和
  (3)求1到m的倒数和,即
  在这里插入图片描述
代码如下:

#include <stdio.h>
#include <iostream>
#include <cmath>
void week_2_3() {
	int input_num;
	double result_1 = 0, result_2 = 0, result_3 = 0, result_4 = 0, result_5 = 1;
	cout << "please input a integer number:" << endl;
	cin >> input_num;
	for (double i = 1.0; i <= input_num; i++)
	{
		result_1 = result_1 + pow(i, 2);//计算1-m的平方和
		int n = int(i);
		if (n % 2 == 1)//计算1-m所有奇数的和
		{
			result_2 = result_2 + i;
		}
		result_3 = result_3 + (1.0 / i);//计算1-m的倒数和
		result_4 = result_4 + pow(-1, i + 1) * double(1.0 / i);//求(4)
		result_5 = result_5 * i;//求m!
	}
	cout << "1-m的平方和:" << result_1 << endl;
	cout << "计算1-m所有奇数的和:" << result_2 << endl;
	cout << "计算1-m的倒数和:" << result_3 << endl;
	cout << "求(4):" << result_4 << endl;
	cout << "求m!:" << result_5 << endl;
}

int main() {

	cout << "第三章习题"<<endl;
	week_2_3();
	return 0;

}

与答案相对比,确实发现了几个需要注意的重点,主要是类型转换会发生的损失,尤其是double>int>double转化时会出现数据丢失,在进行小数计算时容易导致错误,尤其注意代码中(1.0/i),在C++Primer Plus6里找到原因。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值