C++第10周项目3扩展参考——英尺到米的转换表

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565【项目3扩展(选做)】编程序生成一张从英尺到米的转换表(1米大约等于3.28英尺),以方便工厂里工人师傅使用。输出形式如下图所示,罗列了从0英尺到99英尺对应的米数,即第i行第j列的值vij代表i*10+j英尺对应的米数。例如,通过下图所示,我们可以方便地查到17英尺

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目3扩展(选做)】编程序生成一张从英尺到米的转换表(1米大约等于3.28英尺),以方便工厂里工人师傅使用。输出形式如下图所示,罗列了从0英尺到99英尺对应的米数,即第i行第j列的值vij代表i*10+j英尺对应的米数。例如,通过下图所示,我们可以方便地查到17英尺相当于5.18米。只输出内容即可,不用考虑表格线。

提示:每输出10英尺的转换表后,另起一行输出。为使输出美观,可以在各项中间用’\t’分隔,或者用课本p53讲的输入输出控制流。再扩展,你还可以输出真正的表格。


本题给出一个较完整的设计过程。

观察一共要输出11行,第一行特殊,是“表头”,需特殊处理,其他行需要计算。
采用“自顶向下、逐步求精”的思路,程序分为两个部分:

(1)输出第一行;  
(2)输出后面的10行;  

可是有人就要将第一行与后10行搅在一起做,中间还加了if等判断;后来,行号i与计算中需要用到的运算量不对应了,产生了更复杂的计算,自找苦吃。
多想想自顶向下,要先有宏观的框架。

下面解决“(1)输出第一行”的问题
可以一个cout解决。简单,不漂亮,好象没有学过循环的样子。
写作下面的样子,不难。
cout<<"I2M\t";  //Inch2Meter的缩写,米到英尺,2念作to
for(i=0;i<=9;i++)  
   cout<<i<<"\t";  
cout<<endl; //为下面的工作先做点贡献,保证以后的输出从新的一行开始  

再解决“(2)输出后面的10行”的问题
一共输出10行嘛,行号定为从0到9,又是一个典型的“计数型”,就用0到9,有
for(i=0;i<=9;i++)  
{  
  (2.1)输出第i行;  
  换行; //cout<<endl;就可以了  
}  

 对于“(2.1)输出第i行;”,每行先输出行号,再接着10个计算得到的数值,又是计数型的循环
cout<<i<<"/t";   //输出行号  
for(j=0;j<=9;j++)  
{  
  vij=(i*10+j)/3.28;  
  cout<<vij<<"/t";   //可以不用vij变量,而是直接在cout中写表达式(i*10+j)/3.28,但用vij更漂亮  
}  

就这样了,问题就这样解决了。具体写程序时,考虑到输出需要对齐,

完整的参考代码如下:

#include<iostream>
#include<iomanip>   //用于支持格式控制
using namespace std;
int main()
{
	int i,j; //i,j用作计数,整型最好
	double vij; //vij用小数,用成int自找苦吃
	
	// (1)输出第一行;
	cout<<"I2M\t";
	for(i=0;i<=9;i++)
		cout<<i<<"\t";
	cout<<endl; //为下面的工作先做点贡献,保证以后的输出从新的一行开始
	
	//(2)输出后面的10行;
	for(i=0;i<=9;i++) //前面的i的使命已经完成,在此可以挪作他用,但必须赋好初值
	{ 
		cout<<i<<"\t";   //输出行号
		cout<<setprecision(4);  //设置输出精度为4
		for(j=0;j<=9;j++)
		{
			vij=(i*10+j)/3.28;
			cout<<vij<<"\t";  
		}
		cout<<endl;
	}
	cout<<"不容易吗? 要头脑清楚地做,别碰运气。"<<endl;
}

程序输出为:






目录
相关文章
|
12月前
|
存储 C++ UED
【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展
本文介绍了如何通过四步实现C++插件化编程,实现功能定制与扩展。主要内容包括引言、概述、需求分析、设计方案、详细设计、验证和总结。通过动态加载功能模块,实现软件的高度灵活性和可扩展性,支持快速定制和市场变化响应。具体步骤涉及配置文件构建、模块编译、动态库入口实现和主程序加载。验证部分展示了模块加载成功的日志和配置信息。总结中强调了插件化编程的优势及其在多个方面的应用。
1093 180
WK
|
11月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
531 1
|
12月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
2010 3
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
218 3
|
存储 设计模式 编译器
C++(十三) 类的扩展
本文详细介绍了C++中类的各种扩展特性,包括类成员存储、`sizeof`操作符的应用、类成员函数的存储方式及其背后的`this`指针机制。此外,还探讨了`const`修饰符在成员变量和函数中的作用,以及如何通过`static`关键字实现类中的资源共享。文章还介绍了单例模式的设计思路,并讨论了指向类成员(数据成员和函数成员)的指针的使用方法。最后,还讲解了指向静态成员的指针的相关概念和应用示例。通过这些内容,帮助读者更好地理解和掌握C++面向对象编程的核心概念和技术细节。
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
1176 0
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
455 0
|
8月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
4月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
95 0
|
4月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
173 0