标题:[求助]能编译, 但执行不了~~(解决^&^)
只看楼主
canon787
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-6-28
 问题点数:0 回复次数:10 
[求助]能编译, 但执行不了~~(解决^&^)
下面一段程序, 求20的阶乘,照抄书上的, 能编译但却执行不了, 为什么?
我用VC++ 弄的`~
main()
{int i=1;
float factor=1;
do
{factor=factor*i;
i++;
}while(i<=20);
printf("20!=%f\n",factor);
}

我另外改了一个, 却发现得到的结果似乎不是那么回事~~请各位指点~~
#include<stdio.h>
main()
{int i;
float a=20;
do
{a=a*i;--i;
}while(i>=0);
printf("20!=%f\n",a);
}

[此贴子已经被作者于2006-6-30 22:27:01编辑过]

搜索更多相关主题的帖子: factor 编译 float int 
2006-06-29 23:52
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
}while(i&gt;=0);

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-06-30 00:16
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
main()
{int i=1;
float factor=1;
do
{factor=factor*i;
i++;
}while(i<=20);
printf("20!=%f\n",factor);
}

can run! my compiler CC

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-06-30 00:18
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
得分:0 
main()
{int i=1;
float factor=1;
do
{factor=factor*i;
i++;
}while(i<=20);
printf("20!=%f\n",factor);
}

是正确的,但在VC++中运行,必须加上头文件#include<stdio.h>
最好把main改为void main

2006-06-30 08:50
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
在VC++中运行,必须加上头文件#include<stdio.h>
最好把main改为void main
-----------------------------------------------------
其实不要纵容自己,在哪儿都要:
1。包含必要的“头文件”
2。显式指明函数类型

在一个执法宽松环境下会把人宠坏的!

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-30 12:10
wolf_elite
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-6-26
得分:0 
[QUOTE]我另外改了一个, 却发现得到的结果似乎不是那么回事~~请各位指点~~
#include<stdio.h>
main()
{int i;
float a=20;
do
{a=a*i;--i;
}while(i>=0);
printf("20!=%f\n",a);
}[/QUOTE]
是不是改为float a=1;int i=20好一些,我很菜的!

2006-06-30 12:44
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
改为float a=1;int i=20完全可行!
有编译条件的话,不妨运行一下。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-30 14:37
jackey163
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2005-7-21
得分:0 

#include<stdio.h>

void main()
{
int i=1;

float factor=1;
do
{
factor=factor*i;

i++;
}while(i<=20);

printf("20!=%f\n",factor);
}

能运行
但是我不保证结果是对的,顺便问下float是多少位的,会不会溢出?

以前我面试人家也问过我一个这样的问题,我也象上面一样做,结果肯定是错的.

你们应该学过,求阶层要用一个算法的,不能这么乘,会溢出的,

数组做的吧,我太记得了,递归加的,不能乘


.net 方面可以交流下 MSN:jackeyhuang123@
2006-06-30 15:13
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
float 最大可达10的38次幂,
所以存储20的阶乘绰绰有余。
MM可能混淆了高精度与溢出!

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-30 15:22
canon787
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-6-28
得分:0 

谢谢各位, 而且我发现我改的程序为什么得到的结果不同了,本来我改成的是:
#include<stdio.h>
main()
{int i;
float a=20;
do
{a=a*i;--i;
}while(i>=0);
printf("20!=%f\n",a);
}

实际上应该为:
#include<stdio.h>
void main()
{int i=20;
float a=20;
do
{a=a*i;
--i;
}while(i>0);
printf("20!=%f\n",a);
}


呵呵


Learning by heart
2006-06-30 22:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-75781-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.508543 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved