| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1021 人关注过本帖
标题:看得纠结
只看楼主 加入收藏
逆风而上
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-7
收藏
得分:0 
谁会就冒一冒头吧
2010-08-09 08:01
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:8 
解释(看注释就行了):
#include <stdio.h>
#include <string.h>
int main()
{
  int last(char* str);//函数说明语句,说明了函数last
    char str[10000];//定义了str字符数组,有10000个元素
    int temp;//定义了整形的temp
    while(scanf("%s",str)!=EOF)//循环输入
    {
       temp=last(str);//把last返回过来的值赋予temp,现在我们就看last函数
       printf("%d\n",temp);//返回的表达式值赋予temp,并打印
    }
    return 0;//结束
}
int last(char* str)//进入函数
{
  int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2};//定义了mod[20],并赋予了初值
    int length=strlen(str),a[10000],i,c,ret=1;//定义了length,它的值就为str的长度,和a[10000]一万个元素,i,c,ret赋予初值1
    if (length==1)//如果length也就是str的长度为1,也就只有一个字符
        return mod[str[0]-'0'];//返回mod[str[0]-‘0’]  mod也就是一个数组,0就是第一个元素,1的ascii是49,0的ascii是48,也就是返回1
    for (i=0;i<length;i++)//循环,i赋予初值0,小于length,i++
        a[i]=str[length-1-i]-'0';//把str[length-1-i]-'0'   length也就是长度,减去1,再减i,再减去48,赋予a[i]
    for (;length;length-=!a[length-1])//继续循环
    {
        ret=ret*mod[a[1]%2*10+a[0]]%5;//ret就是1,ret乘以mod[a[1]%2*10+a[0]]括号里的表达式好好算算就出来了,带一个值进去
        for (c=0,i=length-1;i>=0;i--)//循环
            c=c*10+a[i],a[i]=c/5,c%=5;//一样的,带一个值进去就什么都清楚了
    }
    return ret+ret%2*5;//返回一个值,ret是因上面的表达式变化,这里也说不清楚
}


欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-09 09:29
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:2 
说实话,这注释我也能写,就是看不懂思想
但我运行了N次,这代码是对的闭关还是没弄懂
版主给我和LZ说说思想吧
2010-08-09 09:42
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
说实话,这个程序我也没看懂是干什么的

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-09 10:38
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
连sunyh1999大哥都没看懂,我果断舍弃
前面还有很多问题待解决
2010-08-09 12:14
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
LZ该结贴了,记得给我点辛苦分
2010-08-09 12:16
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
要看一个阶乘数最后有多少个零,我觉得就是看看阶乘过来能乘多少个 10。
从这下手就能分析出来应该怎么求这个。单琢磨这个代码怎么写的没什么用,自己研究怎么算阶乘后面有多少个零,不用全研究透,搞出点规律之后再参考参考这个代码,应该一会就能弄出来。搞这种类型的算法一般我觉得挺无聊的,意义不大,还费劲,所以我一般不爱想这种东西。不过搞 OJ 什么的人,肯定是乐此不疲了~
2010-08-09 12:18
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
请大侠指条明路,我该怎样继续与C共舞,才能收到最佳成效和乐趣
2010-08-09 12:23
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
做你有兴趣的方向,就能收到最佳成效和乐趣。

就和做题一样,有人喜欢研究新的方法解决老的问题,有人喜欢用老的方法解决新的问题。有人爱追求做好后的成就感,有人爱享受做题时的喜悦感。人各有志,喜欢什么做什么最好(如果有自己选择的余地的话)~
2010-08-09 12:34
快速回复:看得纠结
数据加载中...
 
   



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

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