鱼C论坛

 找回密码
 立即注册
查看: 2567|回复: 2

C程序求教

[复制链接]
发表于 2013-12-10 23:01:36 | 显示全部楼层 |阅读模式
1鱼币
//Program 5.1.b
#include "stdafx.h"
#include "stdio.h"
int get_integer(char *);
int _tmain(int argc, _TCHAR* argv[])
{
        char c[20];
        printf("Enter a number: ");
        scanf("%s", c);
        printf("The number is %d.", get_integer(c));
        return 0;
}
int get_integer(char * c)
{
        int a = 0, i = 0, n = 0;
        char s[20];
        for (; *c!=0; c++)
        {
                if (*c>='0' && *c <='9')
                        s[n++] = *c;
        }
        for (; i < n; i++)
                a = a * 10 + (s[i] & 15);
        return a;
}
问题:
l 。How does the function get_integer get the argument from the call function? What does it return?

2. What is the expression (s[i] & 15) used for? Can you use another expression to replace it?




最佳答案

查看完整内容

get_integer () 这个函数实现的是 把数字字符串转换成 一个整数,并返回。 功能是把字符一个个提取出来,如果是'0'~'9'之间的,就保存到一个新的数组里面。 以便为转换成int类型做准备。 (s [ i ] & 15)是把一个'0'~'9'的字符转换成对应的0~9 例: '1'的二进制是 0011 0001 15的 二进制是 0000 1111 '1' 和15 做按位与的操作得 0000 0001 就是十进制的1 同样的 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-10 23:01:37 | 显示全部楼层

------------------------

本帖最后由 浮砂 于 2013-12-11 08:52 编辑

get_integer () 这个函数实现的是  把数字字符串转换成 一个整数,并返回。
功能是把字符一个个提取出来,如果是'0'~'9'之间的,就保存到一个新的数组里面。
以便为转换成int类型做准备。
(s [   i   ]  & 15)是把一个'0'~'9'的字符转换成对应的0~9
例:  '1'的二进制是                 0011 0001
         15的 二进制是               0000 1111
    '1' 和15 做按位与的操作得 0000 0001
    就是十进制的1

同样的  '8'的二进制是 0011 1000
            '1' 和15 做按位与的操作得 0000 100
PS:  按位与就是把相应的二进制位的数进行and 操作   仅有1 & 1 时为1
                                                                        其他的   0 &1  、 1 & 0 、0 & 0 都是0

( s [ i  ]  & 15)可以用(s - '0')代替。

例:  '1'的ASCII 码是 49
         '0'的 ASCII 码是 48
     '1'-'0'=49-48=1
同样的  '8'的ASCII码是56
            '8'-'0'=56-48= 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-11 11:45:55 | 显示全部楼层
谢谢啦:感谢这位大神的回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 02:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表