字串轉換成整型,字串轉換整型

來源:互聯網
上載者:User

字串轉換成整型,字串轉換整型

題目:將字串轉換成整型,比如輸入“123”,輸出123。 


解題思路:

利用每一個0-9數字字元對應的Ascii減去48就得到了一個0-9的整型數字。用前i-1位表示的整型數字乘以10加上第i位表示的數字,就可以得到轉換成的整型了。注意字串第1個字元也可以是+或-。當字串第1個字元是-時,用前i-1位表示的整型數字乘以10減去第i位表示的數字,就可以得到轉換成的整型了。這樣的話,還可以適用前面的數字有0的情況。比如輸入“-0123”,輸出-123。另外還有一個需要注意的地方就是溢出:字串轉換成的整型不能超過整型可以表示數位範圍。 


int strToInt(char str[]){    int max = (1<<30)-1+(1<<30);//32位系統整型可以表示的最大數,之所以不直接用(1<<31)-1是因為在1<<31時整型溢出了,雖然只會報一個警告int min=(-1<<31);//32位系統整型可以表示的最小數int number=0;//number表示字串轉換成的整型,當無法轉換時,會提醒並返回0if(str==NULL)//字串為空白時{printf("該字串為空白,無法轉換成整型");return 0;}int n=0;while(str[n]!='\0')//遍曆看字串中是否有非法字元{if(n==0)//字串中第1個字元可以是0-9的數字或+或-{if((str[n]>=48&&str[n]<=57)||str[n]=='+'||str[n]=='-'){}else {printf("該字串無法轉換成整型");return 0;}}else //字串除第1個字元外,其他字元都必須是0-9{if(str[n]>57||str[n]<48){printf("該字串無法轉換成整型");return 0;}}n++;}if(str[0]=='\0')//字串為空白串時{printf("該字串為空白串,無法轉換成整型");return 0;}else if(str[0]=='+')//字串第一個字元是+時{int i=1;while(str[i]!='\0'){    //判斷所轉換成的整型數字是否會溢出if(number>max/10){printf("該字串轉換成整型會溢出,無法轉換成整型");return 0;}else if(number==max/10){if(str[i]-48>max%10){printf("該字串轉換成整型會溢出,無法轉換成整型");return 0;}}number=10*number+(str[i]-48);i++;}return number;}else if(str[0]=='-'){int i=1;while(str[i]!='\0'){    //判斷所轉換成的整型數字是否會溢出if(number<min/10){printf("該字串轉換成整型會溢出,無法轉換成整型");return 0;}else if(number==min/10){if(-(str[i]-48)<min%10){printf("該字串轉換成整型會溢出,無法轉換成整型");return 0;}}number=10*number-(str[i]-48);i++;}return number;}else{int i=0;while(str[i]!='\0'){    //判斷所轉換成的整型數字是否會溢出if(number>max/10){printf("該字串轉換成整型會溢出,無法轉換成整型");return 0;}else if(number==max/10){if(str[i]-48>max%10){printf("該字串轉換成整型會溢出,無法轉換成整型");return 0;}}number=10*number+(str[i]-48);i++;}return number;}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.