单片机常考笔试题(字符串与整数的转换问题),这个怎能不会?
时间:10-02
整理:3721RD
点击:
记得曾经参加过TCL的面试,记得有一道题目就是:把整数转换为字符串的问题。题目的要求是:要把详细的解题思路写清楚,当然是越详细越好。不过试卷没有要求代码要写得完美无缺,毕竟笔试不同于机试,能在电脑上面敲出来的不一定就能够手写出来。所以可以看出写代码的思路是有多重要,也就是指我们经常所说的程序流程图。
好了,看看今天的干货吧,要参加面试的快来看看。如果觉得不错的话,回帖鼓励一下。
一、整数转换为字符型函数
/**
* 函数功能:把一个任意的整数转换为字符串格式
* 函数参数:value: 要转换的整数 string:指向转换为字符串后的指针
* 返回值:字符长度
*/
int Inter_To_Str(int value,char *string)
{
int i=0,len=0,j=0;
int absolute=value>0?value:-value; //这个用于取绝对值
char str[20]=""; //定义一个数组保存转换的字符
if (string==(void*)0) //string如果指向一个空指针的话,直接返回
{
return -1;
}
while (absolute) {
str[i++]=absolute%10+'0'; //把每一位分离出来,并保存到刚定义的数组
//分离的每一位只要加上字符'0',进行类型的强制转换就可以。
absolute/=10;
}
len=i;
if (value<0) //如果是负数就加一个“-”号
{
len+=1;
for (j=i-1;j>=0;j--)
string[len-1-j]=str[j];
string[0]='-';
}
else{ //如果是整数的话,直接拷贝
for (j=i-1;j>=0;j--)
string[len-j-1]=str[j];
}
string[len]='\0'; //别忘了末尾加个字符'\0',字符串结束符
return len; //返回字符串长度
}
二、字符串转换为整数型函数
/**
* 函数功能:把一个字符串转换为整数格式
* 函数参数:str:指向要转换的字符串的指针
* 返回值:转换后的整数值
*/
int Str_To_Int(const char *str)
{
int num=0,dig=1;
if (str==(void*)0) //指针为空,则直接返回
{
return -1;
}
while (*str==' '){ //若有空格,直接过滤掉
str++;
}
if (*str=='+')
{
str++;
}
if (*str=='-') //有'-'字符,则表示为负数
{
str++;
dig*=-1;
}
while (*str!='\0')
{
num=num*10+(*str++-'0');
if (*str<'0'||*str>'9') //遇到不需要的字符,则跳出循环。有效字符在'0'--'9'之间。
{
break;
}
}
num*=dig;
return num;
}
好了,看看今天的干货吧,要参加面试的快来看看。如果觉得不错的话,回帖鼓励一下。
一、整数转换为字符型函数
/**
* 函数功能:把一个任意的整数转换为字符串格式
* 函数参数:value: 要转换的整数 string:指向转换为字符串后的指针
* 返回值:字符长度
*/
int Inter_To_Str(int value,char *string)
{
int i=0,len=0,j=0;
int absolute=value>0?value:-value; //这个用于取绝对值
char str[20]=""; //定义一个数组保存转换的字符
if (string==(void*)0) //string如果指向一个空指针的话,直接返回
{
return -1;
}
while (absolute) {
str[i++]=absolute%10+'0'; //把每一位分离出来,并保存到刚定义的数组
//分离的每一位只要加上字符'0',进行类型的强制转换就可以。
absolute/=10;
}
len=i;
if (value<0) //如果是负数就加一个“-”号
{
len+=1;
for (j=i-1;j>=0;j--)
string[len-1-j]=str[j];
string[0]='-';
}
else{ //如果是整数的话,直接拷贝
for (j=i-1;j>=0;j--)
string[len-j-1]=str[j];
}
string[len]='\0'; //别忘了末尾加个字符'\0',字符串结束符
return len; //返回字符串长度
}
二、字符串转换为整数型函数
/**
* 函数功能:把一个字符串转换为整数格式
* 函数参数:str:指向要转换的字符串的指针
* 返回值:转换后的整数值
*/
int Str_To_Int(const char *str)
{
int num=0,dig=1;
if (str==(void*)0) //指针为空,则直接返回
{
return -1;
}
while (*str==' '){ //若有空格,直接过滤掉
str++;
}
if (*str=='+')
{
str++;
}
if (*str=='-') //有'-'字符,则表示为负数
{
str++;
dig*=-1;
}
while (*str!='\0')
{
num=num*10+(*str++-'0');
if (*str<'0'||*str>'9') //遇到不需要的字符,则跳出循环。有效字符在'0'--'9'之间。
{
break;
}
}
num*=dig;
return num;
}
写的真好,有个良好的编程风格是个很大的优势啊 ~