您的位置:首页 > 其它

华为机试题目

2016-01-12 21:32 309 查看
在网上找了一些华为机试的题目,每日坚持写代码。

1、字符、字符串与数值间的转换

分析:

int i = (ch-48); 这个语句完成了单个字符 ch 转化为数字并存入整型变量 i 的功能。因为字符 0 在 ASCII 码中对应了 48,后面的数值也是以 1 递增,所以用它对应的ASCII码减去48就是这单个字符的整数形式.如此,我们也可以反过来,实现将整型转换成字符:char ch = (i+48);字符串之间的转换,我们不能同时将一个字符串中的所有字符进行转换,不调用外部函数的话,我们只能利用上述这一特性把字符串一个一个的转换。

#include <stdio.h>
#include <string.h>

int StringInt(const char *str) // 将字符串转换为int类型并返回
{
int val = 0;
int index = ( strlen(str) - 1 ); // 取索引值
int pn = 1; // 表示是正数还是非正数, 正数表示为1, 非正数表示为0
int f = 1, i = 1; // 用于后面的循环
const char *pChar = str;

if ('-' == *pChar) { // 判断字符串第一个元素是否为负号
index--;
pn = 0;
*pChar++;
}

while (index >= 0)
{
f = 1;
for (i=1; i<=index; i++)
f *= 10;
val += ( (*pChar++) - 48 ) * f;
index--;
}
if (0 == pn)
val *= -1; // 转换为负数

return val;
}

int main(void)
{
printf("%d\n", StringInt("333"));
printf("%d\n", StringInt("0"));
printf("%d\n", StringInt("-0"));
printf("%d\n", StringInt("-321"));

return 0;
}                         /*参考输出结果:333  0   0   -321  */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  华为