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

C++第10周项目3扩展参考——英尺到米的转换表课程首页地址 http blog csdn net sxhelijian article details 项目 3 扩展 选做 编程序生成一张从英尺到米的转换表 1 米大约等于 3 28 英尺 以方便工厂里工人师傅使用 输出形式如下图所示

大家好,我是讯享网,很高兴认识大家。

【项目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; } 

程序输出为:





小讯
上一篇 2025-04-10 09:56
下一篇 2025-01-06 23:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/129400.html