| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 978 人关注过本帖
标题:[求助]能编译, 但执行不了~~(解决^&^)
只看楼主 加入收藏
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
快速回复:[求助]能编译, 但执行不了~~(解决^&^)
数据加载中...
 
   



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

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