| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 695 人关注过本帖
标题:求讲解 一个函数输入十六进制数,输出相应十进制数
只看楼主 加入收藏
autumnyellow
Rank: 2
等 级:论坛游民
帖 子:72
专家分:75
注 册:2015-4-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
求讲解 一个函数输入十六进制数,输出相应十进制数
//写一个函数输入十六进制数,输出相应十进制数
#include<stdio.h>
# define MAX 1000
int main()
{
    int htoi(char s[]);
    int c,i,flag,flag1;
    char t[MAX];
    i=0;
    flag=0;
    flag1=1;
    printf("input a HEX number:");
    while ((c=getchar() )!= '\0' && i<MAX &&flag1)
    {
        if(c>='0' &&c<'9'||c>='a'&&c<='f'||c>='A' && c<='F')
        {
        flag=1;
        t[i++]=c;
        }
        else if (flag)
        {
                t[i]='\0';   /*  这个地方不懂,t[i]不是最后一个输入字符吗?'\0'这样赋值覆盖了不是最后一个输入字符吗?
                                                为什么不是  t[i+1]='\0'   ?  求讲解       */
            printf("decimal number %d\n",htoi(t));
            printf("continue or not ?");
            c=getchar();
            if (c=='N'||c=='n')
                flag1=0;
            else
            {
                flag=0;
                i=0;
                printf("\n input a HEX number:");
            }
        }
    }
    return 0;
}


int htoi(char s[])
{
    int i,n;
    n=0;
    for (i=0;s[i]!='\0';i++)
    {
        if(s[i]>='0' && s[i]<='9')
            n= n*16+s[i]-'0';
        if(s[i]>='a' && s[i]<='f')
            n= n*16+s[i]-'a'+10;
        if(s[i]>='A' && s[i]<='F')
            n= n*16+s[i]-'A'+10;
    }
    return (n);
}


/*输出:
input a HEX number:a11
decimal number 2577
continue or not ?n
*/
2015-07-13 00:17
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:20 
你输入的a11是一个字符串!字符串的结尾符号是:\0
2015-07-13 07:54
快速回复:求讲解 一个函数输入十六进制数,输出相应十进制数
数据加载中...
 
   



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

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