当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 1:31 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
1公吨等于35273.92盎司。写一个程序,以盎司为单位来读入一盒早餐麦片(喜瑞尔)的重量,算成公吨之后,输出这个重量,同时输出总共需要多少盒麦片,才能凑足1公吨。你的程序应该允许用户任意重复计算。


以下是我写的代码,总觉得有些繁琐,有没有更好的方法来解这个问题呢。本人新手,请各位多多指教。

代码:
#include <iostream>
 using namespace std;
 int main()
 {
 const double ton=35273.92;
 double weight;
 int amount;
 while(1)
 {
 cout<<"please input the weight (ounce)of per cornmeal: ";
 cin>>weight;
 if (weight>0)
 {
 amount=ton/weight;
 if (amount<1)
 cout<<"the number you input is to large\n";
 else
 {
 cout<<"each cornmeal has "<<weight/ton<<" ton"<<endl;
 cout<<"you need "<<amount<<" to get 1 ton\n";
 }
 }
 else
 cout<<"error,please input a number larger than zero\n";
 }
 return 0;
 }


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


最后由 我就是我2 编辑于 2009-06-26 12:52,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 1:47 
头像

注册: 2007-09-26 17:34
帖子: 618
送出感谢: 0 次
接收感谢: 2
代码:
#include<stdio.h>
int main()
{
int i,n;
double buf;
for(;;)
{
scanf("%d\n",&i);//不确定有没有“\n”
printf("%f\n",(double)i/35273.92);
buf=35273.92/(double)i;
n=buf;
if(buf>(double)n)n++;
printf("%f\n",n);
}
}

用C语言写的


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 2:03 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
引用:
scanf("%d\n",&i);//不确定有没有“\n”

没有 \n"
引用:
if(buf>(double)n)

这里的布尔值是假的呀,朋友,你刚才才赋值给n=buf。

汗。朋友,你还是有些情况没考虑到。或者是我的想法多了。我考虑了输入的情况比较多。正数、负数、零以及比1 ton=35273.92 还要大的数。


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 2:16 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
windwhinny 写道:
代码:
#include<stdio.h>
int main()
{
int i,n;
double buf;
for(;;)
{
scanf("%d\n",&i);//不确定有没有“\n”
printf("%f\n",(double)i/35273.92);
buf=35273.92/(double)i;
n=buf;
if(buf>(double)n)n++;
printf("%f\n",n);
}
}

用C语言写的



经过本人的修改,你写的也能得到正确的输出了,。

代码:
#include<stdio.h>
int main()
{
int i;
double buf,n;
for(;;)
{
scanf("%d",&i);
printf("%f\n",(double)i/35273.92);
buf=35273.92/(double)i;
n=buf;
printf("%f\n",n);
}
}


不排除会输入小数,如果输入小数就会狂闪了。有什么办法解决吗


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


最后由 我就是我2 编辑于 2009-06-26 2:26,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 2:18 
头像

注册: 2007-09-26 17:34
帖子: 618
送出感谢: 0 次
接收感谢: 2
代码:
if(buf>(double)n)

这里要说明一下,n声明的类型是int,buf的类型是double。如果buf为5.5的话,n=buf之后,n只能得到buf的整数位,即为5.所以要用if(buf>(double)n)这一句来确定buf是否有小数位,如果有,就给n加上个1。输入的情况确实是要判断一下,如果输入的是负数,就略过,但我程序里没有写这个判断。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 2:20 
头像

注册: 2007-09-26 17:34
帖子: 618
送出感谢: 0 次
接收感谢: 2
n计算的是需要的盒子的数量,但你却声明为double型。。。。n不能有小数的,必须是整数。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 2:33 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
windwhinny 写道:
n计算的是需要的盒子的数量,但你却声明为double型。。。。n不能有小数的,必须是整数。


我知道错了,朋友。
但是我运行你写的程序发觉不对头,爱因斯坦说过,理论不应该和经验发生冲突。
$ ./a.out
25
0.000709
0.000709

当我输入0.2时,就是不停地输出
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000^C


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 2:37 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
不会是到最后我写的能达到目的吧,虽然有点烦

引用:
$ ./1.out
please input the weight (ounce)of per one cornmeal: 25
each cornmeal has 0.000708739 ton
you need 1410 to get 1 ton
please input the weight (ounce)of per one cornmeal: 36
each cornmeal has 0.00102058 ton
you need 979 to get 1 ton
please input the weight (ounce)of per one cornmeal: 25
each cornmeal has 0.000708739 ton
you need 1410 to get 1 ton
please input the weight (ounce)of per one cornmeal: 4545
each cornmeal has 0.128849 ton
you need 7 to get 1 ton
please input the weight (ounce)of per one cornmeal:


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 5:27 
头像

注册: 2006-05-20 14:03
帖子: 898
送出感谢: 0 次
接收感谢: 0 次
纠缠细节 :em20


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 11:09 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
peachcolor 写道:
纠缠细节 :em20

朋友,细节决定成败。
一个电脑做不了什么,如果加上一个糟糕的程序员的话,它的(破坏)作用会很大。
写程序要严谨 :em01


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 11:26 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
我就是我2 写道:
1公吨等于35273.92盎司。写一个程序,以盎司为单位来读入一盒早餐麦片(喜瑞尔)的重量,算成公吨之后,输出这个重量,同时输出总共需要多少盒麦片,才能凑足1公吨。你的程序应该允许用户任意重复计算。

引用:
以盎司为单位来读入一盒早餐麦片(喜瑞尔)的重量,算成公吨之后,输出这个重量
直接计算:一盒公吨重量=一盒盎司重量/35273.92
引用:
同时输出总共需要多少盒麦片,才能凑足1公吨
直接计算:1/一盒公吨重量,再取整即可


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 有没有更好的方法来解这个问题C++
帖子发表于 : 2009-06-26 13:05 
头像

注册: 2008-12-13 10:55
帖子: 1215
地址: the Earth
送出感谢: 2
接收感谢: 3
引用:
引用:
以盎司为单位来读入一盒早餐麦片(喜瑞尔)的重量,算成公吨之后,输出这个重量
直接计算:一盒公吨重量=一盒盎司重量/35273.92
引用:
同时输出总共需要多少盒麦片,才能凑足1公吨
直接计算:1/一盒公吨重量,再取整即可



倒数关系,鉴定完毕!

经过修改的代码如下,变量少了,但是提示语是不可少的。感谢帮助过我的朋友 :em01
代码:
#include <iostream>
using namespace std;
int main()
{
float weight;
while(1)//无限循环
{
cout<<"please input the weight (ounce)of per cornmeal: ";
cin>>weight;
if (weight>0)//输入是正数的情况
{
cout<<"each cornmeal has "<<weight/35273.92<<" ton\n";
cout<<"you need "<<int(35273.92/weight)<<" to get 1 ton\n";
}
else//输入是非正数的情况
cout<<"error,please input a number larger than zero\n";
}
return 0;
}



这又产生一个问题,如果输入的别的字符,就会无限的输出以别的字符的ansi码的值作为weight的值。也就是说,这里需要判断输入的是不是数字
是不是要调用函数来判断才行啊,如果是的话,此函数应该如何定义。新手完全不知道怎么办了。请各位朋友拯救新手于水深火热的苦海之中吧


_________________
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译