10年10月份科大讯飞笔试题-求助
1,不调用任何库函数,将一个字符串类型数据转换成一个整形数据,如:String ="123456"->int i=123456(语言不限,本人用的JAVA)?
2,怎样优化一个多线程?
在线求高手解决。
[解决办法]
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两个数组,转换我不太明白,望高手解答
#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++; }}
[解决办法]
成功解决了这个问题
#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++; }}