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

课程首页地址: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;
}

程序输出为:

时间: 2024-10-03 04:52:20

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

第11周 上机报告 2:英尺到米的转换表

题目要求:编程序生成一张从英尺到米的转换表(1米大约等于3.28英尺),以方便工厂里工人师傅使用.输出形式如下图所示,第i行第j列的值vij代表i*10+j英尺对应的米数.每输出10英尺的转换表后,另起一行输出. I2M 0 1 2 3 j 5 6 7 8 9 0 0 0.3 0.61 0.91 1.22 1.52 1.83 2.13 2.44 2.74 1 3.05 3.35 3.66 3.96 4.27 4.57 4.88 5.18 5.49 5.79 2                  

C++第10周项目5扩展参考——在北京买房

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目5扩展:在北京买房]现在北京有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万.如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子?  参考解答: #include <iostream> using namespace std; int main( ) { double hou

C++第10周项目1扩展参考——求和

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目1扩展(选做)]从键盘输入20个整数,输出它们的和. //用for循环完成,其他循环自行完成 #include <iostream> using namespace std; int main( ) { int sum=0,i,n; for(i=0;i<20;++i) { cin>>n; sum+=n; } cout<<"s

C++第12周项目6扩展——三角函数表

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目6扩展(选做)-编制三角函数表] 要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值.要求不能用数学库函数,将项目6中的mysin函数拷贝到这个程序中,用于计算sin值.例如show_sin_table(0, 90)可以显示出所有

C++第10周项目2参考——分数的累加

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目2-分数的累加]编程序,输出1/3-3/5+5/7-7/9-+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条"由易到难"的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来.(1)1+2+...+20  --这个应该会 //用for循环完成,其他循环自行完成 #include <iostream> using namespa

C++第13周项目2扩展——最大公约数

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目2扩展--最大公约数] 分别用非递归函数和递归函数,用辗转相除法求两个正整数a和b的最大公约数,并体会迭代法和递归法在处理问题上各自的思路. 参考解答: //迭代解法 #include "iostream" using namespace std; int gcd(int x, int y); void main() { int m,n; cout<

2013C++第10周项目——循环结构程序设计

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1:利用循环求和]求1000以内所有偶数的和要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点. [项目2-分数的累加]编程序,输出1/3-3/5+5/7-7/9-+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条"由易到难"的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来.(1)1+2+...+

C++第15周项目4扩展——带姓名的多科成绩单

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目4-多科成绩单]用二维数组score[][4]保存同学们的高数.英语.C++成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号).在此基础上,完成下面的操作:(1)设计输入成绩的函数,输入3科成绩后可以自动求出总分,并将数据全保存到数组中:(2)输出各门课及总分的最高成绩.最低成绩.平均成绩和成绩的标准偏差:(3)输出考得总分最高.最低同学的人数及

2014秋C++第10周项目4参考-大奖赛计分

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.   [项目4:大奖赛计分]在歌手大奖赛中,有10个评委为参赛的选手打分,分数为0~10分.选手最后得分为:去掉一个最高分和一个最低分后,取其余8个分数的平均值.请编写一个程序实现这个程序. 参考解答: #include <iostream> using namespace std;