首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

10年10月份科大讯飞笔试题

2012-03-31 
10年10月份科大讯飞笔试题-求助1,不调用任何库函数,将一个字符串类型数据转换成一个整形数据,如:String

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++;    }} 

热点排行