1. 程式人生 > >劍指offer:把一個支付算轉化為整數

劍指offer:把一個支付算轉化為整數

技術 字符串數組 單引號 blog spa opened int num clas

1:首先,根據課本上的程序,是這樣的:

技術分享
#include "stdafx.h"
#include "iostream"
using namespace std;
int StrToInt(char* string);

int StrToInt(char* string)
{
    int number=0;
    while(*string!=0)
    {
        number=number*10+*string-0;
        ++string;
    }
    return number;
}

int main(int argc, char* argv[])
{
    
char *a="123";//定義一個字符串 //while(*a!=0)//測試是不是字符串 //{ //cout<<*a<<endl; //++a; //} cout<<StrToInt(a)<<endl; return 0; }
View Code

2:然後對弈number=number*10+*string-‘0‘;提出疑問。number是整數,string是指向字符串的指針,*string就是字符串裏的字符,然後“字符-字符=?”。註意:C中的字符的算術運算。實際上是字符的ASCII代碼運算。因此,*string-‘0‘是其相應的ASCII代碼做減法。

3:將代碼改成鍵盤輸入,屏幕輸出的形式後,如下所示:

技術分享
#include "stdafx.h"
#include "iostream"
using namespace std;
int StrToInt(char* string);

int StrToInt(char* string)
{
    int number=0;
    while(*string!=0)
    {
        number=number*10+*string-0;
        ++string;
    }
    return number;
}

int main(int argc, char* argv[])
{
    
    
//char a=‘y‘;//單引號代表這個東西是字符,雙引號代表這個東西是字符串 //char *b=&a; //cout<<a<<endl;//輸出字符y //cout<<b<<endl;//輸出字符y的地址 char str1[20];//字符串數組的名就是字符串的第一個字符的地址 cin>>str1; //cout<<str1<<endl;//以字符串的形式輸出 cout<<StrToInt(str1)<<endl; return 0; }
View Code

4:考慮到非數字字符和正負號的時候,並將代碼改成輸入一段字符串,然後輸出整數。如下所示:

劍指offer:把一個支付算轉化為整數