9年联发科技手机软件开发笔试题
一:编程题(每题20分,共40分)
编写两个函数,接口如下:第一个负责把一个ASCII字符串转换为一个带
1:
符号整数,第二个函数负责把一个带符号的整数转换为一个ASCII字符串。
(1)
int StrToInt (c*****t char* pStr);
解答:
#include <>
#include \
#include<>
int StrToInt (c*****t char* pStr)
{
int iResult = 0;
bool bMinus = false;
int itemp = 0;
int i = 0;
if(*(pStr+i) == '-')
{
bMinus = true;
i++;
}
do
{
itemp = *(pStr+i) - 0x30;
iResult = iResult*10+itemp;
i++;
}while(*(pStr+i) !='\\0');
if(bMinus == true)
iResult = 0-iResult;
return iResult;
}
int main()
{
char s[] = \
int iNum = StrToInt((char*)s);
printf(\
}
(2)
int IntToStr (int num, char* pStr);
已知条件:传递给IntToStr函数的缓冲区的长度是能够容纳int整数范围内的数; 传递给StrToInt的字符串只包含数字和‘-’(负号),是一个格式正确的整数值。
2:编程实现二分法搜索函数,该函数对一个排序好的整数数组进行二分搜索(binary Search),函数的原型如下:
Int BinarySearch(c*****t int* array, int lower, int upper, int target);
其中lower、upper分别是需要进行搜索的开始和结束的索引值,请分别使用递归和非递归两种方法实现该函数。
二:问答题(每题6分,10题,共60分)
1:下面这个程序执行后会有什么错误或者效果
#define MAX 255
int main(void)
{
unsigned char I;
unsigned char A[MAX];
for(i=0; i<=MAX; i++)
{
A = i; } Return 0;