程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 將數字字符串轉化為整數

將數字字符串轉化為整數

編輯:C++入門知識

題目描述:  若字符串str1為"-1234"                         則輸出整數-1234        

#include<stdio.h>  
#include<assert.h>  
  
int  string_to_number(char*  str)  
{     
    assert( str );  
    int sum = 0; //保存累加的結果  
    int i = 0;  
    int k = 1;  //每個位的權值,從個位開始  
    while(str[i]!='\0')  //統計字符串中字符個數  
    {         
  
            i++;  
    }  
    if(str[0] == '-')  //前面有"-"的情況  
    {  
     //掃描一遍看      
        for(int j =i-1; j > 0; j--)//因為前面有個負號,所以加權的范圍是1 ~ i-1  
        {     
            if(str[j] < '0'|| str[j] > '9') //中間如果有非數字字符,就終止  
            {  
                assert(0);  
            }  
            sum += (str[j]-'0')*k;  
            k =k * 10;    
        }  
        return (0 - sum); //將最後的結果取負,返回  
    }  
    else if(str[0] == '+' )//前面有"+"的情況  
    {     
        for(int j =i-1; j > 0; j--)  
        {     
            if(str[j] < '0'|| str[j] > '9')  
            {  
                assert(0);  
            }  
  
            sum += (str[j]-'0')*k;  
            k =k * 10;    
        }  
        return  sum;  
    }  
    else    //前面沒有"+","-"的情況  
    {     
        for(int j =i-1; j >= 0; j--)  
        {    
            if(str[j] < '0'|| str[j] > '9')  
            {  
                assert(0);  
            }  
  
            sum += (str[j]-'0')*k;  
            k =k * 10;    
        }  
        return  sum;  
  
    }  
}  
  
int main()  
{     
    //char s[] = "+12~3";  
    //char s[] = "+123";  
    //char s[] = "123";  
    char s[] = "-123";  
    int num = string_to_number(s);  
    printf("%d\n",num);  
    return 0 ;  
}  

 

    參考答案:    
#include <stdio.h>  
#include<malloc.h>  
#include<memory.h>  
#include<assert.h>  
  
int  string_to_number(char*  str)    
{    
   assert(str);  
   int i = 0;  
   while(str[i] != '\0')    //統計這個數字字符串的位數(不包括正負號),結果為i位  
   {     
       if( '-'==str[0] )  //繞過前面的正負號  
       {    
           i++;  
           continue;  
       }  
       if(str[i]<'0' || str[i]>'9' )  //防止非字符串str中出現非數字字符  
           assert(0);  
       i++;  
   }  
     
   int sum = 0; //作為存放整數結果的變量  
    
      
   int k = 1;  
   if( '-'==str[0] )    //負數的情況下  
   {  
     for(int j = i-1 ;j >0 ; j-- ) //將這個數字字符串重組,根據十進制數的原理  
     {     
       sum += k*(str[j]-'0');  
       k = k*10;  
     }  
     sum = 0 -sum;  
   }  
   else                         //正數的情況下  
   {  
       for(int j = i-1 ;j >=0 ; j-- ) //將這個數字字符串重組,根據十進制數的原理  
     {     
       sum += k*(str[j]-'0');  
       k = k*10;  
     }  
   }  
   
   return sum;  
  
  
      
           
      
}  
int main()  
{  
    char str[] ="1234";     
    printf("轉化前的數字字符串為%s\n",str);  
  
    int a = string_to_number(str); //a為字符串中第一個出現一次的字母在數組中的位置,0代表沒有這樣的字符   
      
  
      
    printf("轉化後的數字字符串為%d\n",a);   
      
    return 0;  
  
}   

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved