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

程序输出为:






目录
相关文章
|
1月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
103 7
|
12天前
|
存储 C++
C++的list-map链表与映射表
这篇教程介绍了C++中`list`链表和`map`映射表的基本使用。`list`链表可通过`push_front()`、`push_back()`、`pop_front()`和`pop_back()`进行元素的添加和删除,使用迭代器遍历并支持在任意位置插入或删除元素。`map`是一个键值对的集合,元素自动按键值排序,可使用下标操作符或`insert()`函数插入元素,通过迭代器遍历并修改键值对,同时提供`count()`方法统计键值出现次数。教程中包含多个示例代码以帮助理解和学习。
15 2
|
10天前
|
程序员 C语言 C++
【C++语言】继承:类特性的扩展,重要的类复用!
【C++语言】继承:类特性的扩展,重要的类复用!
|
1月前
|
存储 C++ UED
【C++】飞机大战项目记录
通过上面的设计,我们实现来看飞机大战的主要功能
51 4
|
1月前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
26 0
【C++】string学习 — 手搓string类项目
|
1月前
|
C++
C++入门项目——通讯管理系统
C++入门项目——通讯管理系统
|
1月前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
|
3天前
|
C++
C++一分钟之-类与对象初步
【6月更文挑战第20天】C++的类是对象的蓝图,封装数据和操作。对象是类的实例。关注访问权限、构造析构函数的使用,以及内存管理(深拷贝VS浅拷贝)。示例展示了如何创建和使用`Point`类对象。通过实践和理解原理,掌握面向对象编程基础。
30 2
C++一分钟之-类与对象初步
|
4天前
|
存储 编译器 C++
|
4天前
|
C++
C++类和类模板——入门
C++类和类模板——入门
10 1