标题:求助,帮忙分析这个程序,我还没有开始系统学习
只看楼主
xzm0909
Rank: 1
来 自:湖北赤壁
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-3-13
结帖率:0
已结贴  问题点数:10 回复次数:3 
求助,帮忙分析这个程序,我还没有开始系统学习
1.    以下是一段高级程序语言的代码,请简述这段代码的功能,并请指出这段代码有无改进之处。
#include <stdio.h>
#include <conio.h>
#include <string.h>

int judge(char ch)
{
    if((ch>='0')&&(ch<='9'))
        return ch-'0';
    if((ch>='a')&&(ch<='f'))
        return ch-'a'+10;
}
void main(void)
{
    clrscr();//clear screen
    char x16c [20];
    scanf("%s",x16c);//input string
    int i=0,j=0;
    while(x16c[i])
    {
        j=j*16+judge(x16c[i]);
        i=i+1;
    }
    printf("%d",j);//output string
    getch();
}
搜索更多相关主题的帖子: 学习 系统 
2010-03-13 17:30
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:3 
题目  是汇编里面的 物理地址=段地址*16+偏移地址 么?

[ 本帖最后由 hahayezhe 于 2010-3-13 18:11 编辑 ]
2010-03-13 18:09
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
得分:3 
输入格式为十六进制的字符串,把它解析为十进制的数,然后打印出它的结果,如:
输入  1f
输出  31
即:1*16+15 = 31
函数judge还缺少一个返回值,当输入的字符不是在0~9,a~f中的一个时,返回的值不定,缺少处理错误字符的功能
2010-03-13 20:00
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:3 
楼上说的对,但还存在另外两个问题,可以改进:
1.数组越界问题
2.int数据的范围,不足以满足可能输入的十六进制大数的转换要求!

★★★★★为人民服务★★★★★
2010-03-13 20:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-299310-1-1.html




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

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