| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1926 人关注过本帖
标题:求一算法,谢了!
只看楼主 加入收藏
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
 问题点数:0 回复次数:49 
求一算法,谢了!
输入一个整数,求其阶乘的最后一个非零数。从结果的最后一位开始数的非零数。

比如输入6,他的阶乘是720,那么结果就是2,

在如输入4,他的阶乘是24,结果是4。

谢了
搜索更多相关主题的帖子: 算法 
2006-04-08 14:24
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 

你只要把每次得到的乘积的最后一位记录下来然后和下一个数相乘就可以了


此人已消失
2006-04-08 14:30
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

呵呵,按2楼说的做的
#include<stdio.h>
int amass=1;
int find_func(int i)
{
while(2)
{
if(i%10==0)
i=i/10;
else if(i>10)
i=i%10;
else
return i;
}
}
int calculate(int k)
{
amass*=k;
amass=find_func(amass);
}
main()
{
int num,k;
printf("Please input the length of the factorial:");
scanf("%d",&num);
for(k=1;k<=num;k++)
calculate(k);
printf("%d",amass);
getch();

}


对不礼貌的女生收钱......
2006-04-08 14:56
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用soft_wind在2006-4-8 14:56:00的发言:

呵呵,按2楼说的做的
#include<stdio.h>
int amass=1;
int find_func(int i)
{
while(2)
{
if(i%10==0)
i=i/10;
else if(i>10)
i=i%10;
else
return i;
}
}
int calculate(int k)   /*改为void calculate(int k)*/
{
amass*=k;
amass=find_func(amass);
}
main()
{
int num,k;
printf("Please input the length of the factorial:");
scanf("%d",&num);
for(k=1;k<=num;k++)
calculate(k);
printf("%d",amass);
getch();

}


对不礼貌的女生收钱......
2006-04-08 14:57
仁者无敌
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2006-3-5
收藏
得分:0 
三楼挺强的啊!

I am a programmer !
2006-04-08 15:45
え元元え
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-4-7
收藏
得分:0 
都好努力
不愧是第一编程论坛

2006-04-08 17:05
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 
我想问一吓三楼,如果k=5呢???

2006-04-08 21:20
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 
三楼的好像不是用二楼的方法吧???

2006-04-08 21:47
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 

我的改了一下三楼的程序,如下:
#include<stdio.h>
int amass=1;
int find_func(int i)
{
while(2)
{
if(i%10==0)
i=i/10;
else if(i>10)
i=i%10;
else
return i;
}
}
int calculate(int k)
{
amass*=k;
amass=find_func(amass);
return amass;
}
void main()
{
int num,k;
printf("Please input the length of the factorial:");
scanf("%d",&num);
for(k=1;k<=num;k++)
calculate(k);
printf("%d\n",amass);

}


2006-04-08 21:50
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 
calculate函数增加了一个return amass;

2006-04-08 21:51
快速回复:求一算法,谢了!
数据加载中...
 
   



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

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