日期:2014-05-20  浏览次数:20723 次

10年10月份科大讯飞笔试题-求助
1,不调用任何库函数,将一个字符串类型数据转换成一个整形数据,如:String ="123456"->int i=123456(语言不限,本人用的JAVA)?
2,怎样优化一个多线程?
在线求高手解决。

------解决方案--------------------
Java code

public class StrToInt {
    public int Change(String str) {
        if (str.length() <= 0) {
            return -1;
        }
        char ch = str.charAt(0);
        int tmp = 0;
        switch (ch) {
        case 48:
            tmp = 0;
            break;
        case 49:
            tmp = 1;
            break;
        case 50:
            tmp = 2;
            break;
        case 51:
            tmp = 3;
            break;
        case 52:
            tmp = 4;
            break;
        case 53:
            tmp = 5;
            break;
        case 54:
            tmp = 6;
            break;
        case 55:
            tmp = 7;
            break;
        case 56:
            tmp = 8;
            break;
        case 57:
            tmp = 9;
            break;
        default:
            return 0;
        }
        if (str.length() == 1) {
            return tmp;
        }
        String tmpStr = str.substring(1);
        if (str.charAt(0) == 45)
            return -(tmp * (int) Math.pow(10, tmpStr.length()) + Change(tmpStr));
        else
            return tmp * (int) Math.pow(10, tmpStr.length()) + Change(tmpStr);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StrToInt s = new StrToInt();
        System.out.println(s.Change("120345"));
    }
}

------解决方案--------------------
参考c atoi的代码,我用了char,与int两个数组,转换我不太明白,望高手解答
C/C++ code
#include <ctype.h>
#include <stdio.h>

int main()
{
int i;
int a[100]={0};

//char *s;
//gets(s);
char *s="12312";
atoi1(s,a);
for(i=0;i<strlen(s);i++)
    {
        printf("%d",a[i]);
    }
system("pause");
return 0;
}
void atoi1 (char *s,int a[])
{
int i=0;
while(s[i]!='\0')
    {
        a[i]=s[i]-'0';
        i++;
    }
}

------解决方案--------------------
成功解决了这个问题
C/C++ code
#include <ctype.h>
#include <stdio.h>

int main()
{
int i;
int a[100]={0};
char *s="12312";
int sum=0;
int ren=1;
atoi1(s,a);
for(i=0;i<strlen(s);i++)
    {
        printf("%d\n",a[i]);
    }
for(i=strlen(s)-1;i>=0;i--)
    {
        sum=sum+(a[i])*ren;
        ren=ren*10;
    }
printf("%d\n",sum);
system("pause");
return 0;
}
void atoi1 (char *s,int a[])
{
int i=0;
while(s[i]!='\0')
    {
        a[i]=s[i]-'0';
        i++;
    }
}