| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:写的不好。。。。求指点。。。
取消只看楼主 加入收藏
hywhll888
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2011-6-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
写的不好。。。。求指点。。。
#include <stdio.h>
#include <math.h>
#include <string.h>
void main()
{
    void sjz(char a[80]);
    char a[80];
    gets(a);
    sjz(a);
}


void sjz(char a[80])
{
    int i,k=0,n,j,r=16,w=0;
    n=strlen(a);
    for(i=0;a[i]!='\0';i++)
    {
        if(a[i]=='x'||a[i]=='X')
        {
            n=n-1;
            continue;
        }
        if(n>=3)
        {
            k=16;
            for(j=2;j<n;j++)
                k=k*r;
            if(a[i]>='0'&&a[i]<='9')
            {
                k=k*(a[i]-'0');
            }
            else
                if(a[i]>='a'&&a[i]<='f')
                {
                    k=k*(10+a[i]-'a');
                }
                else
                    if(a[i]>='A'&&a[i]<='F')
                    {
                        k=k*(10+a[i]-'A');
                    }        
                    n=n-1;
                    printf(" %d ",k);
        }
        else
            if(n==2)
            {
                k=16;
                if(a[i]>='0'&&a[i]<='9')
                {
                    k=k*(a[i]-'0');
                }
                else
                    if(a[i]>='a'&&a[i]<='f')
                    {
                        k=k*(10+a[i]-'a');
                    }
                    else
                        if(a[i]>='A'&&a[i]<='F')
                        {
                            k=k*(10+a[i]-'A');
                        }
                        n=n-1;
                        printf(" %d ",k);
            }
            else
                if(n<2)
                {
                    k=0;
                    if(a[i]>='0'&&a[i]<='9')
                    {
                        k=k+(a[i]-'0');
                    }
                    else
                        if(a[i]>='a'&&a[i]<='f')
                        {
                            k=k+(10+a[i]-'a');
                        }
                        else
                            if(a[i]>='A'&&a[i]<='F')
                            {
                                k=k+(10+a[i]-'A');
                            }
                            printf(" %d ",k);
                }
                w=w+k;
    }
    printf("\n");
    printf("w=%d\n",w);
}


觉得有点太长了。。。。  请给个比较短的算法,最好不要用指针。。。偶看不懂。。。
功能是输入16进制数,按10进制输出。。。。。感觉也太长了

[ 本帖最后由 hywhll888 于 2011-7-14 21:39 编辑 ]
搜索更多相关主题的帖子: continue include 
2011-07-14 18:04
hywhll888
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2011-6-9
收藏
得分:0 
回复 5楼 hellovfp
不是畏难,是还没学到指针
2011-07-15 21:43
快速回复:写的不好。。。。求指点。。。
数据加载中...
 
   



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

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